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.

[参考译文] DK-TM4C129X:引导至闪存失败

Guru**** 1744610 points
Other Parts Discussed in Thread: EK-TM4C123GXL, EK-TM4C1294XL, EK-TM4C129EXL, TIDM-TM4C129USBHS, TM4C129XNCZAD, TM4C1294NCPDT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/818460/dk-tm4c129x-fail-to-boot-to-flash

器件型号:DK-TM4C129X
主题中讨论的其他器件: EK-TM4C123GXLEK-TM4C1294XLEK-TM4C129EXLTM4C1294NCPDTTM4C129XNCZAD

我可以使用 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 文件。 然后、我使用下图中突出显示的图标将图片插入我的帖子中。

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bob、感谢您对此采取后续行动。

    我在 CS9中单击了 Debug,它在 main()的第一行暂停。 请在控制台窗口中查看打印输出、写入、然后擦除。 这是正常的吗?

    存储器窗口与您的窗口相同。

    太奇怪了。 谢谢

    Phil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、所有内容都是正确的。 我假设您通过"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

    e2e.ti.com/.../register.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    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 -如果自我的"论坛离开"以来事情没有改变-您可以自己编辑您的主题的标题。   (返回到您的"打开帖子"-其中包含可编辑的"主题标题块"。)