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