问题来源字段:
我正在与客户合作进行 C6748设计。 软件架构师将再次回答 有关固件升级策略的一些问题,我希望获得一些有关客户问题的支持!
固件升级通过专有协议通过串行接口完成。 固件作为一系列命令与固件映像的一部分进行传输。
如果由于断电而导致固件升级中断、系统将保持正常运行、并且可以重新启动固件升级。
我们看到实现这一目标的几种可能性:
使用次级引导加载程序、该引导加载程序决定从两个映像闪存存储器位置中的哪个位置加载
-次级引导加载程序可以执行必要的 AIS 命令来执行 ROM 引导加载程序通常负责的所有段填充、CRC 校验等
-次级引导加载程序在生产过程中刷写、在固件升级过程中不会更改
-次级引导加载程序选择两个映像位置之一
-通常只有一个存在、另一个应该为空(不以 AIS 幻数开头)
-如果存在两个图像,其中一个可能不完整/无法正常工作
-查找第一个正确的图像(CRC?) 并从该引脚引导
-可以使用 UART 打印诊断程序
- Starterware 使用辅助引导加载程序(http://processors.wiki.ti.com/index.php/OMAPL138_StarterWare_Booting_And_Flashing)(http://processors.wiki.ti.com/index.php/Quick_Start_Guide_StarterWare_01.20.XX.XX_%28supports_C6748%29)
2.在闪存中修补 AIS 脚本
-这很难、AIS 脚本唯一可以做出的基于决策的跳转是验证 CRC 命令
-始终有一个点、您必须擦除闪存以写入不同的值、其中 AIS 脚本暂时无法正常工作
3.使用 AIS 跳转命令执行可能影响引导并在之后返回引导加载程序的函数
-我看不出 ROM 引导加载程序会受到什么影响
AISgen 似乎生成了 AIS 脚本,这些脚本使用此构造来调用在 L2 RAM 中加载的函数
第1点似乎是最实用的解决方案。
问题:我们是否同意或可以建议其他解决方案?