本文主要講述ubunt16.04系統搭建RTT開發stm32f107芯片:
RTT下載路徑:https://www.rt-thread.org/page/download.html
RTT版本:v3.1.3
1. 下載安裝交叉編譯工具鏈
下載gcc-arm-none-eabi
交叉編譯工具鏈,直接使用apt install gcc-arm-none-eabi
進行安裝 ,默認安裝目錄應該在 /usr/bin/arm-none-eabi-gcc-xxx, (xxx代表當前版本號)
2. 修改編譯工具
將RTT_EXEC_PATH 添加到環境變量:在/home/sean/.profile 文件末尾添加 export RTT_EXEC_PATH =/usr/bin/arm-none-eabi-gcc-4.9.3 ,保存然后重啟系統;
或者按如下操作:
編輯stm32f10x-HAL里的文件rtconfig.py
修改 CROSS_TOOL 為 gcc
修改編譯器路徑EXEC_PATH EXEC_PATH = '/usr/bin/arm-none-eabi-gcc-4.9.3'
3. 下載RT-Thread編譯工具(linux環境下構建工程一般有makeflie 和 scons 等幾種機制,RT-Thread采用scons構建項目工程,編譯直接使用scons命令即可,相當於make指令)
該系統使用scons編譯,使用 apt install scons
進行安裝
4. 在 home/sean/work目錄下新建rtthread目錄,將下載的源碼拷貝到 rtthread 目錄;
5.為了方便在系統的任意地方進行rtthread的開發,需要設置部分環境變量:
將 RTT_ROOT 加入到環境變量:在/home/sean/.profile 文件末尾添加 export RTT_ROOT=$HOME/work/rtthread/ ,保存然后重啟系統;
如不將RTT_ROOT加入到環境變量,則需要再bsp目錄下的stm32文件夾下創建新的板級支持包,然后使用 scons --dist 命令,使用此命令會在 BSP 目錄下生成 dist 目錄,這便是開發項目的目錄結構,包含了RT-Thread源碼及BSP相關工程,不相關的BSP文件夾及libcpu都會被移除,並且可以隨意拷貝此工程到任何目錄下使用。(建議使用該方法)
6.拷貝源碼庫目錄中bsp文件夾下的stm32f10x-HAL文件到 /home/sean/work 目錄,進入 /home/sean/work/stm32f10x-HAL 然后運行scons --menuconfig,(或者在源代碼庫里面的BSP文件夾里面的 stm32f10x-HAL 運用此命令)此時可以正常顯示配置界面
7. 使用scons命令編譯工程。
======================================================================================
部分問題解決:
1. 增加package包后,更新包出現如下問題
sean@ubuntu:~/work/stm32f10x-HAL$ source ~/.env/env.sh sean@ubuntu:~/work/stm32f10x-HAL$ pkgs --update Traceback (most recent call last): File "/home/sean/.env/tools/scripts/env.py", line 32, in <module> from cmds import * File "/home/sean/.env/tools/scripts/cmds/cmd_package.py", line 41, in <module> import requests File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 53, in <module> from .packages.urllib3.contrib import pyopenssl File "/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 54, in <module> import OpenSSL.SSL File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import rand, crypto, SSL File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 118, in <module> SSL_ST_INIT = _lib.SSL_ST_INIT AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
解決辦法:
使用下面指令更新pyOpenSSL
sudo python -m easy_install --upgrade pyOpenSSL
2. stm32系列參考BSP目錄:
目前RTT支持STM32芯片大部分是基於開發板類型,所以如果自己手里的板子不在支持的開發板列表中,需要自己按照BSP新建文檔新建自己的BSP(這里所謂的BSP,其實就是針對你實際開發板的工程項目……);(實測在stm32f10x-HAL文件中使用scons --menuconfig命令選擇芯片型號並不管用,menuconfig並不會智能的去配置stm32的庫文件,導致編譯的時候會報錯,為了工程穩定,建議還是按照教程從0開始新建BSP!!!)
3. stm32HAL庫升級時,CMSIS 文件最好不要覆蓋,如果需要覆蓋,需要修改對應的啟動文件跳轉指令:
比如stm32f429啟動文件需要修改如下內容
bl main 修改為 bl entry
否則開發板啟動不了。