Xilinx软件开发:如何通过软件复位MPSOC

本文详细介绍了MPSOC系列中复位机制的独特之处,通过CRL_APB寄存器实现软件复位的过程,并展示了如何使用示例代码操作。着重讲解了getResetReason函数的作用,以及在不同复位情况下的识别。

mpsoc系列的复位与zynq 7000系列不太一样,7000是通过slcr寄存器来实现软件复位,MPSOC是通过CRL_APB

实际复位代码如下

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"


#define MPSOC_RESET_REASON_REG 0xFF5E0220  //16bit

#define MPSOC_RESET_CTRL_REG   0xFF5E0218 //寄存器RESET_CTRL
#define MPSOC_RESET_VALUE      0x10      //复位bit4 (Width=8)

void PsSoftwareReset(void)
{
    Xil_Out8(MPSOC_RESET_CTRL_REG, MPSOC_RESET_VALUE);  //复位
}

void getResetReason(void)
{
	int status;

	status = Xil_In16(MPSOC_RESET_REASON_REG);
	xil_printf("\n\rResetReason = 0x%.8X\n\r", status);
	if(status & 0x40)
		xil_printf("6 Software Debugger Reset\n\r");
	if(status & 0x20)
			xil_printf("5 Software System Reset\n\r");
	if(status & 0x10)
			xil_printf("4 External System Reset\n\r");
	if(status & 0x08)
			xil_printf("3 PS-only Reset\n\r");
	if(status & 0x04)
			xil_printf("2 Internal System Reset\n\r");
	if(status & 0x02)
			xil_printf("1 A sys
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值