高手教你如何編寫STM32 bootloader
今天教大家編寫STM32的bootloader,其實(shí)編寫bootloader主要事項(xiàng)有以下:
1、為你的bootloader程序選擇存儲(chǔ)器地址,因?yàn)镾TM32的存儲(chǔ)器FLASH存儲(chǔ)程序代碼空間為512K,需要進(jìn)行劃分。
2、如果需要使用JTAG在線調(diào)試,則需要配置區(qū)域:
3、為您的用戶程序選擇合適的存儲(chǔ)空間:
同時(shí)配置在線調(diào)試區(qū)域:
4、bootloader程序編寫基本流程如下:
1)檢測(cè)有無(wú)需要更新的標(biāo)志,用戶可自定義。比如說(shuō)讀取flash某位置存儲(chǔ)的字節(jié)作為標(biāo)志位。
2)如需更新,則調(diào)用STM32的FLASH程序擦鞋用戶代碼部分。
3)將新的bin文件(即2進(jìn)制文件直接燒寫進(jìn)去,需要將keil生成的hex文件轉(zhuǎn)換為bin文件,然后存儲(chǔ)到外擴(kuò)展的flash中)寫入到STM32自帶的FLASH中去,記住需要與上述設(shè)置的用戶代碼存儲(chǔ)區(qū)一致。
4)更新成功后再跳轉(zhuǎn)至用戶程序。
5、用戶程序需要注意一點(diǎn),需要在程序運(yùn)行前重新設(shè)置中斷向量表,即:NVIC_SetVectorTable()。
6、用STM32自帶的燒錄軟件進(jìn)行燒錄時(shí),需要修改項(xiàng)目如下:
1)打開(kāi)安裝后目標(biāo)文件中的map文件夾,我們所用的STM32為512Kflash,所以選取STM32_High-density_512K.STmap,將其分解為兩個(gè)STmap文件(此文件可用記事本 打開(kāi))
STmap文件中,扇區(qū)是以每2K為一page來(lái)顯示的,所以boot區(qū)我們只需要到page7,用戶區(qū)我們需要page8到最后。
修改完成后再次打開(kāi)此軟件會(huì)發(fā)現(xiàn)多出了兩個(gè)flash選項(xiàng),可以根據(jù)此處來(lái)選擇需要存儲(chǔ)的代碼區(qū)。
然后還有一處需要修改:
編輯:admin 最后修改時(shí)間:2018-05-18