How to determine the reset reason?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

How to determine the reset reason?

跳至解决方案
2,377 次查看
ufechner
Contributor I

Hello,

How can I determine the reset reason of an i.mx6 dual processor using a custom hardware?

I found the following code in uboot:

static char *get_reset_cause(void)
{
	u32 cause;
	struct src *src_regs = (struct src *)SRC_BASE_ADDR;

	cause = readl(&src_regs->srsr);
	reset_cause = cause;

	switch (cause) {
	case 0x00001:
	case 0x00011:
		return "POR";
	case 0x00004:
		return "CSU";
	case 0x00008:
		return "IPP USER";
	case 0x00010:
		return "WDOG";
	case 0x00020:
		return "JTAG HIGH-Z";
	case 0x00040:
		return "JTAG SW";
	case 0x00080:
		return "WDOG3";
	case 0x00100:
		return "TEMPSENSE";
	case 0x10000:
		return "WARM BOOT";
	default:
		return "unknown reset";
	}
}

But which register is accessed? Is this register documented in any data sheet? Is it accessible also from Linux? What is the meaning of "CSU", "IPP_USER", "JTAG HIGH-Z", "JTAG SW" and "WDOG3"?

 

标签 (1)
0 项奖励
回复
1 解答
2,369 次查看
albe_merciai
Contributor I
Address: 20D_8000h base + 8h offset = 20D_8008h
 
 
pag: 5039 - 5040 60.7.3 SRC Reset Status Register (SRC_SRSR)

在原帖中查看解决方案

1 回复
2,370 次查看
albe_merciai
Contributor I
Address: 20D_8000h base + 8h offset = 20D_8008h
 
 
pag: 5039 - 5040 60.7.3 SRC Reset Status Register (SRC_SRSR)