主题中讨论的其他器件:UNIFLASH、 EK-TM4C1294XL
我烧录了 boot_emac_flash、即以太网引导加载程序、然后使用 LM Flasher 烧录引导演示 EMAC、再使用 LM Flasher 烧录 LED 闪烁代码、但没有发生任何情况、尽管 LM Flasher 在使用以太网烧录代码时显示进度为什么代码不运行? 有人有任何想法吗?
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.
我烧录了 boot_emac_flash、即以太网引导加载程序、然后使用 LM Flasher 烧录引导演示 EMAC、再使用 LM Flasher 烧录 LED 闪烁代码、但没有发生任何情况、尽管 LM Flasher 在使用以太网烧录代码时显示进度为什么代码不运行? 有人有任何想法吗?
您好!
Unknown said:我已经烧录了 boot_emac_flash、即以太网引导加载程序、然后使用 LM Flasher 烧录引导演示 EMAC、接着
我想我看到了一些问题。
问题1:如果这是您在 LM 闪存编程器中执行的序列、那么您很可能会在加载 boot_demo_EMAC_flash 时擦除引导加载程序。 首次加载 BOOT_EMAC_FLASH 时、应该会运行、因为这与加载 hello 或闪烁等程序没有区别。 但是、当您加载 boot_demo_EMAC_flash 时、LM 闪存编程器将首先擦除整个闪存、然后再加载下一个程序。 为了避免该问题、您需要使用 Uniflash 工具来同时加载引导加载程序和应用程序。 请参见下方的。
问题2:我不确定您为什么要通过 JTAG 同时加载引导加载程序和应用程序。 如果这仅用于调试、则没有问题。 这些示例的实际用法是首先通过 JTAG 加载引导加载程序。 加载引导加载程序(BOOT_EMAC_FLASH)后、它将运行并设置以太网模块、然后通过以太网端口而不是 JTAG 端口下载应用程序示例(BOOT_DEMO_EMAC_FLASH)。 应用程序下载到闪存后、应用程序将运行并使 LED 闪烁。 应用程序还可以再次跳回引导加载程序、以便更新新的应用程序映像。
如果您要使用引导加载程序通过以太网下载应用固件、则需要执行以下步骤。
步骤1:运行 enet_lwip 或 enet_io 以获取 IP 地址。 在终端窗口中、您应该会看到打印出来的 IP 地址。 记录此地址。
步骤2:使用 CCS 通过 JTAG 接口加载 BOOT_EMAC_FLASH。 这是在0x0处加载的引导加载程序。
步骤3. 启动 LM Flash Programmer。 请参见下图。 提供您刚刚在步骤1中记录的 IP 地址、并输入 IP 地址以及 MAC 地址。 如果您使用的是 LaunchPad、则 MAC 地址显示在电路板背面的标签上。
您的 PC 将作为 TFTP 服务器以及 BootP 服务器、用于将程序映像传输到 MCU (客户端)。 您需要通知 BootP 服务器 MCU 的 IP 地址及其 MAC 地址。 这是 BootP 服务器的工作方式。 与 DHCP 服务器不同、MAC 地址及其关联的 IP 地址必须提前手动输入和已知、因为 BootP 本质上是静态的。 这就是我们在配置选项卡中输入它们的原因。 但是、我们不知道要输入哪个 IP 地址。 我们不能输入任何可能干扰网络中其他 IP 地址的任意地址。
这就是我们必须首先运行另一个以太网示例的原因、例如 enet_lwip。 enet_lwip 将发送 DHCP 请求。 获取 IP 地址后、我们将仅记录 IP 地址值以在 BOOT_EMAC_FLASH 中重复使用。 在我的镜像中、通过运行 enet_lwip 获取的 IP 地址显示为10.219.14.138。 请注意、您的地址将与我的地址不同。 我们可以使用此地址的原因是 DHCP IP 地址被租用了几个小时。 我们通过运行 enet_lwip 获取的地址会保留几个小时。
步骤4. 转到"Program"选项卡。 提供应用程序映像的路径、即 boot_demo_EMAC_flash.bin。 此 TvaWare 示例已链接到0x4000。 请勿更改它。 在未来、您可以随时随地更改。 但是、在您使示例正常工作之前、请勿更改任何内容。
步骤5. 如果步骤2中的 BOOT_EMAC_FLASH 在 CCS 中仍然停止、则可以立即运行它。
步骤6. 运行 boot_emac_flash 后、可以点击上面映像中的"Program"按钮。
步骤7. 假设一切都顺利进行了编程、并且 boot_demo_EMAC_flash 应用程序已进行编程、如果您要对其进行调试、则可以转到"Run"->"Load"->"Load Symbols"来加载符号。 该符号包含在 boot_demo_EMAC_flash.out 中。 请注意、这是.out 文件。 请加载符号、不要与加载程序相混淆。
我将建议您使用 Wireshark 来查看 MCU 和 TFTP/BOOTP 服务器之间的流量。 您应该看到以下内容。 MCU 将向 PC 发送 BOOTP 请求、并在握手之后、TFTP 服务器通过以太网接口将程序映像(boot_demo_emac_flash.bin)发送至 MCU。
在 CCS 中、查看存储器内容。 您是否看到0x0处的 BOOT_EMAC_FLASH 引导加载程序以及0x4000处的固件 BOOT_DEMO_EMAC_FLASH? 如果您在这些区域中看到所有0xF、则表示固件未进行编程。
如果运行 boot_demo_EMAC_flash 示例固件、如果在 LM 闪存编程器中再次点击"Program"按钮、则它会跳回引导加载程序以烧录另一个代码。
Pinoutest ()函数位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\drivers\pinout.c 文件中。 请确保在编译代码时使用的是正确的文件。 当你说它停止在 Pinoutput(),它实际上意味着什么? 此函数没有 while 循环。 它只是初始化 pinux 并退出。 它应该不会卡住。 如果它卡住、那是哪条线卡住?
我还尝试使用 Uniflash 加载 boot_emac_flash.bin 和 boot_demo_emac_flash.bin。 您是否确保 BOOT_demo_EMAC_FLASH 从0x4000开始。 请参见下方的。 成功加载两个程序后、我按板上的复位按钮、可以看到 LED 以1秒的速率闪烁。 我不能重复你的问题。 我建议您单步执行并找出卡住的确切部位? 确保加载 bin 文件后、您需要在 CCS 中加载符号以便进行调试。