國慶節快樂!
序
本來都已躺在牀上準備睡了,但是心情久久不能平靜,於是在22:39又爬起來,把第二篇上手文章寫一下。
前一篇文章寫了如何在MacOS上使用STM32CubeIDE進行搭建開發環境以及代碼編譯。但是對於習慣於Linux上開發的我,還是不太習慣使用這種IDE集成環境。
今天我則 使用GCC進行編譯與燒錄。
準備
- 系統源碼 可以使用
git clone https://github.com/Tencent/TencentOS-tiny.git
- GCC交叉編譯鏈
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
我當前使用的是 gcc-arm-none-eabi-8-2019-q3-update 版本百度雲盤:鏈接:https://pan.baidu.com/s/1IMYH_pq5Je7fmnz4YvBqPg 密碼:ot50
- stlink 我下載的版本是 stlink-1.3.0-macosx-amd64
百度雲盤:鏈接:https://pan.baidu.com/s/1_HEmlWDU-MeQYwEbIyHjZA 密碼:vnyr
- 就這些了
安裝
其實說是安裝,並談不上。GCC交叉編譯鏈解壓縮之後,添加到系統環境變量PATH當中即可,stlink同樣的,也是解壓縮之後,在解壓出的bin文件夾下就可以找到可執行文件。源碼……沒啥可說的。
編譯
使用GCC編譯很簡單,我們進入到Demo路徑:
➜ ~ cd tiny/TencentOS-tiny/board/TencentOS_tiny_EVB_MX/GCC/hello_world
➜ hello_world git:(master) ✗ make
根據電腦配置不同,等待幾十秒即可看到編譯成功,生成了對應的固件程序。
下載固件
進入到stlink的目錄
➜ stlink-1.3.0-macosx-amd64 ll
total 0
drwxr-xr-x 6 lee staff 192B 10 1 15:51 bin
drwxr-xr-x 4 lee staff 128B 1 28 2017 include
drwxr-xr-x 7 lee staff 224B 1 28 2017 lib
drwxr-xr-x 3 lee staff 96B 1 28 2017 usr
➜ stlink-1.3.0-macosx-amd64 cd bin
➜ bin
然後使用 st-flash 命令進行燒寫固件。因爲對燒寫固件的不熟悉,這裏我耗費了不少時間。
第一點就是,之前我根本不知道用哪個程序進行下載固件,在網上查了不少資料,後來靈光一現,搜索到了st-link這個程序。
第二點,下載使用什麼命令。這個比較簡單了,直接執行程序即可打印出幫助信息:
➜ bin ./st-flash
invalid command line
stlinkv1 command line: ./st-flash [--debug] [--reset] [--format <format>] {read|write} /dev/sgX <path> <addr> <size>
stlinkv1 command line: ./st-flash [--debug] /dev/sgX erase
stlinkv2 command line: ./st-flash [--debug] [--reset] [--serial <serial>] [--format <format>] {read|write} <path> <addr> <size>
stlinkv2 command line: ./st-flash [--debug] [--serial <serial>] erase
stlinkv2 command line: ./st-flash [--debug] [--serial <serial>] reset
Use hex format for addr, <serial> and <size>.
Format may be 'binary' (default) or 'ihex', although <addr> must be specified for binary format only.
./st-flash [--version]
➜ bin
第三點就是,下載地址應該是多少?這裏我查詢了芯片手冊,羣裏諮詢了羣友,後來發現,在使用STM32CubeIDE下載程序的時候,其實已經有了提示信息了:
所以,在這裏我們獲取到必要信息後,執行命令:
➜ bin ./st-flash write /Users/lee/tiny/TencentOS-tiny/board/TencentOS_tiny_EVB_MX/GCC/hello_world/build/TencentOS_tiny.bin 0x8000000
看到打印輸出:
st-flash 1.3.0
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Loading device parameters…
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Device connected is: L43x device, id 0x10016435
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: SRAM size: 0xc000 bytes (48 KiB), Flash: 0x40000 bytes (256 KiB) in pages of 2048 bytes
2019-10-01T23:21:09 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Attempting to write 37816 (0x93b8) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08009000 erasedEraseFlash - Page:0x12 Size:0x800
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Finished erasing 19 pages of 2048 (0x800) bytes
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Starting Flash write for F2/F4/L4
2019-10-01T23:21:10 INFO /Users/jerry/Downloads/stlink-master/src/flash_loader.c: Successfully loaded flash loader in sram
size: 32768
size: 5048
2019-10-01T23:21:11 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Starting verification of write complete
2019-10-01T23:21:11 INFO /Users/jerry/Downloads/stlink-master/src/common.c: Flash written and verified! jolly good!
➜ bin
提示下載成功。
運行
下載完程序之後,板子自己就可以重啓運行程序,有時候可能需要自己手工按下重啓或者重新上電,然後就可以看到剛纔編譯的程序運行起來了。
是不是比使用IDE簡單?!哈?!
疑問
雖然程序運行起來了但其實我到現在也還是不太明白,希望有清楚的朋友告知我:
hex bin elf 三種文件,爲什麼只有下載bin文件纔有效?
hex文件也可以下載成功,但是上電之後沒有任何反應,這讓我覺得很奇怪。