TencentOS-Tiny之GCC

國慶節快樂!

本來都已躺在牀上準備睡了,但是心情久久不能平靜,於是在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文件也可以下載成功,但是上電之後沒有任何反應,這讓我覺得很奇怪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章