新建FreeRTOS工程——軟件仿真/裸機系統與多任務系統

一、新建FreeRTOS工程——軟件仿真

1、新建本地工程文件

在開始新建工程之前,我們先在本地電腦端新建一個文件夾用於存放工程。文件夾名字我們取爲“” FreeRTOS ”(名字可以隨意取) ,然後再在該文件夾下面新建各個文件夾和文件:
在這裏插入圖片描述
Doc:用於存放對整個工程的說明文件.readme.txt。
Project:用於存放新建的工程文件。
freertos:
include:存放頭文件
portable:存放與處理器相關的接口文件,也叫移植文件(目前添加的RVDS/ARM_CM3)。
User:存放 main.c 和其它的用戶編寫的程序, main.c 第一次使用需要用戶自行新建。

2、配置開發環境(Keil5)

1、新建工程,取名爲Fire_FreeRTOS。

2、Select Device For Target

當命名好工程名稱,點擊確定之後會彈出 Select Device for Target 的選項框,讓我們選擇處理器,這裏我們選擇 ARMCM3。
在這裏插入圖片描述

3、Manage Run-Time Environment

選擇好處理器,點擊 OK 按鈕後會彈出 Manage Run-Time Environment選項框。這裏我們在 CMSIS 欄選中 CORE 和 Device 欄選中 Startup 這兩個文件即可。
在這裏插入圖片描述
點擊OK之後會發現剛剛我們選擇的 CORE 和Startup 這兩個文件就會添加到我們的工程組裏面。
在這裏插入圖片描述
其中:
startup_ARMCM3.s是彙編編寫的啓動文件;
system_ARMCM3.c是 C 語言編寫的跟時鐘相關的文件。

4、在Keil工程裏新建文件組

在工程裏面添加 user、FreeRTOS/ports、 FreeRTOS/sources 和 doc 這幾個文件組,用於管理文件.
在這裏插入圖片描述

5、在Keil工程裏添加文件

在工程裏添加好組後,需要把本地工程裏新建的文件添加到工程裏面,具體爲吧readme.txt和main.c分別添加到doc組和User組,至於 FreeRTOS 相關的文件我們還沒有編寫,那麼 FreeRTOS 相關的組就暫時爲空。
在這裏插入圖片描述
添加好後,要在main.c中編寫main函數,否則編譯出錯。

6、調試配置

6.1 設置仿真軟件

爲了方便,我們全部代碼選擇軟件仿真,不需要開發板,有關軟件仿真配置如下:
在這裏插入圖片描述

6.2 修改時鐘大小

在時鐘相關文件system_ARMCM3.c的開頭,有一段定義了系統時鐘大小爲25M。在軟件仿真時,爲了確保時間的一致性,代碼裏的系統時鐘和軟件仿真的系統時鐘必須一致,具體配置如下:
在這裏插入圖片描述

6.3添加頭文件路徑

在這裏插入圖片描述
至此,一個完整的基於Contex-M3內核的FreeRTOS軟件仿真工程就建立完畢。

二、裸機系統與多任務系統

2.1 裸機系統

裸機系統通常分爲輪詢系統和前後臺系統。

2.1.1 輪詢系統

所謂輪詢系統,就是在裸機編程時,先初始化好相關硬件,然後讓主程序進入一個while死循環,順序的做各種事情。輪詢系統是一種很簡單的軟件結構,通常只是用於只需要順序執行而不需要外部事件來驅動就能完成的任務。
在這裏插入圖片描述

2.1.2 前後臺系統

前後臺系統是在輪詢系統的基礎上加上中斷。外部事件的相應在中斷裏完成,事件的處理還是回到輪詢系統中完成。這裏,稱中斷爲前臺,main函數裏的無限循環爲後臺。
前後臺系統
在順序執行後臺程序時,如有中斷到來,中斷會打斷後臺的程序轉而去響應中斷服務程序,在中斷服務程序裏標記事件,如果事件要處理的事情很短,則可在中斷服務裏處理,如果事件要處理的事情較多,則返回到後臺程序裏執行。
前後臺系統中,雖然事件的響應與處理分開了,但事件的處理還是在輪詢系統中執行的,但是相比輪詢系統,前後臺系統確保了事件不會丟失,再加上中斷可嵌套的功能,可以大大提高程序的實時響應能力。

2.1.3 多任務系統

相比前後臺系統,多任務系統的事件響應也是在中斷中完成的,但是事件的處理是在任務中完成的。在多任務系統中,任務和中斷一樣,也有優先級,優先級高的任務會被優先處理。相比前後臺系統,多任務系統的實時性又進一步提高了。
在這裏插入圖片描述
相比前後臺系統中後臺順序執行的程序主體,在多任務系統中,可以根據程序的功能,把程序主題分割成一個個獨立的、無限循環且不能返回的小程序,這個小程序就是任務。每個任務均獨立、互不干擾且具有自身的優先級,由操作系統調度管理。
加入操作系統後,我們在編程時不需要精心設計程序的執行流,不用擔心每個模塊是否干擾。整個系統帶來的額外開銷就是操作系統佔據的那一丁點FLASH和RAM。現如今,單片機的 FLASH 和 RAM 是越來越大,完全足以抵擋 RTOS 那點開銷。
在這裏插入圖片描述
參考:[野火®]《FreeRTOS 內核實現與應用開發實戰—基於STM32》

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