查看: 1965|回复: 5

[原创] LPC54xxx:ISP模式下用USB进行应用程序升级操作说明(附视频)

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20079
最后登录
2024-4-29
发表于 2021-8-2 11:37:43 | 显示全部楼层 |阅读模式
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.PNG
图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.PNG
图2
通过修改ISP parameter array字节0与字节1来选择应用程序升级方式,关键代码如下
5.jpg
图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”,具体操作如下:
3.PNG
4.
下载成功后,复位MCU,观测到开发板LED小灯闪烁现象。
2.2 使用MSC进行应用程序升级
以LPC54628为例,ISP配置为MSC模式,使用USB1进行固件升级,修改图3中的关键代码,如下:
isp_mode[0] = 0xFF; isp_mode[1] = SL_USBHS;
编译并下载程序到MCU,重新上电,连接USB1到电脑,在我的电脑中出现另一个磁盘,如下:
4.PNG

5.
接着进行以下操作:
-   将CRP DISABLD磁盘下原有的firmware.bin删除,
-   将应用程序(例如lpcxpresso54628_gpio_led_output.bin)重命名为firmware.bin
-   将应用程序firmware.bin拷贝到CRP DISABLD磁盘内
-   复位MCU,若观测到LED小灯闪烁现象,证明应用程序升级成功

注意:应用程序必须重命名,且重命名不能在CRP DISABLD磁盘内进行。





应用程序测试文件:lpcxpresso54628_gpio_led_output.bin


lpcxpresso54628_flashiap.zip

494.79 KB, 下载次数: 28, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    开心
    昨天 08:41
  • 签到天数: 148 天

    [LV.7]常住居民III

    10

    主题

    387

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1270
    最后登录
    2024-4-29
    发表于 2021-8-3 07:45:29 | 显示全部楼层
    顶一下
    加油加油
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    115
    最后登录
    2021-9-17
    发表于 2021-9-8 23:07:09 | 显示全部楼层
    好文,支持
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    115
    最后登录
    2021-9-17
    发表于 2021-9-11 23:16:14 | 显示全部楼层
    请问楼主:为啥我用您给的方式【MSC】更新了程序但是新程序跑不起来呢?。我用的USB1,按照设置也确实被PC识别成了CRP_DISABLED这个盘,我也删除了原来的firmware.bin;把我新生成的固件改名firmware.bin放到盘里,然后重新板子,但是程序跑不起,请问还有什么需要注意吗?? 我的bin文件是MDK-ARM工具生成的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20079
    最后登录
    2024-4-29
     楼主| 发表于 2021-9-16 15:24:02 | 显示全部楼层
    ji_dan 发表于 2021-9-11 23:16
    请问楼主:为啥我用您给的方式【MSC】更新了程序但是新程序跑不起来呢?。我用的USB1,按照设置也确实被P ...

    您好,请问您使用的芯片型号?如果也是LPC54628,试一下本文附件中的.bin文件呢?
    或者下载一个简单的example工程生成的.bin呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    115
    最后登录
    2021-9-17
    发表于 2021-9-17 16:30:53 | 显示全部楼层
    小恩GG 发表于 2021-9-16 15:24
    您好,请问您使用的芯片型号?如果也是LPC54628,试一下本文附件中的.bin文件呢?
    或者下载一个简单的exa ...

    以及解决了哈,论坛另一位大哥遇到过,没有校验码,用JFlash下载一次就会生成校验码
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-30 09:48 , Processed in 0.188236 second(s), 34 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表