国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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 內的文件夾。本文使用的是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 將該文件夾內的 FreeRTOSConfig.h 文件復制到工程下的 FreeRTOS/Source/include 文件夾內

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


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

2.3 修改 default_handlers

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

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


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

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

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


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

2.4 編寫main

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

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

2.5 linkScripts

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

2.6 編譯運行

在配置好的文件夾內運行 make 即可成功編譯

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


FreeRTOS移植的評論 (共 條)

分享到微博請遵守國家法律
杭锦后旗| 留坝县| 牟定县| 沈丘县| 淮滨县| 突泉县| 宜丰县| 长寿区| 稷山县| 黔西| 阳朔县| 剑阁县| 象山县| 调兵山市| 柞水县| 大埔区| 社会| 开鲁县| 天长市| 北碚区| 宜章县| 大厂| 和政县| 呼和浩特市| 临西县| 宝鸡市| 白沙| 潼关县| 昔阳县| 肃宁县| 鸡泽县| 定襄县| 西宁市| 织金县| 滁州市| 寻甸| 和龙市| 余庆县| 林西县| 曲松县| 靖安县|