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.

[参考译文] TMS570LC4357:以太网软件加载程序

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1122335/tms570lc4357-software-loader-over-ethernet

器件型号:TMS570LC4357

我想通过以太网加载新固件、以便在下次启动时它将有效。 我知道 LC4357从闪存中运行指令、是否有办法实现这一点?

注:我无法在 RAM 上存储二进制映像并进行交换、因为二进制映像大于512KB (最大可用 RAM)

提前感谢。

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

    您好、Alperen、

    请在以下位置找到以太网引导加载程序:

    https://git.ti.com/cgit/hercules_examples/hercules_examples/tree/Application/Hercules_Ethernet_Bootloader

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

    您好、感谢您的回复、但此应用程序会强制在启动后立即执行软件加载过程。 我想用一个系统、这样用户就可以加载一个新软件了。 如果他决定这样做,他应该能够随时这样做。 此外、在加载新软件后、操作的执行应该继续正常(直到重新启动)。 我如何在这种从闪存执行指令的架构中实现这种机制?

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

    您好!

    该示例提供了强制应用程序更新的选项

    MCU 复位后、启动代码会将引导加载程序的闪存 API 从闪存复制到 SRAM、并从闪存执行引导加载程序。

    首先,它通过调用 CheckGPIOForceUpdate()来检查 GPIO_A7引脚。 如果 GPIO-A7被拉低(HDK 上的 S1按钮)、引导加载程序被强制更新应用。 可以通过 bl_config.h 头文件中的 ENABLE_UPDATE_CHECK 启用 GPIO 引脚检查、bl_config.h 还定义了用于更新检查的 GIO 引脚和极性。

    然后、它将检查应用程序地址处的值。 如果该地址的值与引导加载程序中定义的魔术字(例如0x5a5a5a)不匹配,则会强制应用程序更新。

    //检查是否需要更新,以下条件仅适用于 HDK
    #IF 定义(HDK)
    if (0 = CheckGPIOForceUpdate()&&(*(uint32_t *) app_status_address)= 0x5A5A5A5A5A)

       G_ulTransferAddress =(uint32_t) APP_START_ADDRESS;
       ((void (*)(void)) g_ulTransferAddress)();

    其他
    if ((*(uint32_t *) app_status_address)== 0x5A5A5A5A)

        G_ulTransferAddress =(uint32_t) APP_START_ADDRESS;
        ((void (*)(void)) g_ulTransferAddress)();

    #endif