主题中讨论的其他器件:UCD3138
您好、能否为 UCD3138提供自定义引导加载程序项目示例? 当然、我是说引导加载程序和主程序。 BL 的主要作用是使用自定义串行接口对主程序进行编程/擦除
到目前为止、我的假设是:
- 为了实现良好的代码实践、用于写入/擦除闪存的软件中断应该是定制 BL 项目的一部分、 主程序中的数据闪存写入/擦除应该通过放置在引导加载程序代码中的 SW 中断来完成
- 由于主程序中使用了快速和标准中断、因此不应在 BL 中使用它们、并且它们的跳向量应转发到主程序地址
- 必须修改 BL 加载 asm 文件、因此.vectors 段指向右快速 和标准中断、例如 指向地址0x800处可 fable 的第二个"虚拟"矢量
- 必须修改主程序 asm 文件、因此.vectors 段指向 BL 中的正确软件中断位置
- BL 项目中的链接器 cmd 设置 pflash (RX): org = 0x00000020、len = 0x000007DC 保留校验和的中断矢量和位置
- 主程序项目中的链接器 cmd 设置新的“虚拟”矢量表 VECS:org = 0x00000800,len = 0x00000020, 但 此处仅使用快速和标准中断
- 主程序项目中的链接器 cmd 设置 pflash (RX):org = 0x00000820、len = 0x0000xxxx
我不确定 是否应该在主程序中保留其余的默认加载 asm 文件? 引导加载程序中的加载 ASM 将设置堆栈和 RAM、但在退出 BL 后"清理"所有内容可能会很有用、以便主程序获得全部资源并清理 RAM。 此外、这将允许 BL 和主程序具有不同的堆栈大小。
我还缺少什么吗? 示例项目将是很好的参考、因为有需要 注意的事项。