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.
大家好、
我的应用需要从闪存引导、但我也希望通过 CAN 更新我的固件(程序到闪存)。
我找到了一个解决方案、它与我的要求 C2000软件控制固件更新过程(SPRACN1)非常相似、但在本文档中、它完全用于 TMS320F28004x 器件。 因此、它们在引导模式引脚上具有两种不同的引导模式配置。 在我的应用中、闪存引导和获取模式使用相同的 GPIO 引导模式配置。
我有疑问、能否从应用程序配置 OTP BOOTCTRL 寄存器、即何时通过 CAN 接收更新请求、仅用于固件更新? 复位后对 OTP 寄存器进行编程是否可行、CPU 仍将等待从 CAN 引导?
谢谢、
Mateusz Stasiak
您好!
[引用] 我有一个查询、能否从应用程序配置 OTP BOOTCTRL 寄存器、即何时通过 CAN 接收更新请求仅用于固件更新? [/报价]
是的、您可以在对应用程序进行编程时更新 OTP BOOTCTRL。 您需要在.out 文件中包含这些设置。 我建议查看 安全工具 、它有助于生成您可以包含在项目中的所需文件。
[引用] 是否可能、或者如果我在复位后对 OTP 寄存器进行编程、CPU 仍将等待从 CAN 进行引导? [/报价]
在这种情况下、除非您将引导模式引脚设置更改为"获取模式"、否则它将以 CAN 引导方式引导(基于引导模式引脚设置)。 更新 OTP 设置时、您也可以更改引导模式引脚、并将这些引脚值驱动为 Get Mode、但这意味着您最终将使用4个引脚作为引导。
此致、
Vivek Singh
在本例中、我必须使用一个引导引脚位置。 GET 模式(CAN)和闪存引导都需要将 GPIO71和 GPIO84设置为1。 对于 CAN 和闪存引导、DMODE 值0x07唯一不同的地方。
在我的情况下、我要从闪存启动应用、然后通过工作程序启动 CAN 固件更新。 此时、我应该为 CAN 引导配置 BOOTCTRL 寄存器、并在更新后的应用程序配置中配置该值以从闪存引导吗? 是否应保证在下次复位后从闪存引导?
我了解了自定义引导加载程序、但找不到适用于 CAN 引导加载程序的特定解决方案。
最棒的
Mateusz Stasiak
您好!
请注意、OTP 是"一次性可编程"设置、因此您只能在 OTP 中更新一次设置、之后不能在该器件中更改这些设置。 在这种情况下、您需要在闪存中将次级引导加载程序作为工作代码的一部分、并根据某些特定命令调用该引导加载程序。
您可以在 C2000Ware ( \libraries\boot_rom\f2837xd\revB\rom_sources\F2837x_bootrom\cpu01-bootrom\source)。
此致、
Vivek Singh
您好、Vivek、
感谢您的回复。 这对我们非常清楚。 我还有两个问题。
1.您是否有任何应用手册或示例,说明如何使用这些库?
2.您是否建议使用任何 Windows/Linux 应用程序将 hex2000输出文件中的数据转换为 CAN 引导加载程序可接受的格式、然后使用 CANbus 分析器进行发送?
最棒的
Mateusz Stasiak
我正在邀请其他专家回答这些问题。
此致、
Vivek Singh
你好
相关问题。
1.你所指的是哪些库? Vivek 链接了引导 ROM 源代码。 您需要参考源代码中的注释/详细信息。 如果您有疑问、我们可以在论坛上澄清问题。
2.十六进制实用程序会将应用程序数据放入 CAN 引导加载程序支持的格式。 您可以创建一个 Windows 应用程序、该应用程序使用它们提供的 Peaksystem PCAN 库通过 PCAN USB 分析器发送数据。
此致
Chris