MPLAB X IDE:为 PIC32 编写引导加载程序应用程序
MPLAB X IDE: Writing Boot Loader application for PIC32
我是 Microchip 编程的新手,遇到了一些麻烦。
我需要使用 MPLAB X IDE 编写引导加载程序应用程序,但我不知道如何设置 compiler/linker 以创建映射到正确内存区域的可执行文件。
查阅组件的数据表,我可以看到这个地址:
Program Flash --> 0x1D000000 - 0x1D1FFFFF
Boot Flash --> 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 和变量访问
• 无需重大更改即可将现有代码集成到引导加载程序或应用程序项目中
• 面向文件的 push/pull 和板载内存引导加载程序随时可用 - 可以适应无线 (OTA) 和芯片到芯片设计
自动创建链接描述文件
• 无需维护 .gld/.ld 文件或了解 GNU ld 语法
解耦通信
• 2 线 UART 和 I2C 从协议示例
• USB 大容量存储拇指驱动器引导加载(USB Host/MSD Class)
• 可扩展到面向多节点广播的通信总线的被动、自我识别协议
• 多个外设实例和外设类型可以同时侦听固件更新
• 分区以方便客户和第 3 方协议添加
强大的自我保护能力
• 闪存 erase/write 例程自我感知引导加载程序几何结构
• 当外部给出破坏性命令时,引导加载程序不会擦除或破坏自身
• 不会尝试执行损坏的或部分引导加载的应用程序
• CRC32 通信和图像完整性检查可重复使用 API
中断向量管理
• IVT 条目转发到应用程序 space
中优化的中断转到 Table
• 引导加载程序和应用程序可以与单独的 运行 时间选择共享任何中断向量
• 无需 AIVT 或引导段 (BS) 硬件支持
应用程序支持功能
• 优化的通用 64 位时间测量和任务调度 API
• 闪存 Erase/Write APIs 用于数据 EEPROM 仿真和独立于应用程序升级的内容生存
• 多实例 FIFO 缓冲 API,具有 interrupt/non-blocking、轮询、超时和回调通知功能
专为性能而设计,没有硬件奢侈品
• 延迟自适应软件流量控制容忍蓝牙或 TCP/Internet 传播延迟,无需硬件 RTS/CTS 或边带信令
• .hex 内容在构建时自动转换为较小的二进制 .bl2 映像,具有改进的识别、版本和错误检测功能
• 引导加载程序通信中断上的软件 FIFO 允许高吞吐量
代码保密兼容
• 操作不受 ICSP 代码保护影响
• 引导加载程序不会公开程序内存或 RAM 以供外部回读
• 外部程序 verification/version 通过内部 CRC32 计算促进识别
具有免费 Microchip 许可证的完整源代码
• 没有 GNU GPL 代码污染或需要独立许可的第 3 方代码
• 脚本可访问、可移植的 C PC 命令行通信可执行文件已准备好用于品牌 GUI 包装和重新分发
我是 Microchip 编程的新手,遇到了一些麻烦。 我需要使用 MPLAB X IDE 编写引导加载程序应用程序,但我不知道如何设置 compiler/linker 以创建映射到正确内存区域的可执行文件。
查阅组件的数据表,我可以看到这个地址:
Program Flash --> 0x1D000000 - 0x1D1FFFFF
Boot Flash --> 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 和变量访问
• 无需重大更改即可将现有代码集成到引导加载程序或应用程序项目中
• 面向文件的 push/pull 和板载内存引导加载程序随时可用 - 可以适应无线 (OTA) 和芯片到芯片设计
自动创建链接描述文件
• 无需维护 .gld/.ld 文件或了解 GNU ld 语法
解耦通信
• 2 线 UART 和 I2C 从协议示例
• USB 大容量存储拇指驱动器引导加载(USB Host/MSD Class)
• 可扩展到面向多节点广播的通信总线的被动、自我识别协议
• 多个外设实例和外设类型可以同时侦听固件更新
• 分区以方便客户和第 3 方协议添加
强大的自我保护能力
• 闪存 erase/write 例程自我感知引导加载程序几何结构
• 当外部给出破坏性命令时,引导加载程序不会擦除或破坏自身
• 不会尝试执行损坏的或部分引导加载的应用程序
• CRC32 通信和图像完整性检查可重复使用 API
中断向量管理
• IVT 条目转发到应用程序 space
中优化的中断转到 Table• 引导加载程序和应用程序可以与单独的 运行 时间选择共享任何中断向量
• 无需 AIVT 或引导段 (BS) 硬件支持
应用程序支持功能
• 优化的通用 64 位时间测量和任务调度 API
• 闪存 Erase/Write APIs 用于数据 EEPROM 仿真和独立于应用程序升级的内容生存
• 多实例 FIFO 缓冲 API,具有 interrupt/non-blocking、轮询、超时和回调通知功能
专为性能而设计,没有硬件奢侈品
• 延迟自适应软件流量控制容忍蓝牙或 TCP/Internet 传播延迟,无需硬件 RTS/CTS 或边带信令
• .hex 内容在构建时自动转换为较小的二进制 .bl2 映像,具有改进的识别、版本和错误检测功能
• 引导加载程序通信中断上的软件 FIFO 允许高吞吐量
代码保密兼容
• 操作不受 ICSP 代码保护影响
• 引导加载程序不会公开程序内存或 RAM 以供外部回读
• 外部程序 verification/version 通过内部 CRC32 计算促进识别
具有免费 Microchip 许可证的完整源代码
• 没有 GNU GPL 代码污染或需要独立许可的第 3 方代码
• 脚本可访问、可移植的 C PC 命令行通信可执行文件已准备好用于品牌 GUI 包装和重新分发