本帖最后由 小恩GG 于 2022-7-15 18:28 编辑
在使用LPC54(s)0xx的DFU模式下载镜像文件时,实际下载到了内部SRAM,并非外部FLASH(LPC54(S)0xx没有内部FLASH),掉电丢失。而客户在实际生产中,需要将镜像文件烧写到外部FLASH,所以本文主要介绍如何利用USB将镜像文件烧写到外部FLASH. 方法很简单,先通过 USB ISP DFU 模式将 flashloader 烧写到 SRAM,再通过 flashloader 烧写镜像文件到外部FLASH。硬件只需要一台电脑,一根USB数据线,开发板。
以LPCxpresso54s018-EVK举例,具体操作流程如下: 1. 下载LPCxpresso54S018的SDK包。 2. 编译flashloader工程生成可执行文件flashloader.bin > 工程路径为sdk\boards\lpcxpresso54s018\bootloader_examples\flashloader 3. 使用dfu-util.exe或IDE将flashloader.bin 加载到RAM中。 > 若外部FLASH为空白状态(新出厂或者全片擦除后的芯片),可不用配置管脚,直接将LPC54S018设备的USB1(HS)和PC相连接,就可以进入USB1 DFU启动模式(下文有详细解释)。若外部FLASH存在内容,可通过配置ISP管脚后复位芯片,使芯片进入USB1 DFU启动模式。 启动模式 | | | | | | | | | USB DFU类用于通过USB1端口将镜像文件下载到SRAM中 |
>将LPC54S018设备USB1端口和PC相连接。 >加载flashloader.bin 的命令:$ dfu-util.exe –Dflashloader.bin 4. 使用 blhost 编程/擦除 LPC54S018连接的外部FLASH。 > 保持LPC54S018 USB1端口和PC机的连接,执行下载的二进制文件,flashloader等待接收上位机发送命令。 > blhost -u 0x1fc9,0x01a2 -- get-property 12 > blhost -u 0x1fc9,0x01a2 -- fill-memory 0x2000d000 40xc0000004 > blhost -u 0x1fc9,0x01a2 -- configure-memory 0xa 0x2000d000 > blhost -u 0x1fc9,0x01a2 -- get-property 25 0xa > blhost -u 0x1fc9,0x01a2 -t 100000 -- flash-erase-region0x10000000 0x100000 > blhost -u 0x1fc9,0x01a2 -t 100000 -- write-memory0x10000000 xxx.bin 注意:xxx.bin 是需要下载到外部FLASH的目标文件。
补充: 在自启动模式下,也就是ISP 三个引脚都为高,或者说LPCxpresso54s018-EVK开发板未按下任何一个ISP键时,ROM会按外部SPIFI FLASH、外部 SPI FLASH,外部并行FLASH的顺序寻找并启动有效镜像文件。如果没有找到有效的镜像,LPC54(S)0xx会根据OTP ISP_MODE位的配置进入相应的ISP下载模式。
而OTP ISP_MODE两位默认配置00,即USB1 DFU 下载模式:
所以对于外部FLASH为空白,或者没有任何有效的镜像文件时,只需要用一根USB数据线连接USB1和PC,就可以使用LPC54(S)0xx的USB1 DFU ISP 下载功能。
|