主题中讨论的其他器件: EK-TM4C123GXL、 EK-TM4C1294XL、 EK-TM4C129EXL、 TM4C1294NCPDT、 TM4C129XNCZAD
我可以使用 CC9调试和运行 Blinky Fine 等示例项目。 如何将固件永久编程到电路板 DK-TM4C129X? 当我使用 CC9加载固件时、它在复位或重启后不运行。
我还尝试使用 LM 闪存编程器在地址偏移0处对 Blinky.bin 进行编程。 同样的问题、重启电源后什么也不运行。
请帮助。
Phil
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我可以使用 CC9调试和运行 Blinky Fine 等示例项目。 如何将固件永久编程到电路板 DK-TM4C129X? 当我使用 CC9加载固件时、它在复位或重启后不运行。
我还尝试使用 LM 闪存编程器在地址偏移0处对 Blinky.bin 进行编程。 同样的问题、重启电源后什么也不运行。
请帮助。
Phil
是的、正常操作是 CCS 将代码编程到闪存中、并在通电时在没有调试器的情况下运行。 我不知道为什么它不适合您。 我使用了 CCS v9.0.1并从"C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\blinky"导入了工程。 我将其重命名为 DK-blinky、以避免与 EK-TM4C123GXL 板的 blinky 版本发生冲突。 我将 USB 电缆连接到调试端口、并能够使用 CCS9进行编程和运行。 然后、我断开了 USB 电缆(断开了电路板的电源)并退出 CCS。 当我将 USB 电缆插回电路板的调试端口时、绿色 LED 在不启动 CCS 的情况下再次开始闪烁。 我已附加项目的.zip 文件。 您可以使用 CCS 的"file"->"import"函数将该项目复制到您的工作区中。
/cfs-file/__key/communityserver-discussions-components-files/908/DK_2D00_blinky.zip
尊敬的 Bob:
感谢您的快速响应。 我导入了您的项目并将 SW_ROOT 更改为指向我的文件夹。 编译并单击 DK-TM4C129X 板上的 Run-Load DK-Blinky.out。 绿色 LED 闪烁。 退出 CS9,然后拔下 USB 电缆。 重新插入电缆、未运行。 我还注意到、当我按下复位按钮时、绿色 LED 停止闪烁。
您是否使用相同的开发板? 我的板的引导加载程序似乎无法正常工作。 如何恢复并使该板再次工作? 所有这些时间、我都只是使用 CS9来运行和调试。
请帮助。
谢谢
朱菲尔
这是我使用的 DK-TM4C129x 电路板。
我提供的项目只能从闪存中运行。 您是否通过右上角的调试器 USB 连接为电路板供电、如图所示?
您指的是哪种引导加载程序? DK-TM4C129电路板有一个板载 JTAG 控制器。 这是您连接到调试器 USB 端口时连接到的设备。 您不需要引导加载程序。
当 TM4C129器件为空时、它将从 ROM 中执行引导加载程序。 该引导加载程序会检查 UART0或 USB OTG 端口的命令。 将代码编程到 TM4C129后、将绕过该引导加载程序。
Bob、
是的、我通过调试器端口(J4)像您图片一样连接了电路板。 在按下"休息"按钮或重启电源后、代码不会运行。 请向我解释 TM4C129是如何在电源打开或复位被置位时启动的。 Blinky 固件编程在哪里?
我无法理解的是、为什么代码在我使用 CS9运行时会运行、而不是单独运行。
顺便说一下、我在 EK-TM4C1294XL 上运行了 EK 版本闪烁、它可以通过 CS9运行、也可以在加电或复位时运行。
我还可以在 DK-TM4C129X 上检查其他什么?
再次感谢。
朱菲尔
Bob、
我注意到的另一点是、在我循环通电或按下 RESET 并将 USB 电缆插入 OTG 端口后、PC 会看到一个器件- Stellaris 器件固件升级。 不确定这是否正常、EK-TM4C1294没有这种情况。
到目前 为止、我在该板上运行了3个项目:USB_bulk_dev、TIDM_tm4c129cusbhs2ethernet 和 blinky。 其中的任何一个能够打破某种程度的东西吗? LM_Flash_programmed 可以中断任何内容吗?
是否可以从 TI 获得更换电路板?
谢谢
朱菲尔
如果 TM4C129器件为空、插入 OTG 端口时看到"Stellaris 器件固件升级"是正常的。 这表示引导加载程序正在该空白器件上运行。 将这些项目编程到 TM4C129不应导致问题。 但是、如果您在连接到调试 USB 端口并选择"USB DFU"时使用了 LM_Flash_Programmer、则可能会意外覆盖 JTAG 扫描控制器的固件。 要检查此情况、请连接调试 USB 端口并验证您是否可以在器件管理器中看到"Stellaris 内电路调试接口"。
遗憾的是、我认为这些开发板已停产。 仅 EK-TM4C1294XL 和 EK-TM4C129EXL 电路板可用。
Bob、
就像图片一样、Stellaris 内电路调试接口就在这里。
为什么它 在 CS9中运行、而不是从闪存中运行?
BTW、如何将图片附加到邮件中?
谢谢。
朱菲尔
Bob、
我使用了 LM 闪存编程器并验证闪存是否使用从0到0x4C1的闪烁 FW 进行编程。 同时传递 CRC 和二进制比较。
我读出了寄存器1和2。 它们分别为0x00B61A00和0x00538402。 我不知道这些值代表什么。
然后、我从 EK-TM4C1294XL 读取寄存器。 它们是0x00B61A00和0x002B5403。
寄存器#2的值不同。 这是正常的吗? DK-TM4C129X 的正确值是什么? 没关系吗?
谢谢
Phil
Bob、
我相信那些寄存器#1和2是 MAC 地址。
在 LM 闪存编程器中、有调试端口解锁实用程序。 有什么用吗?
同样、闪存具有固件代码、电路板无法启动。 它认为电路板是空白的。
谢谢
Phil
是的、用户寄存器1和2用于存储 MAC 地址。
调试端口解锁可能不起作用、因为它看起来没有您的调试端口被锁定。 我一直在努力弄清楚您在连接 CCS9的情况下如何执行闪烁、但在您点击"Reset"时不是这样。 请检查堆栈指针和复位矢量是否编程到前两个闪存位置。 连接到器件后、请执行"View"->"Memory Browser"。 然后将内存浏览器中的地址设置为0。 存储器中的第一个字应该是栈顶的地址。 第二个字应该是第一条指令的地址+ 1。 在我的示例中、它如下所示:
我使用 Windows 10中的"修边工具"创建插入这些帖子中的图像、然后将图像另存为.PNG 文件。 然后、我使用下图中突出显示的图标将图片插入我的帖子中。
是的、所有内容都是正确的。 我假设您通过"Run"->"Resume"或单击小的绿色箭头/三角形来运行代码、绿色 LED 将闪烁。 如果是这种情况、您能否通过单击下面显示的小连接图标或选择"Run"->"Disconnect Target"从逻辑上断开调试器(但不断开 USB)。 绿色 LED 应闪烁。
此时、USB 电缆仅为器件供电。 您应该能够按下 DJ-TM4C129x 电路板上的 RESET 按钮、并且 LED 将在保持 RESET 时停止、并在释放 RESET 时再次闪烁。 您应该能够断开 USB 电缆的连接、并且电路板将断电。 (所有这一切都是在 CCS9打开时完成的、但未"逻辑连接"到器件。) 您将 USB 电缆插回 Debug USB 端口、电路板应加电、LED 将再次开始闪烁。 单击小连接图标(以将调试器逻辑上重新连接到电路板)、代码执行(LED 闪烁)应停止。
Bob、
我将查看寄存器。 FLASH_BOOTCFG 为 0x7FFF5CFE、但对于 EK-TM4C1294XL 来说、它是0xFFFFFFFE。 应该是什么? 我还附加了一个包含寄存器值的文本文件。
谢谢
Phil
Phil、
就是这样。 有人对该 DK 的引导配置寄存器进行了编程、以强制它在 GPIO PC7为低电平时从复位状态运行引导加载程序。 该寄存器在数据表的第708页解码。 您可以在该引脚上放置一个上拉电阻器、然后它应从复位状态正确运行代码。 或者、您可以运行"调试端口解锁"过程来将 FLASH_BOOTCFG 寄存器恢复为其默认状态0xFFFFFFFF。 如果这样做、请在用户寄存器1和2中记下 MAC 地址、因为它们也会被擦除。
Bob、
我在调试中运行了它、然后断开连接、当我按下复位时、它停止闪烁。 已断开连接且已重新连接 USB、无闪烁。 已连接调试器、并且运行、不闪烁。 无法在调试器中中断。
谢谢
Phil
Bob、
好的。 我将在图尔进行测试 希望我不会再麻烦你了。
每当我给它通电时、DK 电路板运行天气应用程序就没有问题。 只是想知道该寄存器是如何更改的。 我可以在 CC9中错误地更改它吗? 我不知道如何操作。 可以在 CS 项目中将该寄存器设置为某个值吗?
谢谢
Phil
我不认为您意外更改了值。 我认为其他人更有可能对该寄存器进行了编程(除非这是其他人未使用的新 DK)。 当 GPIO PC7引脚保持悬空时、它可能读取高电平或读取低电平。 这更有可能是复位有时起作用、但其他复位则不起作用的原因。
Bob、
DK 电路板是全新的、我是唯一使用它的板。 好消息是、我能够恢复 FLASH_BOOTCFG 寄存器并将其设置为其默认值0xFFFFFFFE。 我阅读了数据表、无法通过 JTAG 手动对寄存器进行编程。 好的一点是、TI 提供了 LM 闪存编程器软件、我用于执行调试端口解锁和重新编程 MAC Addr。 我运行 CS9并验证 FLASH_BOOTCFG 为0xFFFFFFFE。 我运行了 Blinky 和 USB_BULK_DEV 项目。 在下电上电或复位时、我的 DK 电路板将引导至闪存并按预期运行应用。
阅读数据表后、我认为我的闪烁和 USB_BULK_DEV 代码无法写入 FLASH_BOOTCFG 寄存器。 然后、我从 TI 参考设计链接中运行了项目 TIDM_tm4c129cusbhs2ethernet、即 DK 电路板上的 www.ti.com/.../TIDM-TM4C129USBHS。 我无法对其进行调试、CS9只是有点锁定。 我在调试中运行了 blinky、并检查 了 FLASH_BOOTCFG 寄存 器、该寄存器被设置回0x7FFF5CFE。 好的、这很好、因为我可以重现此问题。 项目 TIDM_tm4c129cusbhs2ethernet 设置为 TM4C1294NCPDT、而我的 blinky 项目设置为 TM4C129XNCZAD。 尽管存储器映射是相同的、但它们使用不同的软件包。 我假设引脚分配不同。
那么、这是我的问题吗、我应该永远不会在 DK-TM4C129X 板上运行 TIDM_tm4c129cusbhs2ethernet 项目? 我认为我的 DK 板由于不同的引脚分配而损坏。 如果不是、 TIDM_tm4c129cusbhs2ethernet 工程中是否有一些可以更改 FLASH_BOOTCFG 寄存器的设置?
谢谢
Phil
好的、这对我来说是很好的。 该项目在执行时对 BOOT_CFG 寄存器进行编程。 它被设计成在端口引脚 PC7上具有上拉电阻器并带有接地按钮开关的硬件上运行。 代码位于 TIDM_tm4c129cusbhs2ethernet.c 的445-460行中:
// //检查是否配置了引导模式引脚。 如果没有、则配置和 //提交相同的内容。 下一个循环通电应使其永久化。 。 //如果在上电或复位期间按下 S2,将导致 //设计以调用 ROM 引导加载程序 // ui32User0 = HWREG (FLASH_BOOTCFG); if (((ui32User0和 flash_BOOTCFG_NW)=FLASH_BOOTCFG_NW) { ui32User0 = HWREG (FLASH_BOOTCFG); ui32User0 &= 0x7FFF00FE; ui32User0 |=(FLASH_BOOTCFG_PORT_C | FLASH_BOOTCFG_PIN_7); HWREG (FLASH_FMD)= ui32User0; HWREG (FLASH_FMA)= 0x75100000; HWREG (FLASH_FMC)=(FLASH_FMC_WRKEY | FLASH_FMC_COMT); }
该 TI 参考设计的用户指南第11页:
Bob、
感谢 PIN 指向我的问题的根本原因。 我重点讨论了 USB ULPI 高速问题、但没有注意这些引导选项。
我使用了 LM 闪存编程器、虽然它尝试了两次恢复、但我的 DK 电路板恢复正常、它会引导至闪存中的应用程序。 现在、我要返回使该 DK-TM4C129X 与 USB2.0高速配合使用。 我将发布我所面临的问题。 我真的希望 TI 在该板上构建 USB2.0 PHY。
是否可以将此线程的标题更改为"无法引导至闪存"
非常感谢您的所有帮助。
朱菲尔
[引用 user="Phil Chu"]并且没有注意这些引导选项。
真的——还有谁呢—— 很少有人会"预期/预期您的困境"。
"你和 Bob 系统地前进"、然后被"警告"、这一事实为这里(如此多)提供了一个很好的教训!
这条线程用作"真正的教学时刻"、它实际上是"由你两个人构建的!" (而不是影响深远(过去)的戈夫 t -声称、"他们做到了!")
BTW -如果自我的"论坛离开"以来事情没有改变-您可以自己编辑您的主题的标题。 (返回到您的"打开帖子"-其中包含可编辑的"主题标题块"。)