固件处理
离线烧录烧录 eFuse 的固件要有一些特殊的操作以提示烧录板烧录结果:
烧录板配置
烧录板的配置应遵循尽量简洁的原则,按下面步骤配置烧录板:
-
通过 bm 命令打开 BootLoader 的配置界面。
-
在 Board options 界面打开如下配置项,其他配置项可以关闭。
-
Uart0
-
Using SPI0
-
Using SDMC1
-
Using DMA
-
Using WRI
-
Using RTC
-
Using Watchdog
-
Using Efuse/SID
-
Using Syscfg: 打开
-
Using Syscfg: 同时打开 SiP Flash Enable 和 SYSCFG LDO1X enable
-
-
在 中打开 Upgrading by SD Card。
GPIO 控制
由于 GPIO 默认为低电平,无需进行预控制操作,直接在代码中进行逻辑处理即可。具体代码修改如下:
-
PA4 为烧录成功指示灯,显示绿灯
-
PA5 为烧录失败指示灯,显示红灯
--- a/application/baremetal/bootloader/main.c +++ b/application/baremetal/bootloader/main.c @@ -147,6 +147,28 @@ int main(void) console_init(); console_set_usrname("aic"); + int pin_ok; + int pin_fail; + + pin_ok = hal_gpio_name2pin("PA.4"); + hal_gpio_set_func(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), 1); + hal_gpio_direction_output(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok)); + hal_gpio_set_value(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), 0); + + pin_fail = hal_gpio_name2pin("PA.5"); + hal_gpio_set_func(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), 1); + hal_gpio_direction_output(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail)); + hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), 0); + + int result = console_run_cmd("efuse_spienc"); // 加上此句,examples_bare/test-efuse/efuse_burn_spienc_key_cmd.c + + if(result == 0) + hal_gpio_set_value(GPIO_GROUP(pin_ok), GPIO_GROUP_PIN(pin_ok), 1); + else + hal_gpio_set_value(GPIO_GROUP(pin_fail), GPIO_GROUP_PIN(pin_fail), 1); + + return 0; +
