我想通过以太网加载新固件、以便在下次启动时它将有效。 我知道 LC4357从闪存中运行指令、是否有办法实现这一点?
注:我无法在 RAM 上存储二进制映像并进行交换、因为二进制映像大于512KB (最大可用 RAM)
提前感谢。
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.
我想通过以太网加载新固件、以便在下次启动时它将有效。 我知道 LC4357从闪存中运行指令、是否有办法实现这一点?
注:我无法在 RAM 上存储二进制映像并进行交换、因为二进制映像大于512KB (最大可用 RAM)
提前感谢。
您好、Alperen、
请在以下位置找到以太网引导加载程序:
您好!
该示例提供了强制应用程序更新的选项
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