工具/软件:
您好:
我指的是中所述的"以太网软件更新模块"SW-TM4C-UTILS-UG-2.1.4.178.pdf
、该模块位于 C:\ti\TivaWare_C_Series-2.1.4.178\docs
在裸机应用中、通过使用引导加载程序和该SoftwareUpdateInit(callback_function)
机制、以太网固件更新可正常运行。
但是、当我将相同的代码集成到基于 FreeRTOS 的应用中时、我会观察到一种意外的行为:SoftwareUpdateRequestCallback()
即使 LM Flash Programmer 或任何主机未发送魔术包、该函数也会连续调用。
为了进行调试、我修改了 utils/swupdate.c
以记录接收到的数据包:UARTCharPut (UART4_BASE、MPACKET_MARker);
尽管接收到的数据包不包含 MPACKET_MARker (0xAA)、但代码仍会进入相关if
条件(包括 MAC 地址匹配条件)、就好像满足条件一样。
在裸机代码中使用相同的文件和逻辑时、不会观察到此行为。
在 RTOS 环境中、这些条件检查似乎以某种方式没有按预期运行、即使显然不满足它们的条件也是如此。
我的问题:
-
FreeRTOS 是否会以导致该问题的方式影响内存、时序或中断处理?
-
SoftwareUpdateInit()
在基于 FreeRTOS 的固件中安全使用的建议方法是什么? -
EMAC/lwip 和 FreeRTOS 任务/调度程序之间是否存在任何已知的干扰、可能导致误报?
对于有关如何使用 FreeRTOS 应用正确实施以太网引导加载程序、或者如何调试此错误行为的根本原因的指导、我非常感谢。
谢谢!