天天看點

1319_STM32F103序列槽BootLoader移植

全部學習彙總: ​​GreyZhang/g_stm32f103: some hack for stm32f103 (github.com)​​

最近用了一段時間的序列槽,感覺在調試方面非常有幫助。我也反複對比Arduino,其實Arduino的流行我覺得開發以及調試環境簡單是其中一個很重要的原因。Arduino本身有一個還比較好用的BootLoader,不管怎麼說,至少我在使用的時候沒有發現過它的問題。我覺得,加強版的STM32F103其實也可以加一個BootLoader,從此逐漸扔掉調試器。

我在網絡上找到了STM32Duino,這個後面我也會嘗試用一下。同時也找到了一個序列槽BootLoader,我覺得序列槽BootLoader應該是一個比較幹脆的方案。

我找到的開源項目連結: ​​ferenc-nemeth/stm32-bootloader: UART bootloader for STM32 microcontroller. (github.com)​​

這個項目的功能開發直接基于STM32的SDK,是以如果使用ST的開發工具做一個遷移的話非常簡單。我使用了STM32 CubeIDE來做了這個遷移。整個移植幾乎全都是複制替換,再加上幾個管腳資訊的修改等。

1319_STM32F103序列槽BootLoader移植

首先,這裡的修改是把最初的時鐘源切換成晶振。其實,針對BootLoader來說,這個修改改不改都行,尤其是自己hack的情況下。

1319_STM32F103序列槽BootLoader移植

這裡的修改,主要是為了能夠支援調試功能。

1319_STM32F103序列槽BootLoader移植

這裡開啟了一個序列槽的功能,這個也是接下來進行BootLoader傳輸的通信方式。

其他的暫且不看了,隻是幾個LED燈或者管腳配置,都比較簡單。

我使用了一個STM32F103的闆子,直接使用這個闆子進行調試還是很簡單的。幾個檔案拷貝,拿來主義即可。

1319_STM32F103序列槽BootLoader移植

上面的6個檔案是來自于前面的連結的。

1319_STM32F103序列槽BootLoader移植

這個是主函數中的初始化以及循環的一部分,我這裡暫時沒有全抄,目的是想預設進BootLoader,友善我調試。

1319_STM32F103序列槽BootLoader移植

這裡增加的邏輯是為了能夠有幾秒鐘的時間,選擇是否進入BootLoader的刷寫模式。

1319_STM32F103序列槽BootLoader移植

這幾個配置是我編譯成功後又改的,我發現目前的BootLoader的Flash占用還是很大的,後面可能有一個優化項。

1319_STM32F103序列槽BootLoader移植

編譯成功後的提示資訊,可以看出來資源占用不少。保險起見,我先給BootLoader配置設定了12KB的Flash。

1319_STM32F103序列槽BootLoader移植

這個是連接配接上序列槽調試工具的效果。這裡需要說明一下,我試了很多個序列槽工具,花了大量的時間去調試代碼。最後發現不同的序列槽工具行為不同,從連結中找到的這個是符合設計協定的要求的。