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.

[参考译文] EK-TM4C1294XL:如何通过以太网下载应用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/588924/ek-tm4c1294xl-how-to-download-application-by-ethernet

器件型号:EK-TM4C1294XL
主题中讨论的其他器件: Energia

您好!

如果我 将 EK-TM4C1294XL 连接到我的家庭网络(通过以太网电缆)、是否有方法加载应用、而无需通过 USB 电缆将其连接到 PC?

例如、如果我已经使用 Energia IDE 编译了人们可以想象的最简单的项目(Blink 示例)、那么我应该按照哪些步骤使用以太网连接将应用程序加载到我的电路板?

谢谢

Simone

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

    我已尝试以下步骤:
    1)使用 LM 闪存编程器(在 ICDI 配置中)、我对 TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_emac_flash\ccs\Debug\文件夹中提供的"boot_emac_flash.bin"进行编程
    2)使用 Energia IDE 编译示例(例如 Blink 示例)并找到相关的 bin 文件
    3)借助 LM Flash Programmer (在以太网配置中、客户端 IP 地址/客户端 MAC 地址使用我的板的值配置)、我对应用程序 bin 文件进行编程

    但电路板上的 LED 不闪烁(即应用程序不运行)

    下面是步骤3的配置选项卡和程序选项卡)

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

    没人能帮助我?

    此致、

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    您的应用程序(闪烁程序)将在非零地址启动、而引导加载程序将从0x0开始。 这意味着、在 LM 闪存编程器的程序选项卡中、您需要指定与您的应用程序起始地址相匹配的程序偏移地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、
    感谢您的回复。 我不能完全理解你的意思。

    特别是:
    1) 1)如何/在何处验证示例应用的起始地址(在 Energia 端)?
    2) 2)当我通过 ICDI 对引导加载程序进行编程时、应该将"Program Address Offset"指定为0x0吗?
    (通过以太网对应用进行编程时、无法指定"程序地址偏移量")

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    我还在尝试使示例 boot_emac_flash 正常工作、但遇到了一些问题。 我不熟悉 Energia、但如果您查看典型的链接器命令文件、通常会看到分配给闪存开头的程序、即0x0。 由于您的引导加载程序已占用从0x0开始的闪存区域、因此您的应用程序将需要以不同的偏移开始。 通常、TivaWare 应用示例(即 boot_demo_emac_flash)将从0x4000开始。 这就是我说过的原因、在 LM 闪存编程器中、加载应用程序时、您需要指定0x4000作为偏移量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、但只是一个问题:如果我使用 Energia (或任何其他编译工具)将源代码编译为.bin 文件(而不是将代码下载到电路板)、链接器命令文件是否相关?

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

    您好、Simone、

     如果您使用 Energia 或其他编译工具、则链接命令仍然适用。 链接器命令文件指定如何在不同存储器之间分配代码。 下面是典型的 CCS 链接命令文件。

     顺便说一下、我仍在尝试使 boot_demo_emac_flash 正常工作。 由于某种原因、LM 闪存编程器卡在"正在尝试连接..." 出现"Program"消息。

    #define APP_BASE 0x00000000
    #define RAM_BASE 0x20000000
    
    //系统存储器映射*/
    
    存储
    器{
    /*存储在内部闪存中并从内部闪存执行的应用程序*/
    闪存(RX):origin = APP_BASE,length = 0x00100000
    /*应用程序使用内部 RAM 进行数据*/
    SRAM (rwx):origin = 0x20000000,length = 0x00040000
    }//
    
    内存
    
    中的段分配*/ SECTIONS
    {
    .intvecs:> app_base
    .text:> FLASH
    .const:> FLASH
    .cinit:>闪存
    .pinit:> FLASH
    init_array:> FLASH
    
    .vtable:> RAM_base
    .data :> SRAM
    .bss:> SRAM
    .sysmem:> SRAM
    .stack:> SRAM
    }
    
    __stack_top =__stack + 512; 

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

    您好 Charles。

    应用代码中的#define APP_BASE 似乎必须与链接器文件中的地址相同。  

    #define APP_BASE 0x0010000 
    这样、看起来一切都按预期运行。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    我尝试为应用程序显示一个非引导加载程序链接器文件。 对于具有引导加载程序的应用、该应用程序将从非零起始地址开始、对于如下 TivaWare 示例、通常从0x4000开始。 感谢您查看我之前的链接器示例是否令人困惑。

     

    #define APP_BASE 0x00004000
    #define RAM_BASE 0x20000000
    
    //系统存储器映射*/
    
    存储
    器{
    /*存储在内部闪存中并从内部闪存执行的应用程序*/
    闪存(RX):origin = app_BASE,length = 0x000fc000
    /*应用程序使用内部 RAM 进行数据*/
    SRAM (rwx):origin = 0x20000000,length = 0x00040000
    }//
    
    内存
    
    中的段分配*/ SECTIONS
    {
    .intvecs:> app_base
    .text:> FLASH
    .const:> FLASH
    .cinit:>闪存
    .pinit:> FLASH
    init_array:> FLASH
    
    .vtable:> RAM_base
    .data :> SRAM
    .bss:> SRAM
    .sysmem:> SRAM
    .stack:> SRAM
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    只是想让您知道、我让 BOOT_DEMO_EMAC_FLASH 正常工作。 下面是我使用的步骤。

    1.将 enet_io 示例编程到闪存中。
    2.运行程序并确保打开终端(您选择的 Putty 或 Hyperterminal 或 Tera)窗口。 它应通过 DHCP 获取 IP 地址。 记录此 IP 地址。 首先运行此示例的唯一原因是获取 IP 地址。
    3.在 ICDI 模式下打开 LM 闪存程序并加载底部加载程序 boot_EMAC_FLASH。
    4.返回到配置选项卡并选择以太网作为接口。
    5.输入从步骤2获取的 IP 地址和 Launchpad 板背面的 MAC 地址。
    6.转到程序选项卡并提供 boot_demo_emac_flash.bin
    7.点击"Program"并运行程序。 您将看到闪烁的 LED。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。

    不幸的是、现在我没有板。 我将在周五或周六试一下。

    同时、我还有一个问题:在通过以太网对演示应用程序进行首次编程后、您是否能够通过以太网执行第二次应用程序下载(相同的演示应用程序或其他应用程序)、而无需重新对引导加载程序进行编程? 此外、在本例中、是否需要按下电路板上的某个按钮?

    (在我的应用场景中、电路板很难访问、因此我希望能够将新应用完全远程下载到电路板上)

    感谢你的帮助

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    是的、演示应用程序(boot_demo_emac_flash.bin blinky 程序)将有额外的代码来侦听魔术包、告知正在发出固件升级请求、并且在接收到该数据包时、将控制权转移到引导加载程序以执行升级。 在 LM Flash 程序中、当您单击"Program"按钮时、它会发出魔术包。 魔术包包含6个字节的0xAA、后跟重复4次的目标 MAC 地址。 当应用程序接收到该魔术包时、它会将控制权转移给引导加载程序。 我无需按下板上的任何按钮。

    请参阅 boot_demo_emac_flash 示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢。
    因此、我假设我必须在我的特定应用程序中包含管理魔术包的函数。
    在任何情况下、我都会告诉您建议的步骤是否有效。
    然后、我将尝试在我的应用中集成特殊功能。 Energia IDE 可能不是此类应用的最佳方式、因为如果我很清楚、它只有一个链接器文件、而在 CCS 中、每个项目都有自己的链接器文件、可以通过修改来指定正确的起始地址。

    此致
    Simone
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    是的、您需要整合代码来检测/处理魔术包。 我建议您从 boot_demo_emac_flash 开始、看看它是如何完成的、然后您可以适应自己的应用。 正如我说过的、除了 Energia 创建另一个抽象来简化开发之外、我对它并不熟悉。 我倾向于认为每个项目可以有自己的链接器文件、但我不知道如何完成。 对于引导加载程序工程、我建议您使用 CCS IDE 环境、因为针对该环境创建了所有现成的示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Simone。
    您可能还需要在以下项目的链接中进行检查。
    e2e.ti.com/.../587260
    如果您有任何疑问、请在此处解决。 不过、这是一个很好的文档。 (我认为至少是这样;-)
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    我执行了7个步骤、但遗憾的是、我在尝试加载 boot_demo_emac_flash.bin 时被占用。 LM Flash Programmer 显示"Attempting to connect..." 程序下载失败。

     我应该从哪个文件夹中的"TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_emac_flash"和"TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\boot_demo_emac_flash"取 bin 文件?

    CCS

    ewarm

    GCC

    rvmdk?

    有什么区别吗?

    此致、

    Simone

    我将使用 LM Flash Programmer 1613。 在此阶段、我不使用 CCS 来修改/编译工程、我只需尝试加载 TivaWare_C_Series-2.1.4.178程序包中提供的二进制文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    如果您使用的是 CCS、则将从 CCS/Debug 文件夹下获取 bin 文件。

    运行 enet_io 示例时、是否成功返回了从 DHCP 服务器获取并显示在终端窗口中的 IP 地址? 您需要确保在尝试 boot_emac_flash 演示之前不要等待太长时间、因为网络中的其他用户可能会运行他们的应用程序以获取刚刚获得的 IP。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Charles、正如我说过的"在这个阶段、我不使用 CCS 来修改/编译工程、我只需尝试加载 TivaWare_C_Series-2.1.4.178程序包中提供的二进制文件。" 那么、我应该取哪个纸槽?

    是的、我可以在终端上看到 IP。

    此致

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    我理解您的说法。 当我运行演示时、我也没有在 CCS 中重新编译/修改任何内容。 我为 BOOT_EMAC_FLASH 和 BOOT_DEMO_EMAC_FLASH 使用了相应 Debug 文件夹中的现有二进制文件。 我首先在 ICDI 接口模式下加载 boot_EMAC_FLASH、然后在以太网接口模式下加载 boot_demo_EMAC_FLASH、两者都使用 LM 闪存编程器。 我甚至没有打开 CCS。

    我从昨天开始旅行。 我将在一分钟内驾驶、因此在稍后的时间之前无法对您作出响应。 由此给您带来的不便、我们深表歉意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、感谢你的帮助。

    我将路由器配置为始终向电路板释放相同的 IP 地址、因此我认为其他设备不应采用该 IP。

    此致

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否确认在下载 boot_emac_flash.bin (从 CCS 文件夹)时 CRC32是否也适用于您?

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

    我解决了我的问题。 刚刚从 Windows 防火墙例外中删除了 LM Flash 程序员、然后重新添加了它。 我在运行 Wireshark 时发现问题、并注意到如果 IP.dst 等于电路板的 IP 地址、则不存在数据包。

    感谢 Charles 的帮助。

    此致、

    Simone

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Simone、
    很高兴您的问题得到解决。