本篇記錄通過Renode在RISC-V核上運行FreeRTOS demo的情況,本來不準備寫這一篇,但是發現近期作業學習密度實在太大,上周作業的中間結果這周竟然完全想不起來了,不得不又花了一些時間從頭摸索著重新配置了一遍,好記性是沒指望了,只能依賴爛筆頭,
該例中使用的是MiFive M2GL025開發板(當然,是通過Renode模擬的),集成開發環境是SoftConsole,具體可以參考:RTOS Demo for RISC-V MiFive M2GL025 / Renode - FreeRTOS
一. 準備作業
在開始之前,先準備好所有的素材:
1. FreeRTOS原始碼
FreeRTOS原始碼下載地址如下:
FreeRTOS - Free RTOS Source Code Directory Structure
該套原始碼中包含了FreeRTOS核心代碼,以及在各個平臺上的應用代碼,另外,包含了很多個Demo,我們運行的Demo就在其中,原始碼包的結構如下:
+-FreeRTOS-Plus Contains FreeRTOS+ components and demo projects.
|
+-FreeRTOS Contains the FreeRTOS real time kernel source
| files and demo projects
|
|
+-Source The core FreeRTOS kernel files
| |
| +-include The core FreeRTOS kernel header files
| |
| +-Portable Processor specific code.
| |
| +-Compiler x All the ports supported for compiler x
| +-Compiler y All the ports supported for compiler y
| +-MemMang The sample heap implementations
|
+-Demo
|
+-Common The demo application files that are used by all the demos.
+-Dir x The demo application build files for port x
+-Dir y The demo application build files for port y
FreeRTOS核心代碼放在FreeRTOS/Source目錄下,主要在三個檔案中:tasks.c, queue.c和list.c,同時,該目錄下還包含兩個可選檔案timers.c和croutine.c,分別用以實作軟體定時器和co-routines,
對于FreeRTOS支持的每一種處理器,都有少量基于該架構的RTOS代碼,這部分代碼作為可移植部分,放在FreeRTOS/Source/Portable目錄下,
FreeRTOS/Demo目錄下放置了很多預置好的演示用例,通過指令集名稱+仿真平臺+編譯器等命名,例如我們要運行的Demo名稱為:RISC-V_Renode_Emulator_SoftConsole,
2. SoftConsole
本篇描述的Demo通過Softconsole集成開發環境編譯運行,下載地址如下:
SoftConsole | Microsemi
該開發環境將外部工具例如Renode也集成了進去,因此使用起來較為方便,
二. 代碼編譯
這次仍然運行LED閃爍的Demo,通過兩個任務之間的互動來完成LED閃爍:發送任務每隔1秒(在Renode上為虛擬秒)將一個數值送入佇列;接收任務在接收到該數值時(佇列為空時接收任務會被阻塞),將字串“Blink”列印到Renode控制臺,
1. 匯入工程
通過File->Import匯入已有工程:

在Import Projects頁面,選擇FreeRTOS/Demo/RISC-V_Renode_Emulator_SoftConsole目錄,如下圖:

點擊“Finish”完成匯入,
2. 編譯
在“Project”選單選擇“Build All”進行編譯,
三. 運行
1. 工具配置
完成編譯后,會生成目標檔案RTOSDemo.elf,放在Debug目錄下:

接下來,我們通過SoftConsole內嵌的Renode工具,仿真MiFive M2GL025平臺,并運行該目標檔案,
首先,我們需要配置外部工具,選擇“Run”->“External Tools”->"External Tools Configuration",如下圖所示:

點擊進入后,在"Program"上右鍵點擊新建Configuration,在出現的視窗中填寫如下幾項內容:

其中,Arguments為Renode的輸入引數,可以為空,也就是啟動一個空的Renode,啟動后再往里面依次創建machine、load platform、load binary、start等步驟,方便起見,可以把這些步驟寫入一個RESC描述檔案中,上圖中的RESC檔案為本人修改后的檔案,內容如下:
2. 運行
完成以上第三方工具配置后,點擊“Run”運行,輸出如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339271.html
標籤:其他

