MPLAB X IDE:为PIC32编写Boot Loader应用程序

时间:2018-11-27 15:11:22

标签: bootloader microchip mplab pic32

我是Microchip编程的新手,但遇到了一些麻烦。 我需要使用MPLAB X IDE编写一个引导加载程序应用程序,但我不知道如何设置编译器/链接器来创建映射到内存正确区域的可执行文件。

查看组件的数据表,我可以看到以下地址:

  

程序闪存-> 0x1D000000-0x1D1FFFFF
  引导闪存-> 0x1FC00000-0x1FC73FFF

如何创建使用引导闪存的程序?我需要更改哪些参数?在网上,我读到也许应该使用链接描述文件,但我不知道如何使用它们。

能否请您提供一些信息?

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。

最好的方法是使用Harmony框架为引导加载程序生成链接脚本,并为您的芯片提供正确的内存区域。

只需使用引导程序安装程序创建一个虚拟项目并进行编译,它将生成链接程序脚本。

一旦获得了链接脚本,就可以将其导入项目中。

您还需要对应用程序代码执行相同的操作,因为由于初始化区域的原因,链接器也有所不同。

答案 1 :(得分:0)

最好的方法是使用ezbl项目作为基础,然后根据需要进行更改。 Ezbl引导加载程序并不简单,但这是最安全的方法。

来自https://www.microchip.com/SWLibraryWeb/product.aspx?product=Microchip%20Easy%20Bootloader

EZBL功能

支持的目标

•具有双分区功能的目标上的单分区和双分区引导加载拓扑示例

•通用代码集支持所有32位PIC32MM和16位PIC24 / dsPIC33器件,但不包括PIC24F [V] xxKxx系列

•具有实时更新的双重分区,可确保时间和状态敏感的应用程序连续性

代码重用

•透明的Bootloader功能,ISR和来自执行应用程序的变量访问

•现有代码可以集成到Bootloader或Application项目中,而无需进行重大更改

•随时可用的面向文件的推/拉和板载内存引导程序-可以适用于无线(OTA)和芯片到芯片设计

自动创建链接描述文件

•无需维护.gld / .ld文件或了解GNU ld语法

去耦通信

•以2线UART和I2C从协议为例

•USB Mass Storage拇指驱动器引导加载(USB主机/ MSD类)

•可扩展至多节点面向广播的通信总线的被动式自识别协议

•多个外围设备实例和外围设备类型可以同时侦听固件更新

•进行分区以方便客户和第三方协议的添加

严厉的自我保护

•Flash擦除/写入例程可自我了解Bootloader的几何形状

•外部给出破坏性命令时,引导加载程序不会擦除或破坏自身

•不会尝试执行已损坏或部分引导的应用程序

•使用可重复使用的API进行CRC32通信和图像完整性检查

中断向量管理

•IVT条目转发到应用程序空间中的优化中断转到表

•引导加载程序和应用程序可以与各个运行时选择共享任何中断向量

•不需要AIVT或引导段(BS)硬件支持

应用程序支持功能

•优化的通用64位时间测量和任务调度API

•闪存擦除/写入API,可独立于应用程序升级而进行数据EEPROM仿真和内容保存

•具有中断/非阻塞,轮询,超时和回调通知功能的多实例FIFO缓冲API

专为无硬件需求的性能而设计

•延迟自适应软件流控制可承受蓝牙或TCP / Internet传播延迟,而无需硬件RTS / CTS或边带信令

•.hex内容在生成时自动转换为较小的二进制.bl2图像,具有改进的标识,版本和错误检测功能

•Bootloader通信中断上的软件FIFO允许高吞吐量

代码保密兼容

•操作不受ICSP Code Protect的影响

•Bootloader不会公开程序存储器或RAM进行外部回读

•内部CRC32计算促进了外部程序验证/版本识别

具有免费Microchip许可证的完整源代码

•没有GNU GPL代码污染或需要独立许可的第三方代码

•脚本可访问的便携式C PC命令行通信可执行文件,可用于品牌GUI包装和重新分发