固件处理
离线烧录烧录 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;
+
