嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > LPC5516JBD100 使用USB-HID ISP方式烧录固件代码

LPC5516JBD100 使用USB-HID ISP方式烧录固件代码

   从如下链接下载最新的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。