工具/软件:Code Composer Studio
调试 TivaWare 工程 BOOT_EMAC_FLASH 时遇到问题。 该项目应通过以太网下载新的固件映像。
断点最初不起作用、我无法单步执行汇编代码。 这两个问题加在一起、我无法看到任何初始设置代码。 优化关闭时代码无法正常运行。 我认为问题是由从 SRAM 运行代码的芯片引起的。
首次加载代码时、无法设置 C 文件的断点。 禁用和启用断点将使其在代码允许运行后生效。 我还看到、如果芯片被暂停和恢复、断点会发生变化、但结果是间歇性的。 我知道处理器将在 BL_EMAC.c 的第1776行达到 while (1)循环 我在此环路中设置了一个断点。 暂停芯片显示它在这个环路内。 我可以单步执行断点。 在我恢复运行后,芯片可能会开始到达断点。 如果我暂停、禁用并重新启用断点、它将中断。 为此、我取消选中"Breakpoints"窗口中的复选框。 注意要重新创建此问题,需要将开发套件插入交换机。 之前的等待会查找网络连接。 在达到 BL_EMAC.c 的第1776行之前
BL_STARTUP_CCS.s 的第257行不适用于单步执行或单步执行命令。 这些命令中的任何一个看起来都类似于命令"resume running (恢复运行)"。 ProcessorInit 位于 BL_STARTUP_CCS.s 的第190行 我可以在标签"ProcessorInit "之后设置一个断点、它将停止、但如果未设置断点、该进程的运行方式将与单击"RESUME Running"的运行方式类似。
在优化关闭的情况下、芯片不会转到复位矢量指定的函数。 我可以在存储器浏览器中看到复位矢量被设置为0x16D5、反汇编代码在 0x2000016D4处显示 ResetISR()、但这一点不会被第一步击中。 我认为 PC 通过错误(
在上进行优化后, ResetISR() 会被第一步执行,并对复位矢量为0x0DC9时和 ResetISR()在0x20000DC8时进行优化
反汇编窗口始终显示某些0x2000XXXX 地址处的处理器、这就是我认为安装代码使芯片从 SRAM 运行的原因。
我从 TivaWare_C_Series 2.1.4.178导入工程。 我按照 CCS 警告将编译器从 TI v5.2.6更改为 TI v18.1.LTS。 CCS 为 AT 版本 8.0.0.00016。目标硬件是 EK-TM1294XL。 连接是 ICDI。