【背景】
本地编译Zephyr 使用的arm-gcc的编译工具,因本地没有配置基于Zephyr 的调试环境,但本地有基于MCXN947 的IAR 开发环境,就在想是否可以使用IAR 来调试arm-gcc 编译出来的elf文件,因为本地编译的elf 文件是带有调试信息的,理论上是可以进行调试的,带着个这个想法本地尝试使用IAR 来调试该文件,可以临时解决调试需求。
【IAR下载Zephyr镜像】
找个MCXN947配置了core0 的IAR工程,为了方便后续操作,我们将工程输出的文件名称 修改为zephyr.elf,后续将编译的文件直接替换即可。
将编译的镜像替换到IAR编译目录下,使用iar 选择要下载的.elf文件即可下载对应的镜像
【IAR调试Zephyr镜像】
将镜像通过IAR 下载后,通过IAR 的project 选项attach 到目标板子
attach 到板子后从以下的debug log 信息可知道没对应的debug信息已经呗IAR加载,加载后IAR就已经知晓了代码和对应C文件的关系。
attach 后程序已经运行了段时间,需要reset 调试的话可以reset 操作,我们在main 函数处下断点,reset 后程序已经在main 函数入口停下。
对于一些全局变量的查看也是可以使用IAR 的数据观察点来查看,相对还是比较方便
至此我们就可以借助IAR来调试 arm-gcc 编译的Zephyr 程序,该方法同理也是试用其他场景编译的镜像无法调试,但本地有IAR调试环境的场合来使用。