无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

FreeRTOS移植

2023-04-06 10:22 作者:Zz嘻嘻zZ  | 我要投稿

1. 準備

- FreeRTOS 源碼

在 freeRTOS 官網(wǎng)即可下載到

https://www.freertos.org/zh-cn-cmn-s/a00104.html


- ARM GCC

在 ARM 官網(wǎng)下載適合自己linux系統(tǒng)的版本

https://launchpad.net/gcc-arm-embedded/+series


- make

2. 移植

將下載到的文件解壓,可得到如下的文件結構

其中,我們只需要 FreeRTOS 文件夾


新建一個目錄,將 FreeRTOS 移入該目錄,刪除FreeRTOS/Demo,創(chuàng)建MIAN函數(shù)和makefile文件


根據(jù)自己的編譯器,選擇 FreeRTOS/Source/portable 內(nèi)的文件夾。本文使用的是GCC編譯器,故將除了GCC、MemMang和Common以外的文件夾全刪除。

再進入GCC文件夾,只保留自己處理器類型的文件夾,其余全部刪除

進入 MemMang 文件夾,只保留自己需要的heap類型,其余文件可以刪除,也可以都保留,在編譯時指定一種也可

2.1 修改makefile

打開剛剛創(chuàng)建的makefile

將以上代碼中的各個文件 path 修改為與自己的工程一致,尤其是 LINKER_SCRIPT 和 startup_CMSDK_CM3.s 和相關的 incude 文件夾。將 heap 文件添加在 FRTOS_FILES?

生成的 bin 文件即可以直接用來下載運行,verilog 形式的 hex 文件可以用來仿真 M3 核心時給 tb 使用。

2.2 FreeRTOSConfig.h

在解壓的 FreeRTOS/Demo 下找一個合適的 demo 將該文件夾內(nèi)的 FreeRTOSConfig.h 文件復制到工程下的 FreeRTOS/Source/include 文件夾內(nèi)

打開 FreeRTOSConfig.h,刪除第52行,即取消低功耗模式。


其余的配置根據(jù)實際需求進行修改即可

2.3 修改 default_handlers

default_handlers.c 內(nèi)為中斷處理函數(shù)

通過系統(tǒng)默認的中斷處理函數(shù)來調(diào)用 freertos 的系統(tǒng)中斷響應函數(shù)


- xPortSysTickHandler 為系統(tǒng)的 systick 中斷處理,即系統(tǒng)的心跳

- vPortSVCHandler 為系統(tǒng)服務調(diào)用中斷,該中斷會在使用 svc 指令后觸發(fā),主要用于上下文切換的觸發(fā)

- xPortPendSVHandler 為可掛起的SVC中斷,該中斷一般為優(yōu)先級最低的中斷,只有在處理完所有的中斷后,才會處理該中斷。系統(tǒng)通常使用該中斷進行上下文切換。


移植中,只需要在相應的默認中斷處理函數(shù)中調(diào)用 FreeRTOS 的中斷處理函數(shù)即可,不需要額外的修改。

2.4 編寫main

在main函數(shù)內(nèi)創(chuàng)建一個簡單的task,也可以通過定義函數(shù) vPortSetupTimerInterrupt 覆寫 對 systick 初始化的函數(shù)。

若需要使用 configTICK_RATE_HZ 宏配置的參數(shù),那么就不要覆寫 vPortSetupTimerInterrupt 函數(shù),讓 FreeRTOS 自行配置 systick 即可。

2.5 linkScripts

linkScripts 主要用于規(guī)定如何把輸入文件內(nèi)的section放入輸出文件內(nèi), 并控制輸出文件內(nèi)各部分在程序地址空間內(nèi)的布局??梢愿鶕?jù)自己芯片的內(nèi)存是如何分配的來修改

2.6 編譯運行

在配置好的文件夾內(nèi)運行 make 即可成功編譯

將生成的 .hex 文件移動到 TB 文件夾內(nèi),運行m3仿真可以觀察到每 5 個周期打印一次 “task”


FreeRTOS移植的評論 (共 條)

分享到微博請遵守國家法律
全椒县| 青阳县| 宣恩县| 建阳市| 滦南县| 乡城县| 湛江市| 商都县| 洛川县| 盐山县| 微山县| 大足县| 和政县| 婺源县| 双流县| 祁连县| 台中市| 平山县| 商都县| 镇巴县| 富民县| 克拉玛依市| 乌海市| 栾城县| 阆中市| 南川市| 秦皇岛市| 延寿县| 武川县| 从江县| 印江| 永济市| 万载县| 天台县| 土默特左旗| 湘潭市| 泉州市| 房产| 德庆县| 博白县| 福建省|