我正在处理PIC24上的一个非独立项目,该项目需要一个引导加载程序,我想使用引导加载程序对其进行调试。我能够用引导加载器生成一个包含应用程序代码的.hex文件,并注册一个在编译后执行的自定义脚本。
如果我现在选择菜单中的“启动调试器主项目”,调试器通常执行摘要代码,甚至到达应用程序启动时,但不显示调试信息,因为它不包含在.hex文件中。但是如果我选择"Debug Main Project",调试器加载的是包含调试信息但不包含加载器代码的.elf文件,而不是制造的.hex文件。
有没有办法强制调试器从一个文件加载调试信息,并从另一个文件加载可执行代码?或者有没有办法在编译后的.elf文件中添加一节或者完全替换其中的代码?对于pic30和xc16都没有'objcopy‘实用程序,有类似的工具吗?
下面是一些有问题的图片:
发布于 2018-08-04 04:03:09
当两个十六进制文件与您描述的方法组合时,所有的符号调试信息都会丢失。
从MPLABX启动调试会话将下载组合的映像,但只为调试会话加载来自“活动”项目的符号信息。
一种解决办法是创建一个“特殊”项目,该项目同时构建引导加载程序和应用程序,因为一个十六进制文件将把所有符号信息放在一个名称空间中。
这往往很棘手,并且需要创建自定义链接器脚本文件。
https://stackoverflow.com/questions/51063053
复制相似问题