LPC54xxx:ISP模式下使用USB进行应用程序升级操作说明 (附视频讲解) LPC54XXX进入ISP模式后,通过UART/I2C/SPI/USB进行应用程序升级有两种方式,一种方式是上电时改变ISP引脚状态,另一种是在程序运行中通过再次激活ISP Boot ROM的方式进行应用程序升级。第一种方式不需要用户自己写程序,操作简单,但缺点是不太灵活,不适用于现场操作;第二种更灵活,广泛应用在自己开发的Secondary Bootloader应用中,但需要用户自己写代码才能实现。 实际使用中,由于个人电脑自带的USB口使用方便,故使用USB接口进行应用程序升级越来越受欢迎。 遗憾的是目前我们没有ISP模式下通过USB升级应用程序的操作说明,不少客户在探索操作方法上耽误了很多时间。故小编在亲测后写了这篇应用笔记在此分享。
进入ISP模式有如下两种方式: 1. 方式一:上电时进入ISP模式进行应用程序升级 在硬件上,上电或复位前配置ISP0~2引脚,MCU进入ISP模式进行应用程序升级,引脚配置方法如下: 图1.
1. 方式二:在程序运行中用Reinvoke ISP重新激活进入ISP进行应用程序升级
在ISP模式下,通过UART/I2C/SPI/USB进行应用程序升级,本文着重介绍USB方式。LPC54XX的USB0(Full Speed)与USB1(High Speed)都可进行应用程序升级,同时有两种升级模式,分别为DFU(Device Firmware Updata)与MSC(Mass Storage Device Class),如下: 图2 通过修改ISP parameter array字节0与字节1来选择应用程序升级方式,关键代码如下 图3. 图3代码有以下三点说明: - isp_mode[0]配置为0xAA时是DFU模式,否则是MSC模式(比如将其设置为0xFF) - isp_mode[1]配置为8时,使用USB FS,配置为9时,使用USB HS; - 通过Chip_IAP_ReinvokeISP函数进入ISP模式。 2.1 使用DFU进行应用程序升级 以LPC54628为例,ISP配置为DUF模式,使用USB1进行应用程序升级,修改图3中的关键代码,如下: isp_mode[0] = 0xAA; isp_mode[1] = SL_USBHS; 编译并下载程序到MCU,重新上电,连接USB1到电脑,使用DFU进行应用程序升级需要用到dfu-util工具,可以在DFU官网下载DFU工具,链接如下: NXP也在LPCScrypt中包含了dfu-util工具,如果已经下载了LPCScrypt,在bin目录下可直接使用。 进入dfu-util工具目录,将需要烧录的.bin文件拷贝至当前目录。 使用命令:./dfu-util -l 查看DFU设备 使用命令:./dfu-util -D .\lpcxpresso54628_gpio_led_output.bin-a 0 将应用程序lpcxpresso54628_gpio_led_output.bin文件下载到alt号为0的设备中,alt0是“FLASH”,alt1是“RAM”,具体操作如下: 图4. 下载成功后,复位MCU,观测到开发板LED小灯闪烁现象。 2.2 使用MSC进行应用程序升级 以LPC54628为例,ISP配置为MSC模式,使用USB1进行固件升级,修改图3中的关键代码,如下: isp_mode[0] = 0xFF; isp_mode[1] = SL_USBHS; 编译并下载程序到MCU,重新上电,连接USB1到电脑,在我的电脑中出现另一个磁盘,如下:
图5. 接着进行以下操作: - 将CRP DISABLD磁盘下原有的firmware.bin删除, - 将应用程序(例如lpcxpresso54628_gpio_led_output.bin)重命名为firmware.bin - 将应用程序firmware.bin拷贝到CRP DISABLD磁盘内 - 复位MCU,若观测到LED小灯闪烁现象,证明应用程序升级成功
注意:应用程序必须重命名,且重命名不能在CRP DISABLD磁盘内进行。
|