主题中讨论的其他器件: 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、
我使用了 LM 闪存编程器并验证闪存是否使用从0到0x4C1的闪烁 FW 进行编程。 同时传递 CRC 和二进制比较。
我读出了寄存器1和2。 它们分别为0x00B61A00和0x00538402。 我不知道这些值代表什么。
然后、我从 EK-TM4C1294XL 读取寄存器。 它们是0x00B61A00和0x002B5403。
寄存器#2的值不同。 这是正常的吗? DK-TM4C129X 的正确值是什么? 没关系吗?
谢谢
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、
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 -如果自我的"论坛离开"以来事情没有改变-您可以自己编辑您的主题的标题。 (返回到您的"打开帖子"-其中包含可编辑的"主题标题块"。)