不得不說,合宙推出的9.9元包郵Air32系列MCU開發板太香了,資源全面升級,使用更暢快!
Air32的日常開發中,燒錄固件和升級必須要用串口或者調試器。那么,有沒有辦法可以用Air32自己給自己燒錄和升級呢?——答案是肯定可以,我們可以自己編寫BootLoad,通過DFU(Device Firmware Upgrade)模式實現用Air32自帶的USB進行升級。
接下來,我們一起看看怎么做吧~
1
基礎準備工作
1.1 合宙Air32小藍板:
合宙推出的BluePill開發板,封裝兼容經典STM32F103核心板,資源和工藝全面升級;兼容主流F103開發方式,提供SDK參考。
1.2 合宙Air32小黑板:
合宙經典40PIN黑金工業風沉金板,郵票孔設計;支持UART/SPI/I2C/ADC/ DAC/I2S/CAN等接口。
出廠內置DAPLink固件,可直接作為燒錄器。
1.3 USB Type-C線
開發常用的Type-C線即可,缺線的同學可了解合宙10元10根論斤賣的數據線。
1.4 杜邦線
開發者必備的杜邦線,這里不細說。
1.5 Keil開發環境
合宙Air32系列支持Keil開發,參見Air32F103使用手冊
1.6 DFU升級工具
2
給BluePill開發板燒錄DFU固件
2.1 開發板接線
2.2 燒錄DFU固件
將USB線插入Air32小黑板,會在【我的電腦】虛擬出一個DAPLINK盤,將DFU固件(dapboot.bin)拖入即可。
DFU固件鏈接:
https://cdn.openluat-luatcommunity.openluat.com/attachment/20230414163518568_dfutools.zip
下載完畢后,點開DAPLINK盤,如果沒有FAIL.TXT生成,則表示燒錄成功。
燒錄完畢后,把BluePill開發板接到電腦上,如果有DAPBoot DFU Bootloader顯示,表示DFU固件燒錄成功,此時BluePill開發板就可以通過DFU給自己升級了:
3
BluePill開發板通過DFU給自己升級
3.1選用demo
用Keil打開Air32倉庫的GPIO_IOOut demo:
3.2設置參數
點開target,將IROM1的Start設置為0x8002000,Size設置為0x1E000,點擊OK:
3.3生成升級文件
點開USER,選中After Buile/Rebuild一欄的Run #1 ,內容填入fromelf.exe --bin -o "$L@L.bin" "#L", 點擊OK。
此步驟是用于生成升級文件:
3.4 修改代碼
BluePill開發板上藍燈由PC13控制,將原先的代碼改為藍燈閃爍:
intmain(void)
{
RCC_ClocksTypeDefclocks;
Delay_Init(); //延時初始化
UART_Configuration(115200);//默認為串口1,波特率115200
RCC_GetClocksFreq(&clocks);//獲取系統時鐘頻率
PRINTF_LOG("\n");
PRINTF_LOG("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhz\n",
(float)clocks.SYSCLK_Frequency/ 1000000, (float)clocks.HCLK_Frequency/ 1000000,
(float)clocks.PCLK1_Frequency/ 1000000, (float)clocks.PCLK2_Frequency/ 1000000, (float)clocks.ADCCLK_Frequency/ 1000000);
PRINTF_LOG("AIR32F103 GPIO IO Out Tset.\n");
GPIO_Configuration();
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
Delay_Ms(200);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
Delay_Ms(200);
}
}
voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC時鐘
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//速度50MHz
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //輸出模式
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC.13
}
3.5編譯固件
點擊編譯即可,然后在OBJ目錄下找到GPIO.bin,這就是給自己升級的固件:
3.6執行命令
將編譯出來的GPIO.bin放在dfutools目錄中,通過命令行調用dfu-util.exe即可將閃燈固件下載進開發板:
dfu-util.exe -d 1209:DB42 -D GPIO.bin
1209 DB42為設備管理器中DAPBoot DFU Bootloader的VID 與PID:
接下來就可以看到設備藍燈閃爍啦:
3.7 燒錄了DFU固件的開發板,如何進入DFU模式:
如果0x8002000分區后沒有代碼,則自動進入DFU模式;
將GPIOB - 2, 也就是boot1接到GND上再上電,進入DFU模式。
注意事項:
DFU固件Flash分區為0x8000000 - 0x8002000
-
開發板
+關注
關注
25文章
4949瀏覽量
97204 -
DFU工具
+關注
關注
0文章
4瀏覽量
2729
發布評論請先 登錄
相關推薦
評論