访问零地址无错误DA14585_SDK_6.0.2.243

学到更多常见问题解答教程

2个帖子/ 0新
最后一篇
Lucienkuang.
离线
最后一次露面:4个月2天前
加入:2016-10-23 09:51
访问零地址无错误DA14585_SDK_6.0.2.243

嗨对话框:
当我提供客户现场硬件中断错误时,我发现了一个问题。
我写了一个测试程序如下(da14585_sdk_6.0.2.243):

//全球初始化
system_init();

uint8 * paddr = null;
* paddr = 100;
ARCH_PRINTF(“* PADDR:%d \ n”,* paddr);

运行结果放弃了100个印刷品。我使用零地址,不应该进入硬件故障中断,但不是

设备:
mt_dialog.
离线
最后一次露面:1个月1周前
员工
加入:2015-06-08 11:34
嗨Lucienkuang,

嗨Lucienkuang,

嗯,ARM没有限制您从包裹到内存的0x0的写作,那个操作触发了一个硬盘,通常在您这样做(写入地址为零)时,您损坏了中断向量表,这就是您获得的原因硬盘和通常触发硬盘驱动器,因为当ARM使用该表(例如,中断命中)时,值损坏,因此当您在地址0x0的写入时触发硬盘触发为什么。

580和585类似但不相同,在580中,如地址0x0被认为是Sysram的地址,如果它被重复到Sysram,则为0x20000000。默认情况下,从keil下载时,地址0x0未映射到sysram,但它指向ROM,因此当您尝试在580上写入0x0时,实际上您正在尝试在ROM上写入,因此导致总线错误在一个硬贪端。在585中,0x0地址通过keil重复在sysram中,因此当您在0x0写入值100时,您只需损坏初始堆栈指针,它不会在main()函数上有任何差异,因为此值仅在手臂的开始时使用一次。

谢谢mt_dialog.