棋子 · 2019年12月16日

如何检查由不同的ARM编译器创建的映像(特别是CLANG 6.13.1和6.12)

你好

我有一个奇怪的问题,在我的引导加载项目中,如果使用ARM Compiler 6.12进行编译,则可以工作,但是如果使用6.13.1进行编译,则不会。

固件的功能非常简单:启动时,它将检查(易失)存储器位置中是否有新的固件,如果找到,它将计算其内容的CRC并与写入的CRC进行比较。如果它们匹配,它将固件写入非易失性位置,并将MSP设置为主固件开始的位置。

引导加载程序FW可以运行,但是它以某种方式更改了一块内存,而该内存并未被用6.12编译的映像所触及,即使我在分散文件中将该区域专门标记为EMPTY,并且用于读取该内存的指针是一个CONST指针。我已确保内存不会被主固件更改。

我已经阅读了6.13的发行说明,似乎没有什么适合我的问题。

我试图比较来自两个AXF的反汇编文件列表,但是被差异数量所淹没。有什么快速的方法可以发现差异?

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2019年12月16日

调试此问题的最常见方法是在该地址上设置调试监视点,以便只要该地址发生写(SToRe),代码就会停止。

您正在使用哪些调试工具?如果是Arm DS或MDK,我可以为您提供帮助。

你的回答
关注数
1
收藏数
0
浏览数
1964
极术小姐姐
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息