从如下链接下载最新的blhost2.6.7软件。
MCU Bootloader | NXP Semiconductors
const uint32_t port0_pin6_config = (
/* Pin is configured as LED */
0 |
/* Selects pull-up function */
IOCON_PIO_MODE_PULLUP |
/* Standard mode, output slew rate control is enabled */
IOCON_PIO_SLEW_STANDARD |
/* Input function is not inverted */
IOCON_PIO_INV_DI |
/* Enables digital function */
IOCON_PIO_DIGITAL_EN |
/* Open drain is disabled */
IOCON_PIO_OPENDRAIN_DI);
IOCON_PinMuxSet(IOCON, 0, 6, port0_pin6_config);
这里在 pinmux.c和gpio_led_output.c文件中选择 PIO0_6引脚作为点灯输出的引脚。在MDK环境下编译生成bin文件。可以在KEIL 工程的配置选项中选择“User”选项卡,在“After Build/Rebuild”的“Run #1”中填如下内容。
C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin --output "@L.bin" "#L"
LPC55(S)1x 片上的ROM 启动支持从USB1(高速USB) 口以HID 设备类的方式更新固件。上电复位前通过将ISP 引脚(对LPC55(S)1x 来说就是PIO0_5)接地,然后按复位按键,即可在应用程序中进入ROM 的ISP 固件升级模式。
由于 elftosb 工具需要 bin 格式的固件才能加入 CRC 校验和。所以所有的固件升级都是基于 bin 文件格式的。固件更新并不会查看固件是否有 CRC 校验。blhost 升级固件需要用到如下命令,如下图所示是命令行烧录方式。
blhost.exe -u 0x1FC9,0x0022 -- flash-erase-all
blhost.exe -u 0x1FC9,0x0022 -- write-memory 0x0 gpio.bin
将需要烧录的 gpio.bin固件代码放在blhost的win文件目录下即可对目标应用代码进行加载烧录,烧录完成后可以看到板上指示灯开始闪烁。
LPC55S16 ROM bootloader 提供了 API 用于用户在应用程序代码中进入 ISP模式。使用如下函数:void (*runBootloader)(void *arg); 在 fsl_iap.c 驱动代码中添加如下代码:#define BOOTLOADER_TREE_LOCATION(0x1301fe00)
bootloader_tree_t *romApiTree =(bootloader_tree_t *)BOOTLOADER_TREE_LOCATION;
void runBootloader(void *arg)
{
romApiTree-> runBootloader(&arg);
}
然后在主程序中添加如下代码:
uint32_t arg = 0xEB110000; // 在 ISP启动,且 ISP 接口是 USB-HID
runBootloader(arg);
这样就 ROM Bootloader 将会在 ISP模式,此时可以通过上述方法在运行程序中使用 USB-HID模式烧写 Flash。