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.

[参考译文] LAUNCHXL-F2800157:通过自定义 GPIO 引脚/波特率从闪存实现自定义 CAN 引导加载程序

Guru**** 2611705 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1577696/launchxl-f2800157-implementing-custom-can-bootloader-from-flash-with-custom-gpio-pins-baudrate

器件型号:LAUNCHXL-F2800157


尊敬的 TI 社区:

我们正在关注 这个主题 、其中 Matt *** 建议在闪存中创建“使用备用 GPIO 的自定义 CAN 引导加载程序(通过重新调整 CAN 闪存内核的用途来从闪存而不是 RAM 执行,可以轻松完成)“。

我们一直在努力实施这一方法、但遇到了一些概念和技术方面的挑战、我们希望在继续工作之前加以澄清。

了解当前启动流程

  1. ROM 引导加载程序 (从位于 0x3FC4EA 的 ROM 运行):
    • 在预定义的 GPIO 引脚上配置 CAN
    • 通过 CAN 从 PC 接收闪存编程内核
    • 将该内核加载到 RAM
    • 跳转到 RAM 中的内核
  2. 闪存内核 (从 RAM 运行):
    • Re 初始化 CAN
    • 对闪存 API 进行初始化
    • 擦除闪存扇区
    • 通过 CAN 从 PC 接收应用固件
    • 将应用程序编程到闪存
    • 跳转到新应用程序

我们的实施目标

我们想要创建一个  自定义第一阶段引导加载程序 以便:

  • 从我们基于闪存的应用程序运行(例如,地址为 0x80000)
  • 允许我们为 CAN 使用自定义 GPIO 引脚(不限于 ROM 选项)
  • 从 PC 接收闪存内核并将其加载到 RAM
  • 跳转到用于实际闪存编程的基于 RAM 的内核

本质上、我们希望将 ROM 引导加载程序的功能替换为可定制的 GPIO 引脚/波特率等

您能否提供有关如何正确实现此自定义第一级引导加载程序的指导?  

  • 从闪存内核示例中提取哪些函数/代码
  • 如何构建链接器文件以适当地保留 RAM 段
  • 用于从 PC 接收闪存内核的正确数据协议  

如果有任何用于创建自定义第一阶段引导加载程序的示例项目或其他文档、请告知我们。

感谢您的指导!

此致、
Taif Shamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    用于从 PC
    接收闪存内核的正确数据协议

    为了澄清--如果你已经在闪存中使用了自定义引导加载程序、就不需要闪存内核。 闪存内核 用于对闪存进行编程、因为 ROM 引导加载程序只能对 RAM 进行编程。

    由于 F2800157 器件只有一个闪存组、因此您需要在 RAM 之外执行闪存 API。 请参阅有关闪存 API 使用的常见问题  解答:【常见问题解答】有关 C2000 器件中闪存 API 使用的常见问题解答

    此致、

    马特