PIC32MZ 通过USB在线升级 -- USB HID bootloader
了解 bootloader 的实现, 请加QQ: 1273623966(验证填bootloader); 欢迎咨询或定制bootloader; 我的博客主页 www.cnblogs.com/geekygeek
上一篇博文介绍了PIC32MZ 的USB CDC bootloader, 但是USB CDC bootloader是模拟UART通信,速度比较慢。所以我决定使用USB HID class替换USB CDC class. 让我的PIC32MZ bootloader更新程序时,有飞一般的感觉。整个PIC32MZ USB HID bootloader是在harmony 的bootloader例程基础上修改的。HID bootloader的开发环境如下。
开发环境
1. IDE: MPLABX IDE 4.01
2. Compiler: XC32 1.40
3. Library: Harmony 1.07
4. Example: c:/microchip/harmony/v1_07_01/apps/bootloader/basic/firmware/basic.X.
下位机
在harmony bootloader例程的基础上,首先修改的是项目属性的配置。让其适应我的硬件板子(PIC32MZ EC starter kit )。项目中对应的芯片修改成PIC32MZ2048ECH144。Bootloader的Linker File, bsp, 以及 peripheral Library修改成PIC32MZ2048ECH所对应的。
接着就是代码的修改。harmony bootloader例程的设计很成熟,只需要很少的改动,就可以适配到你的硬件板子。唯一的不足,就是例程的文档没有介绍到bootloader和应用程序的memory map。 这一点AN1388就做的很好,AN1388里面甚至有应用程序的例子,可以直接用来测试bootloader。 AN1388里面也有应用程序的Linker file。但是harmony bootloader例程文档中没有,我只好自己写应用程序的Linker script。 Linker script必须让bootloader和应用程序在flash中地址错开来。不能有overlap。 然后我在HID bootloader 的system_config.h中修改了以下与地址相关的宏定义:
#define BOOTLOADER_FLASH_BASE_ADDRESS 0x9D000000
#define BOOTLOADER_FLASH_END_ADDRESS (0x9D000000 + 0x200000 - 1) /* Address of the Flash from where the application starts executing */
/* Rule: Set BOOTLOADER_FLASH_BASE_ADDRESS to _RESET_ADDR value of application linker script*/
#define BOOTLOADER_RESET_ADDRESS 0xBD000000 //(BOOTLOADER_FLASH_BASE_ADDRESS + 0x1000)
这些宏定义和我写的应用程序的Linker script中的定义相吻合。否则会烧写失败或跳转不成功。接着就试着编译我的HID bootloader, 一切都很顺利,一次就成功了。通过PICKit3将HID bootloader下载到了硬件板子上了。
上位机
这时候,我就去找harmony bootloader要用的电脑端的程序(上位机)。我找了harmony安装路径下的每一个角落,都没有发现。难道要自己写上位机, 这个可没那么简单。后来我突然想到了AN1388的上位机PIC32UBL.exe, 虽然AN1388的例程中bootloader的代码只支持PIC32MX, 不支持PIC32MZ。 但是上位机说不定是通用的。试完后,才知道PIC32UBL.exe果然是个好用工具,对harmony bootloader的支持非常的好。

