0

我正在使用 PIC24 上的一个非独立项目,该项目需要引导加载程序,我想使用引导加载程序对其进行调试。我能够使用引导加载程序生成一个包含应用程序代码的 .hex 文件,注册一个在编译后执行的自定义脚本。

如果我现在在菜单中选择“Launch Debugger Main Project”,调试器正常执行摘要代码甚至到达应用程序启动,但不显示调试信息,因为它不包含在 .hex 文件中。但是如果我选择“调试主项目”,调试器正在加载包含调试信息但不包含加载程序代码的 .elf 文件,而不是制造的 .hex 文件。

有没有办法强制调试器从一个文件加载调试信息并从另一个文件加载可执行代码?或者有没有办法在编译的 .elf 文件中添加一个部分或完全替换其中的代码?pic30 和 xc16 都没有“objcopy”实用程序,是否有类似物?

这些是有问题的图片:

[1] https://s15.postimg.cc/59jynpikr/2018-06-27-0001.png

[2] https://s15.postimg.cc/kv1a7q7ej/2018-06-27-0002.png

[3] https://s15.postimg.cc/idpj0hid7/2018-06-27-0003.png

[4] https://s15.postimg.cc/8t5wdm0qz/2018-06-27-0004.png

[5] https://s15.postimg.cc/np4fl7rl7/2018-06-27-0005.png

[6] https://s15.postimg.cc/xz6ukgwwb/2018-06-27-0006.png

[7] https://s15.postimg.cc/bn91r35i3/2018-06-27-0007.png

4

1 回答 1

0

当两个 HEX 文件与您描述的方法组合时,所有符号调试信息都将丢失。

从 MPLABX 启动调试会话将下载组合映像,但仅为调试会话加载来自“活动”项目的符号信息。

一种解决方法是创建一个“特殊”项目,将引导加载程序和应用程序构建为一个 HEX 文件,将所有符号信息放在一个名称空间中。

这往往很棘手,需要创建自定义链接器脚本文件。

于 2018-08-03T20:03:09.213 回答