嗨对话框:当我给规范客户现场硬件中断的错误,我发现一个问题。我写了一个测试程序如下(DA14585_SDK_6.0.2.243):
/ /全局初始化system_init ();
uint8 * pAddr =零;* pAddr = 100;arch_printf (“* pAddr: % d \ n * pAddr);。运行结果为100印。我使用了零地址,不应该进入硬件故障中断,但不是
嗨lucienkuang,
手臂不限制你从写作到内存的地址0 x0, hardfault不是触发行动,通常当你(写地址0)你腐败中断矢量表,这就是为什么你通常得到hardfault和触发hardfault因为当其时间部门使用该表(例如一个中断打击)的值是损坏的,所以这就是为什么hardfault是你写地址0 x0时触发。
580和585相似但不相同的,在580年作为地址0 x0被认为是sysram这的地址是0 x20000000 sysram如果重新映射。默认情况下,当下载从地址0 x0不是凯尔映射SYSRAM但它指向罗,所以当你试图写0 x0实际上在580你正试图写罗,结果在一个总线错误因此Hardfault。在585 0 x0地址重新映射在sysram通过凯尔,所以当你写100 0 x0值你腐败的初始堆栈指针,它不产生任何影响的主要()函数,因为这个值是只使用一次的开始的手臂。
由于MT_dialog
嗨lucienkuang,
手臂不限制你从写作到内存的地址0 x0, hardfault不是触发行动,通常当你(写地址0)你腐败中断矢量表,这就是为什么你通常得到hardfault和触发hardfault因为当其时间部门使用该表(例如一个中断打击)的值是损坏的,所以这就是为什么hardfault是你写地址0 x0时触发。
580和585相似但不相同的,在580年作为地址0 x0被认为是sysram这的地址是0 x20000000 sysram如果重新映射。默认情况下,当下载从地址0 x0不是凯尔映射SYSRAM但它指向罗,所以当你试图写0 x0实际上在580你正试图写罗,结果在一个总线错误因此Hardfault。在585 0 x0地址重新映射在sysram通过凯尔,所以当你写100 0 x0值你腐败的初始堆栈指针,它不产生任何影响的主要()函数,因为这个值是只使用一次的开始的手臂。
由于MT_dialog