不得不說(shuō),合宙推出的9.9元包郵Air32系列MCU開發(fā)板太香了,資源全面升級(jí),使用更暢快!
Air32的日常開發(fā)中,燒錄固件和升級(jí)必須要用串口或者調(diào)試器。那么,有沒(méi)有辦法可以用Air32自己給自己燒錄和升級(jí)呢?——答案是肯定可以,我們可以自己編寫B(tài)ootLoad,通過(guò)DFU(Device Firmware Upgrade)模式實(shí)現(xiàn)用Air32自帶的USB進(jìn)行升級(jí)。
接下來(lái),我們一起看看怎么做吧~
1
基礎(chǔ)準(zhǔn)備工作
1.1 合宙Air32小藍(lán)板:
合宙推出的BluePill開發(fā)板,封裝兼容經(jīng)典STM32F103核心板,資源和工藝全面升級(jí);兼容主流F103開發(fā)方式,提供SDK參考。
1.2 合宙Air32小黑板:
合宙經(jīng)典40PIN黑金工業(yè)風(fēng)沉金板,郵票孔設(shè)計(jì);支持UART/SPI/I2C/ADC/ DAC/I2S/CAN等接口。
出廠內(nèi)置DAPLink固件,可直接作為燒錄器。
1.3 USB Type-C線
開發(fā)常用的Type-C線即可,缺線的同學(xué)可了解合宙10元10根論斤賣的數(shù)據(jù)線。
1.4 杜邦線
開發(fā)者必備的杜邦線,這里不細(xì)說(shuō)。
1.5 Keil開發(fā)環(huán)境
合宙Air32系列支持Keil開發(fā),參見Air32F103使用手冊(cè)
1.6 DFU升級(jí)工具
2
給BluePill開發(fā)板燒錄DFU固件
2.1 開發(fā)板接線
2.2 燒錄DFU固件
將USB線插入Air32小黑板,會(huì)在【我的電腦】虛擬出一個(gè)DAPLINK盤,將DFU固件(dapboot.bin)拖入即可。
DFU固件鏈接:
https://cdn.openluat-luatcommunity.openluat.com/attachment/20230414163518568_dfutools.zip
下載完畢后,點(diǎn)開DAPLINK盤,如果沒(méi)有FAIL.TXT生成,則表示燒錄成功。
燒錄完畢后,把BluePill開發(fā)板接到電腦上,如果有DAPBoot DFU Bootloader顯示,表示DFU固件燒錄成功,此時(shí)BluePill開發(fā)板就可以通過(guò)DFU給自己升級(jí)了:
3
BluePill開發(fā)板通過(guò)DFU給自己升級(jí)
3.1選用demo
用Keil打開Air32倉(cāng)庫(kù)的GPIO_IOOut demo:
3.2設(shè)置參數(shù)
點(diǎn)開target,將IROM1的Start設(shè)置為0x8002000,Size設(shè)置為0x1E000,點(diǎn)擊OK:
3.3生成升級(jí)文件
點(diǎn)開USER,選中After Buile/Rebuild一欄的Run #1 ,內(nèi)容填入fromelf.exe --bin -o "$L@L.bin" "#L", 點(diǎn)擊OK。
此步驟是用于生成升級(jí)文件:
3.4 修改代碼
BluePill開發(fā)板上藍(lán)燈由PC13控制,將原先的代碼改為藍(lán)燈閃爍:
intmain(void)
{
RCC_ClocksTypeDefclocks;
Delay_Init(); //延時(shí)初始化
UART_Configuration(115200);//默認(rèn)為串口1,波特率115200
RCC_GetClocksFreq(&clocks);//獲取系統(tǒng)時(shí)鐘頻率
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時(shí)鐘
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編譯固件
點(diǎn)擊編譯即可,然后在OBJ目錄下找到GPIO.bin,這就是給自己升級(jí)的固件:
3.6執(zhí)行命令
將編譯出來(lái)的GPIO.bin放在dfutools目錄中,通過(guò)命令行調(diào)用dfu-util.exe即可將閃燈固件下載進(jìn)開發(fā)板:
dfu-util.exe -d 1209:DB42 -D GPIO.bin
1209 DB42為設(shè)備管理器中DAPBoot DFU Bootloader的VID 與PID:
接下來(lái)就可以看到設(shè)備藍(lán)燈閃爍啦:
3.7 燒錄了DFU固件的開發(fā)板,如何進(jìn)入DFU模式:
如果0x8002000分區(qū)后沒(méi)有代碼,則自動(dòng)進(jìn)入DFU模式;
將GPIOB - 2, 也就是boot1接到GND上再上電,進(jìn)入DFU模式。
注意事項(xiàng):
DFU固件Flash分區(qū)為0x8000000 - 0x8002000
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
4910瀏覽量
97080 -
DFU工具
+關(guān)注
關(guān)注
0文章
4瀏覽量
2723
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論