我正在使用 LPC54608、LwIP 和 MCUXpresso IDE v11.7.0 SDK2_13。
在我的项目中,我需要一个两步引导加载,在第一步中,位于@0x000 闪存地址的引导加载程序不使用 lwip 堆栈,经过一些首字母检查后,它跳转到位于 @0x010100 闪存地址的主应用程序,在主应用程序 I配置和使用 lwip 堆栈等...
我在 MainApp 中的 lwip 代码有一个奇怪的问题:
如果主应用程序的闪存代码运行 @0x00000 地址 lwip 代码工作正常,如果闪存地址有偏移量,即主应用程序的项目位于@闪存地址 0x10100 lwip 无法正常运行。
当我将 lwip 和我的主要应用程序代码重新定位到另一个闪存地址(用于两步引导加载程序)时,我遗漏了什么或者我应该设置一些特定的选项吗?
只是为了测试和复制这个问题,我为 EVB-OM13092 创建并附加了 2 个项目,它们完全复制了我的情况:
- lpcxpresso54608_bootloader:
这个项目模拟我的小型引导加载程序@0x000 闪存地址,它只是将一个字符串打印到半主机控制台并跳转到 MainApp 代码@0x10100(只需先将此代码闪存到 OM13092 EV 板内存) - lpcxpresso54608_lwip_dhcp_bm_flashoffset:
这是我的 MainApp @0x10100 闪存地址,它复制了这个问题。正如您所看到的,这正是来自 sdk 的裸机示例 lpcxpresso54608_lwip_dhcp_bm,如果此代码运行 @0x00flash 地址,则它运行良好,但是当它通过正确的 MCUSettings 对话框编译并刷新 @0x10100 并在从引导加载程序正确跳转之后,它没有运行,因为它启动了 dhcp 程序,但它似乎没有收到任何 dhcp 应答数据包。
在图片中,Main App 示例的偏移设置 @ 0x10100 闪存地址位置
当我将它的整个代码重新定位到另一个不同于 0x0000 的闪存地址时,我是否遗漏了一些 lwip 设置?
你有什么建议吗?