2023年4月27日 星期四

STM32F103 開發板改裝 stm32-hid-bootloader

 確定可以使用 ST-LINK 燒錄 STM32F103 開發板後,就可以選擇自己喜歡的 bootloader 了。在測試燒錄功能時,照著教學的步驟燒了 STM32duino-bootloader,但其要配合  Arduino IDE 使用。我只想做 QMK 的鍵盤程式,它有自己的開發環境,所以我只要單純的 bootloader,能寫入程式即可。

假如有用 Vial GUI 的話,那使用 vial-kb / vibl 會比較方便。但我才剛起步,鍵盤連個影子都沒,就用 vibl 所參考的,輕薄短小的 bootsector / stm32-hid-bootloader 吧。

和 STM32duino-bootloader 的 bin 檔為 22KB,stm32-hid-bootloader 號稱只有 4KB,真的小很多。

stm32-hid-bootloader 沒有提供編譯好的 bin 檔,所以自己得要有 stm32 的開發環境才行。用 docker 來建立開發環境是比較好的選擇,不會把自己的電腦弄亂。

參考 Beningo 的  USING DOCKER TO SETUP AN STM32 BUILD ENVIRONMENT,建立 Dockerfile 如下

------------------------------
FROM ubuntu:22.10

# Download Linux support tools
RUN apt-get update && \
         apt-get clean && \
         apt-get install -y \
             build-essential \
             wget \
             curl

# Set up a development tools directory
WORKDIR /home/dev
ADD . /home/dev

RUN wget -qO- https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 | tar -xj

ENV PATH $PATH:/home/dev/gcc-arm-none-eabi-10.3-2021.10/bin

WORKDIR /home/app
------------------------------

然後執行 "docker build -t gcc-arm ." 建立 image。

補記 -- 其實在 Ubuntu 下可以直接執行 "apt-get install gcc-arm-none-eabi" 安裝 arm 的編譯器。

執行 "docker run --rm -it --privileged -v "$(pwd):/home/app" gcc-arm bash" 即可進入 stm32 的開發環境。

下載 stm32-hid-bootloader 的專案後,它有三個目錄。進入 [bootloader] 目錄,執行 make,即可產生 HIDBOOTLOADER.bin。使用 ST-LINK 燒錄到 STM32F103 開發板。

將 boot0 連上電腦會出現裝置,訊息如下

hid-generic 0003:1209:BABE.0012: hiddev100,hidraw9: USB HID v1.11 Device [www.brunofreitas.com STM32F HID Bootloader] on usb-0000:00:14.0-7.4.3/input0

回到一般的 Linux 下,到 [cli] 目錄下,執行 make,即可產生 hid-flash 的燒錄指令。

在 stm32 的開發環境下,進入 [blinker] 目錄,執行 make,產生 BLINKER.bin。這是一個讓接在 PC13 的 LED 閃爍的簡單小程式,可以自己修改一下,改變閃爍頻率,確認一切正常。

在 Linux 的環境下,將 boot0 跳線到 1,執行燒錄。

----------------------------
$ sudo ../cli/hid-flash BLINKER.bin 
HID-Flash v1.4a - STM32 HID Bootloader Flash Tool
(c) 04/2018 - Bruno Freitas - http://www.brunofreitas.com/
Sending reset pages command...
Flashing firmware...
Ok!
---------------------------- 

再將 boot0 跳線到 0,重新接上電源,即可看到 LED 按照 blinker 的程式在閃爍著。

接下來,就可以開發 OMK 的鍵盤了。至於跳線 pin 會用指撥開關來代替,比較方便。


沒有留言:

張貼留言

網誌存檔