移植建置步驟如下:
1. 先到 FreeRTOS 官方網頁下載 FreeRTOS 的 7z 執行包,目前最新版為 9.0.0 版。
官方網頁:http://www.freertos.org/
2. 下載完成並解壓縮後,得到一個 FreeRTOSv9.0.0 資料夾。
3. 再將把路徑 FreeRTOSv9.0.0\FreeRTOS\Source 資料夾,複製到 Keil MDK-ARM 專案中。
路徑:
STM32F429I-Discovery_FW_V1.0.1\Utilities\Third_Party\FreeRTOS\Source 資料夾
4. 接著再把 FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK 資料夾底下的 FreeRTOSConfig.h
也複製到 2001_FreeRTOS_TEST.uvproj 專案中。
路徑:
STM32F429I-Discovery_FW_V1.0.1\Projects\2001_FreeRTOS_TEST\USER 資料夾
5. 在 2001_FreeRTOS_TEST.uvproj 專案中,將路徑
FreeRTOS\Source\include
及
FreeRTOS\Source\portable\RVDS\ARM_CM4F
加入 Compiler include Paths 中。
6. 將 FreeRTOS\Source\portable\MemMang 的 heap_1.c 加入 2001_FreeRTOS_TEST.uvproj 專案中。
2016-10-31 參考 安富萊 (ARMFLY) STM32-V6 開發板教程第54頁,將 heap_1.c 改為 heap_4.c。其差別如下:
- heap_1 - the very simplest, does not permit memory to be freed
- heap_4 - coalescences adjacent free blocks to avoid fragmentation. Includes absolute address placement option
7. 將 FreeRTOS\Source\portable\RVDS\ARM_CM4F 的 port.c 加入 2001_FreeRTOS_TEST.uvproj 專案中。
8. 將 FreeRTOS\Source 資料夾底下的 6 個 *.c 檔案,全部加入 2001_FreeRTOS_TEST.uvproj 專案中。
croutine.c
event_groups.c
list.c
queue.c
tasks.c
timers.c
9. 將 #include "stm32f4xx.h" 標頭檔加入到 FreeRTOSConfig.h 文件中,並將
#define configCHECK_FOR_STACK_OVERFLOW 2
改成
#define configCHECK_FOR_STACK_OVERFLOW 0
存檔後關閉。如圖。
10. 將 #include "stm32f4xx.h" 標頭檔加入到 port.c 文件中。如圖。
參考資料:
STM32F4 入門教學:FreeRTOS 移植
沒有留言:
張貼留言