您好!
当看门狗复位时,我正在尝试核心转储[SYSTEM DUMP]]。并在启动系统时加载转储数据。请给出任何提示、方法或示例代码谢谢你
你好,杰克汉,
当发生NMI时,SDK会将68x寄存器的快照保存在系统仅用于此目的的内存位置(对于NMI,状态基为0x7FC5600),这意味着,当系统重新启动时,该区域将填充寄存器值,这些值导致NMI供您读取、存储或处理所需的内容。因此,您不在开发模式下,希望将数据存储在闪存中,例如,您可以将这些数据从特定的内存位置推送到闪存中。
谢谢你的对话
你的意思是,我必须把寄存器设置如下?看门狗\u CTRL \u REG.NMI \u RST=0x00看门狗\u CTRL.WDOG \u VAL=0x00==我在DA14681-01_2v3.pdf中找到了描述[表657:寄存器映射WDOG]===
如果看门狗\u CTRL \u REG[NMI \u RST]=0,则如果WDOG_VAL=0->NMI(不可屏蔽中断)
===================================================================我还在项目中找到了商店代码。你是这么说的吗?
__保留代码void hw\u watchdog\u handle\u int(无符号长*异常参数){:如果(异常参数!=(空){*(volatile unsigned long*)(STATUS_BASE)=异常_args[0];//R0级*(volatile unsigned long*)(STATUS_BASE+0x04)=异常_args[1];//R1级*(volatile unsigned long*)(STATUS_BASE+0x08)=异常_args[2];//R2级*(volatile unsigned long*)(STATUS_BASE+0x0C)=异常_args[3];//R3级:*(volatile unsigned long*)(STATUS_BASE+0x30)=(*((volatile unsigned long*)(0xE000ED3C)));//AFSR公司*(volatile unsigned long*)(STATUS_BASE+0x34)=(*((volatile unsigned long*)(0xE000ED34));//马尔*(volatile unsigned long*)(STATUS_BASE+0x38)=(*((volatile unsigned long*)(0xE000ED38));//博法尔}
}
是的,这就是我所指的,你不必做任何明确的事情,如果你已经启用了看门狗使用dg\u configUSE\u WDOG,那么当看门狗发出一个中断和NMI执行然后处理程序,将保存ARM的状态将被存储在我提到的状态库。
谢谢你的回答。我要实现的是无外观启动。启动后,我想重新启动看门狗重置前的权利点。[发生看门狗时堆栈推送,重置后堆栈弹出。]有可能吗?
你所提到的可能是可能的,而且相当棘手(我不能给出具体的说明如何做,因为这样一个方案没有实现,也正如所提到的是相当棘手的,因为你将不得不保存除了ARM寄存器,主堆栈,每个任务的堆栈,以便在重新启动后重新应用,这些是我可以想到的一些事情)。但我看不出这样的原因。例如,假设设备在看门狗出现后命中NMI处理程序,这意味着代码被卡在特定的指令中,系统变得无响应(尝试访问外围设备,但没有响应,等等)。NMI点击,你保存ARM的状态,你假设RAM是正常的,因为它没有断电,启动时你重新应用ARM寄存器,设备将继续从它卡住的部分,另一个NMI将在几秒钟内发生。所以,我不认为有理由实现这样的东西,我的意思是它完全相同,如果你阻止重置从NMI由于看门狗和继续执行代码。
你好,杰克汉,
当发生NMI时,SDK会将68x寄存器的快照保存在系统仅用于此目的的内存位置(对于NMI,状态基为0x7FC5600),这意味着,当系统重新启动时,该区域将填充寄存器值,这些值导致NMI供您读取、存储或处理所需的内容。因此,您不在开发模式下,希望将数据存储在闪存中,例如,您可以将这些数据从特定的内存位置推送到闪存中。
谢谢你的对话
你的意思是,我必须把寄存器设置如下?
看门狗\u CTRL \u REG.NMI \u RST=0x00
看门狗\u CTRL.WDOG \u VAL=0x00
==我在DA14681-01_2v3.pdf中找到了描述[表657:寄存器映射WDOG]===
如果看门狗\u CTRL \u REG[NMI \u RST]=0,则
如果WDOG_VAL=0->NMI(不可屏蔽中断)
===================================================================
我还在项目中找到了商店代码。你是这么说的吗?
__保留代码void hw\u watchdog\u handle\u int(无符号长*异常参数)
{
:
如果(异常参数!=(空){
*(volatile unsigned long*)(STATUS_BASE)=异常_args[0];//R0级
*(volatile unsigned long*)(STATUS_BASE+0x04)=异常_args[1];//R1级
*(volatile unsigned long*)(STATUS_BASE+0x08)=异常_args[2];//R2级
*(volatile unsigned long*)(STATUS_BASE+0x0C)=异常_args[3];//R3级
:
*(volatile unsigned long*)(STATUS_BASE+0x30)=(*((volatile unsigned long*)(0xE000ED3C)));//AFSR公司
*(volatile unsigned long*)(STATUS_BASE+0x34)=(*((volatile unsigned long*)(0xE000ED34));//马尔
*(volatile unsigned long*)(STATUS_BASE+0x38)=(*((volatile unsigned long*)(0xE000ED38));//博法尔
}
}
你好,杰克汉,
是的,这就是我所指的,你不必做任何明确的事情,如果你已经启用了看门狗使用dg\u configUSE\u WDOG,那么当看门狗发出一个中断和NMI执行然后处理程序,将保存ARM的状态将被存储在我提到的状态库。
谢谢你的对话
谢谢你的回答。
我要实现的是无外观启动。
启动后,我想重新启动看门狗重置前的权利点。
[发生看门狗时堆栈推送,重置后堆栈弹出。]
有可能吗?
你好,杰克汉,
你所提到的可能是可能的,而且相当棘手(我不能给出具体的说明如何做,因为这样一个方案没有实现,也正如所提到的是相当棘手的,因为你将不得不保存除了ARM寄存器,主堆栈,每个任务的堆栈,以便在重新启动后重新应用,这些是我可以想到的一些事情)。但我看不出这样的原因。例如,假设设备在看门狗出现后命中NMI处理程序,这意味着代码被卡在特定的指令中,系统变得无响应(尝试访问外围设备,但没有响应,等等)。NMI点击,你保存ARM的状态,你假设RAM是正常的,因为它没有断电,启动时你重新应用ARM寄存器,设备将继续从它卡住的部分,另一个NMI将在几秒钟内发生。所以,我不认为有理由实现这样的东西,我的意思是它完全相同,如果你阻止重置从NMI由于看门狗和继续执行代码。
谢谢你的对话