LPC5411x固化的bootloader用于支持片上系统可编程(ISP),通过外部的引脚来选择相应的启动模式,支持USART、I2C、SPI和USB。

01_启动模式 - 图1

芯片上电复位后,最先执行里面固化的bootloader,bootloader会进行一系列的初始化,检查ISP配置引脚,进入用户程序或者进入ISP模式。

LPC5411x支持3种类型的用户程序,legacy images、Single Enhanced (SE) images、Dual Enhanced (DE) images。legacy images为老旧的镜像格式,为NXP之前产品芯片所支持,这种格式要求前面的8个32位字加起来的校验和为0x00000000,否则为无效的用户程序。SingleEnhanced (SE) images这种镜像要求用户程序在特定位置有一个有效的镜像头,表明自己的格式,是否支持CRC,CRC方式等等。Dual Enhanced (DE) images与Single Enhanced (SE) images类似,但这种格式支持在flash中存在两个用户程序,用于选择启动,可以实现用户bootloader与用户application的分离,默认启动用户application,一旦用户application被破坏,则自动启动用户bootloader,进行用户application的修复。

如果进入用户程序,bootloader会首先对用户程序进行检查,以确保用户程序是有效的,有效则启动,一旦检查失败,bootloader会自动进入ISP模式。

ISP模式支持I2C/SPI、USART、USB这三种通信方式对flash进行编程,I2C/SPI、USART方式可以查看LPC5411x的datasheet,了解其ISP的通讯协议,其中USART方式还可以配合NXP提供的FlashMagic工具,进行串口方式编程。

如果是USB方式,ISP会虚拟出一个存储设备(LPC5411x内部flash),里面有一个firmware.bin的文件,即为用户程序,可以把firmware.bin文件删除,重新把新的用户程序firmware.bin拷贝到存储设备中,firmware.bin必须满足LPC5411x支持的用户镜像格式,不然芯片启动时验证失败的用户程序会被擦除。