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

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
lucienkuang
离线
最后看到:4个月5天前
加入: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
离线
最后看到:三个月两个星期前
工作人员
加入:2015-06-08 34
嗨lucienkuang,

嗨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