RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)
RT-Thread移植(基于STM32F103ZET6)? ? ??
? ? ? ? ?因為學習RT-Thread的原因,需要把RT-Thread移植到STMF103ZET6上,在RT-Thread官網下載的原文件中實際上已經STM32F10x的工程了,只需簡單的幾步就可以完成在STM32F103ZET6上的運行,但是這樣一來就對整個原文件的結構不是很了解,但是因為是學習,所以我們就不要太在意麻煩了。本文利用Keil5,新建一個工程,然后在工程中添加RT-Thread中的文件。
? ? ? ? 因為自身水平有限,所以可能工程建立的各個文件結構不是特別合理,或者還有很多地方的設置沒有到位,但是這就是我目前對各個文件的理解,所以僅供參考。本文中有些文件不知道有什么作用,所以有些文件的添加參考了官網給的工程。待日后學的更加深入的時候,再來修改文中不合理的地方,還望諒解。
一、在RT-Thread官方網上下載操作系統源碼(https://www.rt-thread.org/page/download.html)
這里我下載的是2.0.1版本,文件結構如下:
Bsp ---- 板級支持包,針對不同的板子規劃出的不同的驅動文件;
components ---- 包含RT-Thread的各個組件:finsh、文件系統,等等*;
documentation ---- 一些介紹性文檔,包括代碼的風格要求;
examples ---- 各種示例代碼,是很好的學習素材;
include ---- 一些頭文件;
libcpu---- 各種CPU體系結構下的相關移植;
src ---- RT-Thread內核核心代碼;
tools ---- 使用Scon自動化創建工具時需要的一些文件;
AUTHORS ---- RT-Thread開發者列表;
COPYING ---- 權限說明;
? ? ? *:我的理解是就相當與功能擴展,比如你需要finsh就加進去,不用就不加,這樣可以減少最后可執行文件的體積,在這里我們使用了finsh,方便學習,也正好學習怎么添加組件。
二、建立工程文件夾(RT-Thread2.0.1_STM32F103ZE?)
1、在桌面上建立一個?RT-Thread2.0.1_STM32F103ZE 文件夾;
2、打開?RT-Thread2.0.1_STM32F103ZE 文件夾,建立以下文件夾:
application :存放應用程序
bsp :存放板級支持包和底層驅動
components :存放操作系統組件
DeviceDrivers :設備框架
libcup :各種不同CPU的內核代碼
MDK-OBJ :存放kile5在編譯過程中生成的中間文件
RT_Thread-2.0.1 :存放操作系統的相關文件
?完成后如下圖所示:
3 打開kile5建立工程
目錄定位到桌面上的?RT-Thread2.0.1_STM32F103ZE? 過程名稱為 RTT_F103ZE?選擇芯片?ST32F103ZE?
Options for Target >>> Target >>> 設置外部晶振8.0MHz
Options for Target >>> Output >>> Select Folder for Objects >>> 定位到 ?桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目錄下
Options for Target >>> Listing >>> Select Folder for Objects >>> 定位到 ?桌面:RT-Thread2.0.1_STM32F103ZE\MDK-OBJ目錄下
Options for Target >>> c/c++ >>> 添加宏定義 STM32F10X_HD, USE_STDPERIPH_DRIVER(逗號隔開)
Options for Target >>> Linker >>> Misc controls >>> 添加 --keep __fsym_* --keep __vsym_* ? --keep __rt_init*(保證編譯時不會濾除掉工程沒有調用的代碼)
暫時就這樣,其余項保持默認就好,等在工程目錄下添加完文件后再建立工程結構,和添加頭文件搜索路徑就好了;
4 開始添加各個文件(根據之前建立的工程文件夾中的目錄含義添加文件,這樣比較有條理)
以下我就以文件路徑來表示復制過程
2.0.1\bsp\stm32f10x\applications >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\application
application.c 、startup.c
2.0.1\bsp\stm32f10x >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\bsp
drivers 、Libaries
2.0.1\bsp\stm32f10x >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1
rtconfig.h
2.0.1\components >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\components
除drivers外的全部文件
2.0.1\components >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers
drivers
2.0.1\libcpu\arm >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\libcup
common 、cortex-m3
2.0.1 >>>?Desktop\RT-Thread2.0.1_STM32F103ZE\RT_Thread-2.0.1
src 、include
這里在 2.0.1\components目錄下有一個叫drivers 的文件夾,按照他的意思應該是設備驅動框架相關文件,但是有一點不理解為什么放在組件文件夾下;所以在復制過程中我把它單獨拿了出來,放在了Desktop\RT-Thread2.0.1_STM32F103ZE\DeviceDrivers文件夾下,比較適合我來理解,該目錄下還有一個叫CMSIS的文件夾,暫時也不知道是干什么的,就一起放在Desktop\RT-Thread2.0.1_STM32F103ZE\components下了;在2.0.1\bsp\stm32f10x 目錄下也有一個叫 drivers 的文件夾,這個文件夾實際上就是存放了符合設備框架的板級驅動,這樣應用程序就可以控制各種設備了。我們以后也可以寫自己的板級驅動,然后這樣在應用中就可以調用不同的設備。這里工程的架構差不多就出來了,打開之前建立的工程,打開Manage Project Items開始添加文件
5 添加工程文件以及設置頭文件搜索路徑
首先Groups設置如下:
這里可以看到和我的文件夾的關系很像(都有application,bsp,components...而且作用都像字面意思一樣),這里應該是我自己的習慣吧,這樣添加和刪除文件比較簡單。條理也比較清晰。
現在就是在Groups里添加原文件了
application :application.c ?starup.c
- 文件就在原文件夾application下
bsp :stm32庫函數所有*.c源文件(stm32f10x_adc.c?stm32f10x_rcc.c.....) ?core_cm3.c ?system_stm32f10x.c ?startup_stm32f10x_hd.s ? stm32f10x_conf.h(這里是為了比較好修改) ??stm32f10x_it.c
- 這些文件在bsp目錄下都可以找到
components : ?components.c
- 在components/init目錄下
DeviceDrivers :?DeviceDrivers >>> driver >>> src 下的全部文件 ? ?DeviceDrivers >>> driver 下用到哪個設備框架就加哪個設備原文件(這里加了serial,因為要用到串口) ?
- DeviceDrivers >>> driver 目錄下都可以找到
contex-m3 : ?backtrace.c ?div0.c ?showmem.c ?context_rvds.S ?cpuport.c
- libcpu目錄下都可以找到
RT-Thread-2.0.1 :RT_Thread-2.0.1 >>> src 目錄下所有文件
- RT_Thread-2.0.1 >>> src 目錄下可以找到
finsh : components >>> finsh目錄下所有*.c文件
- components >>> finsh目錄下都能找到
Drivers : board.c ?led.c ?usart.c
- bsp >>> drivers目錄下都可以找到
頭文件搜索路徑設置如下圖:
至此整個過程就建立起來了,接下來就進行驗證
三、編譯燒寫,驗證
驗證就利用已經寫好的led實驗來驗證 我的板子的led燈在PA2,所以打開led.c文件做一些修改
- 設置生成hex文件
- 點擊build按鈕
- 編譯完后0錯誤1警告
之后再按build ? 0錯誤0警告
- 把生成的hex文件燒寫進板子
- 打開SecureCRT連接串口,按下復位
串口輸出:
輸入list(),回車
到此,移植驗證結束,可以愉快的學習RT_Thread了!
總結
以上是生活随笔為你收集整理的RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机裸机实用组件--LED
- 下一篇: python opencv 图像网络传输