更新步骤
1. 打开上位机PIC32UBL.exe, 选择勾选USB通信方式。
2. 按住硬件板子的SW3 按键开关, 重启硬件板子。
3. 点击上位机connect按钮,会提示发现bootloader,这个时候可以松开SW3按键开关。
4. 点击上位机“Load Hex File"按钮,加载应用程序的hex。 (应用程序编译时,要用上面提到的客制的Linker script )
5. 点击上位机“erase-program-verify"按钮,bootloader开始工作,等待其烧写完成。
6. 点击上位机”Run application"按钮。
整个步骤,就是这样。我非常满意这个HID bootloader, 操作简单,速度也快,完全可以用来作为产线生产时烧写的一个工具,有了它,就算产品出到客户端,如果需要更新程序,也不用召回,只需插上USB线,现场就可以完成更新,这个时候可以节省一大笔召回的成本。
PIC32MZ 通过USB在线升级 -- USB HID bootloader的更多相关文章
- PIC32MZ 通过USB在线升级 -- USB CDC bootloader
了解bootloader 的实现,请加QQ: 1273623966 (验证填 bootloader):欢迎咨询或定制bootloader:我的博客主页www.cnblogs.com/geekygeek ...
- PIC24 通过USB在线升级 -- USB HID bootloader
了解bootloader的实现,请加QQ: 1273623966 (验证填bootloader):欢迎咨询或定制bootloader; 我的博客主页www.cnblogs.com/geekygeek ...
- PIC24 通过USB在线升级 -- USB CDC bootloader
了解bootloader的实现,请加QQ: 1273623966 (验证填bootloader):欢迎咨询或定制bootloader:我的博客主页www.cnblogs.com/geekygeek 今 ...
- PIC32MZ 通过U盘在线升级 -- USB Host bootloader
了解bootloader的实现,请加QQ: 1273623966(验证填bootloader); 欢迎咨询或定制bootloader; 我的博客主页 www.cnblogs.com/geekygeek ...
- nrf52——DFU升级USB/UART升级方式详解(基于SDK开发例程)
摘要:在前面的nrf52--DFU升级OTA升级方式详解(基于SDK开发例程)一文中我测试了基于蓝牙的OTA,本文将开始基于UART和USB(USB_CDC_)进行升级测试. 整体升级流程: 整个过程 ...
- Encrypting bootloader (程序BIN文件加密及在线升级)
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...
- Encrypted bootloader (程序BIN文件加密及在线升级)
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...
- dsp 28377在线升级 实例总结
使用dsp品台28377d来实现在线升级的功能. 方案 : 升级程序 + 应用程序 升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳 ...
- STM32 IAP 在线升级详解(转)
源:http://blog.csdn.net/yx_l128125/article/details/12992773 (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP ...
随机推荐
- 王爽汇编习题2.2(1):给定地址段为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到____
此题解题背景默认为8080型CPU,地址总线为16根.(8080-16,8086-20,8088-20,80286-24,80386-32) 16根地址总线寻址能力:(2 ** 16) / 1024 ...
- C#构造函数、操作符重载以及自定义类型转换
构造器 构造器(构造函数)是将类型的实例初始化的特殊方法.构造器可分为实例构造器和类型构造器,本节将详细介绍有关内容. 实例构造器 顾名思义,实例构造器的作用就是对类型的实例进行初始化.如果类没有显示 ...
- 6.分析request_irq和free_irq函数如何注册注销中断
上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...
- 锤子坚果pro突破京东10万好评,还有什么是锤子科技做不出...
作为2017年手机圈明星产品的锤子科技坚果Pro,可是一点都不安分呢! 9月份锤子科技推出一款新机型--坚果Pro银魂定制版 这在动漫圈跟手机圈都掀起一股不小的浪潮. 外观漂亮,颜值超高,续航时间长. ...
- React和Vue的组件更新比较
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...
- 交换机的Ethernet Channel
端口聚合也叫做以太通道(ethernet channel),主要用于交换机之间连接.由于两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环 路产生.但是 ...
- 团队作业8----第二次项目冲刺(Beta阶段) 第五天
BETA阶段冲刺第五天 1.小会议ing 2.每个人的工作 (1)昨天已完成的工作 文件读取的方式采用按钮的: (2) 今天计划完成的工作 (3) 工作中遇到的困难: 林莹:源代码的部分我们已经初步完 ...
- 201521123061 《Java程序设计》第六周学习总结
201521123061 <Java程序设计>第六周学习总结 ***代码阅读:Child压缩包内 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核 ...
- 201521123080《Java程序设计》第7周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下 分析: ...
- 201521123089 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码1.1 com.parent包中Child.java文件能否编译通过?哪 ...