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.

[参考译文] UCD3138A:定制引导加载程序代码示例

Guru**** 2538930 points
Other Parts Discussed in Thread: UCD3138

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1050100/ucd3138a-custom-bootloader-code-example

器件型号:UCD3138A
主题中讨论的其他器件:UCD3138

您好、能否为 UCD3138提供自定义引导加载程序项目示例? 当然、我是说引导加载程序和主程序。 BL 的主要作用是使用自定义串行接口对主程序进行编程/擦除

到目前为止、我的假设是:

  1. 为了实现良好的代码实践、用于写入/擦除闪存的软件中断应该是定制 BL 项目的一部分、 主程序中的数据闪存写入/擦除应该通过放置在引导加载程序代码中的 SW 中断来完成
  2. 由于主程序中使用了快速和标准中断、因此不应在 BL 中使用它们、并且它们的跳向量应转发到主程序地址
  3. 必须修改 BL 加载 asm 文件、因此.vectors 段指向右快速 和标准中断、例如 指向地址0x800处可 fable 的第二个"虚拟"矢量
  4. 必须修改主程序 asm 文件、因此.vectors 段指向 BL 中的正确软件中断位置
  5. BL 项目中的链接器 cmd 设置 pflash (RX): org = 0x00000020、len = 0x000007DC 保留校验和的中断矢量和位置
  6. 主程序项目中的链接器 cmd 设置新的“虚拟”矢量表 VECS:org = 0x00000800,len = 0x00000020, 但 此处仅使用快速和标准中断
  7.  主程序项目中的链接器 cmd 设置 pflash  (RX):org = 0x00000820、len = 0x0000xxxx

我不确定 是否应该在主程序中保留其余的默认加载 asm 文件? 引导加载程序中的加载 ASM 将设置堆栈和 RAM、但在退出 BL 后"清理"所有内容可能会很有用、以便主程序获得全部资源并清理 RAM。 此外、这将允许 BL 和主程序具有不同的堆栈大小。

我还缺少什么吗? 示例项目将是很好的参考、因为有需要 注意的事项。

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

    以下是您的问题的一些答案:

    我们尝试将引导闪存放入2K 空间、它所做的就是擦除和写入闪存、因此我们只需将其保持在系统模式。  这样、它就可以在没有 SWI 的情况下直接访问内容。   

    2、3、4、5、6、7向上   

    引导加载程序中的 load.asm 文件非常小。  它执行最少的初始化。  开始时的小魔法触摸以初始化硬件、然后将堆栈初始化为系统模式、然后执行代码。  不会清除 RAM、也不会处理自动初始化表。   

    您没有提到的一个关键特性是、 许多客户不知道的是、如果引导加载程序大于2K、则必须有完全适合2K 的程序、可以验证其余 bootflash 的校验和、如果额外的校验和未通过、则清除2K 校验和。   

    我实际上有一个旧的点选包引导闪存代码、我可以将其发送给您。  如果您在此处向我发送了一封包含您的电子邮件的朋友请求、我应该能够向您发送一个指向点击包装的简单引导加载程序的方框链接。