对恩智浦MCU有一定了解的朋友,一定知道NXP有一套非常完善的MCU boot loader解决方案:MCU BOOT,你也可曾上手体验过它呢?
这个MCU BOOT的内容非常丰富,实现了基于各种接口的boot loader(UART I2C SPI CAN USB…),并且提供了blhost命令行上位机工具及其源码。当然,boot loader的源码也是。。。比较复杂。一些朋友表示移植,看懂有点困难。正好最近支持客户时,应客户要求,自己实现了一套极简版的USB HID boot loader。协议和工具都是兼容恩智浦MCU BOOT的。恩智浦的MCU BOOT有一套完整的自定义协议。在各个MCU芯片手册的ROM章节,以及MCU BOOT资料包里的文档中都有详细介绍,这里就不赘述了。具体关于MCU BOOT协议的介绍和各个接口定义,需要查看MCU BOOT的官方手册。实际上这套代码已经存在很多年了。以前主要是支持串口,这次把USB接口加上了。
使用HID bootloader的步骤如下:
1,下载源代码,git 仓库地址:https://github.com/yandld/nxp_easy_mcuboot.git2,目前HID boot loader功能只支持Keil。HID功能只支持LPC51U68(后面会加入更多的型号和IDE)。
在 xp_easy_mcubootProjectlpcxpresso51u68中,会看到4个文件夹,分别是:
3,打开boot loader Keil工程: xp_easy_mcubootProjectlpcxpresso51u68lpcxpresso51u68_hid_bl,编译并下载到LPCXpresso51U68板子上。4,连接LPC51U68的USB(J6)到PC, 然后按住WAKE(SW1)按键,再按RESET复位MCU,强制进入boot loader模式:这时候会听到PC USB识别的声音,打开 xp_easy_mcubootpc_tool下的KinetisFlashTool.exe
点击连接,会看到boot loader的连接信息(说明上位机已经成功连接boot loader),如下图:
5,编译lpcxpresso51u68_app中的用户示例代码(小灯闪烁)。并生成.hex文件,在KinetisFlashTool中点Browse选择编译生成好的lpcxpresso51u68_app.hex文件,并点击Update开始升级,如果看到进度条走动并且看到升级成功log 说明升级成功:
打开串口并复位板子,会看到串口打印log,小灯闪烁,说明boot loader功能实现正常:
在这个代码仓库中,除了LPC51U68 HID boot loader外,还包含其他NXP MCU的boot loader代码,绝大多数只支持串口。
这套代码实际是NXP官方MCU BOOT代码的最小简化版本,砍掉了绝大多数的高级功能,只留最核心的几条常用命令处理,所以代码比官方的精简好懂很多。当然它也只能实现最简单的boot loader,像双固件冗余升级,安全升级等特性是实现不了的。如果您在使用中有问题,欢迎给我留言哦~
责任编辑:haq
-
mcu
+关注
关注
146文章
16210浏览量
345454 -
HID
+关注
关注
2文章
123浏览量
46339 -
代码
+关注
关注
30文章
4596浏览量
67328
原文标题:如何使用LPC51U68的HID boot loader源码
文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
用ESP-IDF编译bt_hid_mouse_device例程失败报错的原因?
如何才能将Bootloader和Application关联起来
![如何才能将<b class='flag-5'>Bootloader</b>和Application关联起来](https://file1.elecfans.com/web2/M00/EC/ED/wKgZomZpQWeAXhBCAAA_AlcFHpQ261.png)
将STM32L4系列开发板设置为HID设备,为什么不显示HID设备?
如何解决Fcx3这种高频率发送hid报错问题?
什么是通用HID灯镇流器
![什么是通用<b class='flag-5'>HID</b>灯镇流器](https://file1.elecfans.com/web2/M00/BF/85/wKgZomW8sDGAM2TVAAG7_NzhPjU007.png)
STM32无法进入片上Bootloader的处理方法
u-boot与bootloader的区别
在没有Linux操作系统的单片机中为什么还要用Bootloader?
![在没有Linux操作系统的单片机中为什么还要用<b class='flag-5'>Bootloader</b>?](https://file1.elecfans.com/web2/M00/90/6F/wKgaomTZz0qAKtcWAALv1NQh6VQ347.jpg)
单片机BootLoader与APP如何合并
![单片机<b class='flag-5'>BootLoader</b>与APP如何合并](https://file1.elecfans.com/web2/M00/8D/B6/wKgaomS_QfqAFaT8AAAnn5P69-s049.png)
评论