[英]MPLAB X IDE: Writing Boot Loader application for PIC32
我是 Microchip 编程的新手,遇到了一些麻烦。 我需要使用 MPLAB X IDE 编写引导加载程序应用程序,但我不知道如何设置编译器/链接器以创建映射到正确内存区域的可执行文件。
查阅组件的数据表,我可以看到这个地址:
程序闪存 --> 0x1D000000 - 0x1D1FFFFF
引导闪存 --> 0x1FC00000 - 0x1FC73FFF
如何创建使用引导闪存的程序? 我需要更改哪些参数? 我在网上读到,也许我应该使用链接器脚本,但我不知道如何使用它们。
你能给我一些信息吗?
我经历了类似的问题。
最好的方法是使用 Harmony 框架为引导加载程序生成链接描述文件,并为您的芯片提供正确的内存区域。
只需使用引导加载程序设置和编译创建一个虚拟项目,它就会生成链接器脚本。
获得链接描述文件后,您可以将其导入到您的项目中。
您还需要对应用程序代码执行相同的操作,因为链接器因其初始化区域的不同而不同。
最好的方法是使用 ezbl 项目作为基础,然后根据您的需要进行更改。 Ezbl 引导加载程序不是微不足道的,但它是最安全的方式。
来自https://www.microchip.com/SWLibraryWeb/product.aspx?product=Microchip%20Easy%20Bootloader
EZBL 特点
支持的目标
• 支持双分区的目标上的单分区和双分区引导加载拓扑示例
• 通用代码集支持所有 32 位 PIC32MM 和 16 位 PIC24/dsPIC33 器件,不包括 PIC24F[V]xxKxx 系列
• 带有实时更新的双分区,可实现对时间和状态敏感的应用程序连续性
代码重用
• 透明的引导加载程序功能、ISR 和执行应用程序的变量访问
• 无需重大更改即可将现有代码集成到引导加载程序或应用程序项目中
• 面向文件的推/拉和板载内存引导加载程序随时可用 - 可适用于无线 (OTA) 和芯片到芯片设计
自动链接脚本创建
• 无需 .gld/.ld 文件维护或了解 GNU ld 语法
解耦通信
• 2 线 UART 和 I2C 从协议示例
• USB 大容量存储拇指驱动器引导加载(USB 主机/MSD 类)
• 可扩展到面向多节点广播的通信总线的被动、自识别协议
• 多个外围设备实例和外围设备类型可以同时侦听固件更新
• 分区以方便客户和第 3 方协议添加
强大的自我保护
• 闪存擦除/写入例程自我感知引导加载程序几何结构
• 从外部发出破坏性命令时,引导加载程序不会擦除或损坏自身
• 不会尝试执行损坏或部分引导加载的应用程序
• 使用可重用 API 进行 CRC32 通信和图像完整性检查
中断向量管理
• IVT 条目转发到应用程序空间中的优化中断跳转表
• 引导加载程序和应用程序可以共享任何具有单独运行时选择的中断向量
• 不需要 AIVT 或引导段 (BS) 硬件支持
应用支持功能
• 优化的通用 64 位时间测量和任务调度 API
• 用于数据 EEPROM 仿真和内容生存的闪存擦除/写入 API,独立于应用程序升级
• 具有中断/非阻塞、轮询、超时和回调通知功能的多实例 FIFO 缓冲 API
专为性能而设计,无需硬件奢侈品
• 延迟自适应软件流控制可容忍蓝牙或 TCP/Internet 传播延迟,无需硬件 RTS/CTS 或边带信令
• .hex 内容在构建时自动转换为较小的二进制 .bl2 图像,具有改进的识别、版本和错误检测功能
• 引导加载程序通信中断上的软件 FIFO 允许高吞吐量
代码保密兼容
• 操作不受 ICSP 代码保护影响
• 引导加载程序不会公开程序存储器或 RAM 以供外部回读
• 通过内部 CRC32 计算促进外部程序验证/版本识别
带有免费 Microchip 许可证的完整源代码
• 没有 GNU GPL 代码污染或需要独立许可的第三方代码
• 脚本可访问、便携式 C PC 命令行通信可执行文件,可用于品牌 GUI 包装和重新分发
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.