確定可以使用 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 會用指撥開關來代替,比較方便。
沒有留言:
張貼留言