访问DA14585_SDK_6.0.2.243的零地址没有错误

⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.xmece.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
2职位/ 0
最后发表
lucienkuang
离线
最后看到:4个月1周前
加入:2016-10-23 09:51
访问DA14585_SDK_6.0.2.243的零地址没有错误

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

/ /全局初始化
system_init ();

uint8 * pAddr =零;
* pAddr = 100;
arch_printf (“* pAddr: % d \ n * pAddr);

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

设备:
MT_dialog
离线
最后看到:3个月3周前
工作人员
加入:2015-06-08 34
嗨lucienkuang,

嗨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