天天看點

【FreeRTOS學習】KEA128移植FreeRTOS

KEA128移植FreeRTOS

這段時間在學習FreeRTOS,第一步當然是先把作業系統移植到單片機上啦,移植的過程也是遇到不少問題,關鍵還是KEA128這方面的資料不是很多移植好系統還是費了不少勁。廢話少說,下面就是移植過程:

1、把RreeRTOS的源碼下載下傳下來,官網是https://www.freertos.org/,在首頁點選Dowmload

【FreeRTOS學習】KEA128移植FreeRTOS

然後點Download Sources Code and Prejects 就可以把最新的源碼下載下傳下來。最新的是V10版本,但是學習的時候看的是正點原子的教程,是以用的是V9的源碼。

【FreeRTOS學習】KEA128移植FreeRTOS

官網下載下傳下來的是一個.exe檔案,打開時候會自動下載下傳FreeRTOS源碼和Demo工程。

我下面的所有操作都是以V9版本的源碼為例。

源碼已經全部下載下傳下來了

【FreeRTOS學習】KEA128移植FreeRTOS

檔案夾裡面又有兩個檔案夾,分别為FreeRTOS和FreeRTOS-Pulse。其中FreeRTOS裡面是源碼和示例工程,而FreeRTOS-Pulse裡面是一些額外的元件,比如檔案系統和網絡協定之類的東西,不是必需品。

【FreeRTOS學習】KEA128移植FreeRTOS

FreeRTOS檔案夾下的Source檔案夾就是源碼啦

【FreeRTOS學習】KEA128移植FreeRTOS

2、準備一個工程,我使用的平台是IAR的。

把Source檔案夾都Copy到工程目錄下,然後修改檔案名為FreeRTOS。

【FreeRTOS學習】KEA128移植FreeRTOS

3、删除掉源碼中不需要的東西

在FreeRTOS檔案夾下的portable檔案夾點選進去,會看到很多檔案,裡面都是各個不同的編譯平台使用的,留下需要的即可,我用的是IAR是以IAR檔案夾要留下,如果用MDK(Keil 5)就把RVDS留下,其他平台同理。

不管什麼編譯平台,MemMang檔案夾也要留下,裡面是有關記憶體管理的檔案。

檔案夾删除前如下:

【FreeRTOS學習】KEA128移植FreeRTOS

檔案夾删除後如下:

【FreeRTOS學習】KEA128移植FreeRTOS

在IAR檔案夾下還有需要删除的檔案。

IAR檔案夾下的檔案:

【FreeRTOS學習】KEA128移植FreeRTOS

這裡面都是有關使用的處理器不同核心相關的東西,我要移植的是恩智浦的KEAZ128,它的核心是M0+的是以留下ARM_CM0檔案夾即可,其他的都可以删掉,其他的處理器也可以根據不同的核心進行選擇。

删除後隻留下ARM_CM0檔案夾:

【FreeRTOS學習】KEA128移植FreeRTOS

4、把FreeRTOS源碼添加到工程中

先添加FreeRTOS的分組,分為CORE,include,PORTABLE,三個分組。

【FreeRTOS學習】KEA128移植FreeRTOS

然後添加源碼,CORE裡面放的是核心代碼,是FreeRTOS檔案夾下的幾個.c檔案。include分組裡面放的是include檔案夾下的.h檔案。PORTABLE檔案夾下放的是之前删的就剩下的ARM_CM0裡面的檔案,還有MemMang檔案夾下的heap_4.c檔案(heap_1.c一直到heap_5.c這幾個檔案選一個添加就可以,它們是記憶體管理的不同實作方式,各有優缺點,我選擇的是heap_4.c)

最後添加完成的檔案如下所示

【FreeRTOS學習】KEA128移植FreeRTOS

5、添加檔案路徑

在工程名上右鍵->Option->C/C++ Complier->preprocessor->Addition include directorie 添加FreeRTOS各個檔案的路徑。

添加好後的路徑如下,記得要使用相對路徑

【FreeRTOS學習】KEA128移植FreeRTOS

IAR的話還得添加彙編器的路徑因為portasm.s裡面包含了”FreeRTOSConfig.h”,是以要在Assembler->preprocessor->Addition include directorie裡面把FreeRTOS/include檔案夾也要添加進去

【FreeRTOS學習】KEA128移植FreeRTOS

6、添加FreeRTOSConfig.h檔案,這個檔案在源碼中是沒有的需要自己編寫,我是根據正點原子的修改來的,其實在源碼的執行個體工程裡的對應核心的工程裡複制一個出來就可以了。

在這些示例工程裡找到FreeRTOSConfig.h檔案然後複制出來放到include檔案夾下面就可以了,我用的KEA128核心是M0+的是以在圈起來的這幾個檔案夾下的FreeRTOSConfig.h都是可以的,好像其他核心的也是可以的。我的是複制CORTEX_M0+_Atmel_SAMD20_XPlained裡面的然後又照着正點原子的進行了修改。

【FreeRTOS學習】KEA128移植FreeRTOS

複制好之後記得這個.h檔案也要添加到工程中

【FreeRTOS學習】KEA128移植FreeRTOS

7、最後對FreeRTOSConfig.h檔案進行一些必要的修改就可以了。因為我是根據正點原子的FreeRTOSConfig.h進行移植的,其中一定要修改的是SystemCoreClock這個參數,這是STM32下的系統時鐘的頻率,一定要改成自己用的晶片所使用的頻率

【FreeRTOS學習】KEA128移植FreeRTOS

到這裡FreeRTOS的系統移植就完成了!

繼續閱讀