STM32F7 GCC 開發筆記 -- example 專案
在 Linux 或是 Mac OSX 上面用 GCC 開發 STM32F7,在開始之前要先去 ARM 官網 download gcc、安裝相關工具(make、st-flash...)、買開發板。之後就是要找到一個可以build 出 firmware 檔的專案了。
最初我也是到 SDK 裡面的 example 找看看有沒有直接可以 build 成功的專案,後來發現都沒有 makefile。無奈之下只好自已寫了,我把這個樣板專案放到 github 上。
內附的 README.md 有簡單地說明在 ubutnu 64 bits 的作業系統之下如何安裝才能成功地build 出 firmware.bin。在 mac 系統下安裝的方式可能不太一樣,但是因為我手上沒有"乾淨" 的 mac 環境,所以就沒寫在 mac 環境下如何準備...(只記得都是靠 brew 指令),等哪一天買新的 mac 之後再來補好了。
首先安裝常用的工具:
再來就是把專案抓回來,順便進入資料夾 stm32dev 。
會看到資料夾 "stm32dev/stm32f7" 這個才是 STM 的專案資料夾,裡面的 Makefile 設置會需要把 SDK 和 gcc 放置在 stm32dev 這個資料夾。
所以接下來就是去 ARM 官網抓特定版本的 gcc 回來。這邊用的版本是 arm-none-eabi-gcc 4.8..4 for linux ,可以使用 wget 指令抓下來,順便解壓縮:
再來就是去 ST 官網抓 STM32CubeF7 SDK 1.15 ,不用錢但是要在官網註冊帳號。抓到資料夾 stm32dev 後,就解壓縮:
這個時候應該就可以進去 stm32f7 資料夾 build 看看了
成功的話會在 build 資料夾下看到 firmware.bin 這個檔案。
STM32CubeF7 SDK 和 arm gcc 的位置要更換的就,就自行修改 Makefile 裡下這兩個變數
目前只能用常見的 HAL 部份,像是 lwip、 freeRTOS、 fatfs 之類這種第三方的還沒有完全整合進去,之後會再慢慢加進去 Makefile。
說明一下,之所以想開這個系列,是因為官方沒有提供寫好的 Makefile。官方提供的 example project 都沒有看到 Makefile。後來新提供的什麼CubeMX 的工具可以產生專案,但是對我來說過於複雜,所以在還沒摸索到能否產生 Makefile 之前就累了。於是索性就自已花點時間建個樣板專案並寫個 Makefile。發現花的時間還比較少...
所以我的整個開發環境就是,使用 vim + ctag + make,然後 compile 就使用 arm 官方的 gcc。然後全部都在 command line 環境底下開發。總之就是完全脫離 windows 了~~,GUI 什麼的也用不太習慣。話說以前第一次玩 STM32 的 MCU 時竟然是先從買IC、layout、洗板子、焊接完之後才開始coding,是種由先硬後軟的方式在摸索。會這樣子完全是因為閉門造車,所以花了很久的時間。說實在的,早知就就先買一塊官方出的開發板這樣還比較省事。
最初我也是到 SDK 裡面的 example 找看看有沒有直接可以 build 成功的專案,後來發現都沒有 makefile。無奈之下只好自已寫了,我把這個樣板專案放到 github 上。
內附的 README.md 有簡單地說明在 ubutnu 64 bits 的作業系統之下如何安裝才能成功地build 出 firmware.bin。在 mac 系統下安裝的方式可能不太一樣,但是因為我手上沒有"乾淨" 的 mac 環境,所以就沒寫在 mac 環境下如何準備...(只記得都是靠 brew 指令),等哪一天買新的 mac 之後再來補好了。
在 ubuntu 下的安裝簡介
測議的環境是 ubuntu 14.04 (64 bit) 版本 在 docker 下測試。一般不大會有問題才是。首先安裝常用的工具:
sudo dpkg --add-architecture i386
sudo update
sudo apt-get install git build-essential cmake libc6:i386 libncurses5:i386 libstdc++6:i386 wget unzip
再來就是把專案抓回來,順便進入資料夾 stm32dev 。
git clone https://github.com/onionys/STM32_GCC_PROJ_TEMPLATE.git stm32dev
cd stm32dev
會看到資料夾 "stm32dev/stm32f7" 這個才是 STM 的專案資料夾,裡面的 Makefile 設置會需要把 SDK 和 gcc 放置在 stm32dev 這個資料夾。
所以接下來就是去 ARM 官網抓特定版本的 gcc 回來。這邊用的版本是 arm-none-eabi-gcc 4.8..4 for linux ,可以使用 wget 指令抓下來,順便解壓縮:
wget https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
tar jxvf gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2
再來就是去 ST 官網抓 STM32CubeF7 SDK 1.15 ,不用錢但是要在官網註冊帳號。抓到資料夾 stm32dev 後,就解壓縮:
unzip en.STM32Cube_FW_F7_V1.15.0.zip
這個時候應該就可以進去 stm32f7 資料夾 build 看看了
cd stm32f7
make all
成功的話會在 build 資料夾下看到 firmware.bin 這個檔案。
STM32CubeF7 SDK 和 arm gcc 的位置要更換的就,就自行修改 Makefile 裡下這兩個變數
...
STM32SDK = ../STM32Cube_FW_F7_V1.15.0
...
ARM_GCC_PATH= ../gcc-arm-none-eabi-4_8-2014q3/bin
...
目前只能用常見的 HAL 部份,像是 lwip、 freeRTOS、 fatfs 之類這種第三方的還沒有完全整合進去,之後會再慢慢加進去 Makefile。
說明一下,之所以想開這個系列,是因為官方沒有提供寫好的 Makefile。官方提供的 example project 都沒有看到 Makefile。後來新提供的什麼CubeMX 的工具可以產生專案,但是對我來說過於複雜,所以在還沒摸索到能否產生 Makefile 之前就累了。於是索性就自已花點時間建個樣板專案並寫個 Makefile。發現花的時間還比較少...
所以我的整個開發環境就是,使用 vim + ctag + make,然後 compile 就使用 arm 官方的 gcc。然後全部都在 command line 環境底下開發。總之就是完全脫離 windows 了~~,GUI 什麼的也用不太習慣。話說以前第一次玩 STM32 的 MCU 時竟然是先從買IC、layout、洗板子、焊接完之後才開始coding,是種由先硬後軟的方式在摸索。會這樣子完全是因為閉門造車,所以花了很久的時間。說實在的,早知就就先買一塊官方出的開發板這樣還比較省事。
留言
張貼留言