2023年9月22日 星期五

STM32 -- 使用 vial 及 vibl

參考網址 


必須使用特製的 st-flash,stlink-stm32f10-opt-bytes,提供 "program option bytes" 的功能。其在燒錄 vibl 後,可將對

From the root of vial-qmk, run python3 util/vial_generate_keyboard_uid.py in order to generate a unique Vial keyboard ID:

-----------------
ajax@stm-dev /work/vial-qmk $ python3 util/vial_generate_keyboard_uid.py 
#define VIAL_KEYBOARD_UID {0xA3, 0xA1, 0xFF, 0x29, 0xE9, 0x28, 0xCC, 0xCC}
-----------------

-----------------
ajax@stm-dev /work $ st-flash opterase
st-flash 1.5.1
2023-09-23T08:19:06 INFO usb.c: -- exit_dfu_mode
2023-09-23T08:19:07 INFO common.c: Loading device parameters....
2023-09-23T08:19:07 INFO common.c: Device connected is: F1 Medium-density device, id 0x20036410
2023-09-23T08:19:07 INFO common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2023-09-23T08:19:07 WARN common.c: Unlocking option flash

ajax@stm-dev /work/vibl/bootloader/build $ st-flash write ../../misc/opt-head.bin 0x1FFFF800
st-flash 1.5.1
2023-09-23T08:21:33 INFO common.c: Loading device parameters....
2023-09-23T08:21:33 INFO common.c: Device connected is: F1 Medium-density device, id 0x20036410
2023-09-23T08:21:33 INFO common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0 bytes (0 KiB) in pages of 1024 bytes
2023-09-23T08:21:33 WARN common.c: Unlocking option flash

ajax@stm-dev /work/vibl/bootloader/build $ st-flash write bootloader-magic_tpk_68.bin  0x8000000
------------------

使用 STM32 ST-LINK Utility 比較穩定可靠。另外,必須將開發板的 Boot0 切換到 1 (3.3V),ST-LINK Utility 才能連上。Boot0 不接時,會下拉成 0。但是使用 st-flash 則不用管 Boot0 的位置。

使用 ST-LINK Utility 寫入的順序如下。

  • opt-default.bin (size: 0x0010) => 0x1FFFF800
  • opt-head.bin (size: 0x0002)  => 0x1FFFF800
  • bootloader-magic_tpk_68.bin => 0x8000000
  • opt-tail.bin => 0x1FFFF802

在寫入保護之後,假若執行 "Erase Chip",會出現 "Some flash pages are write protected!" 的錯誤。

再次從 0x8000000 寫入資料會顯示如下的資料。

09:28:20 : [bootloader-magic_tpk_68.bin] opened successfully.
09:28:20 : [bootloader-magic_tpk_68.bin] checksum : 0x00043E9E 
09:28:29 : Some flash sectors are write protected.
           The write protection will be disabled then restored after flash programming
           in case there is no option bytes segment within the file.
09:28:29 : Memory programmed in 0s and 343ms.
09:28:29 : Verification...OK

但反覆測試,不太確定正確的該如何做。假如不成功,就試另一種方法吧。


沒有留言:

張貼留言

網誌存檔