為滿足大家的好奇心,本文將講述幾個(gè)步驟可以讓FreeRTOS系統(tǒng)直接在芯片上運(yùn)行,提供可以直接運(yùn)行的Demo工程給大家,方便大家直接拿來(lái)修改測(cè)試。
為什么不先講述源代碼?
相信很多朋友開始學(xué)習(xí)的時(shí)候都是參看別人寫好的,可以直接使用的源代碼。在正確代碼工程的基礎(chǔ)上,我們可以展開很多測(cè)試,從而可以知道為什么這樣才可以運(yùn)行。
整個(gè)FreeRTOS工程源代碼里面的內(nèi)容牽涉到許多東西,而只需要簡(jiǎn)單幾個(gè)步驟就能將代碼運(yùn)行起來(lái),看到效果。如果我一一給你們講述源代碼,估計(jì)沒怎么講述幾條,大家都暈了,不知道為什么這個(gè)地方是這樣。
所以,給你看寫好源代碼工程,讓你們自己測(cè)試,并分析才是最好的。
移植幾個(gè)步驟
源代碼里面的內(nèi)容有很少變動(dòng),本篇文章不具體講述,只講述移植的幾個(gè)步驟,最終讓代碼工程可以運(yùn)行在板子上。只需要如下簡(jiǎn)單幾步即可:
1.提取源碼添加到工程
上一篇文章講述了下載FreeRTOS源碼中各個(gè)目錄及文件的意思,也大概講述了一下需要提取源碼。
主要提取:Source目錄+FreeRTOSConfig.h
(里面有部分內(nèi)容未使用,為了不讓大家感覺文件比較多,或者雜,我刪除了)
將這些源碼添加到自己的工程(之前講述并建立好的STM32工程),具體提取的源碼和添加到工程中的效果,請(qǐng)下載代碼查看。
2.添加路徑
我們添加源碼到工程,有部分頭文件include需要添加到工程。因此,我們需要添加相應(yīng)路徑。
.c源代碼添加路徑的方法見文章:
1.MDK-ARM_新建軟件工程詳細(xì)過(guò)程
2.EWARM_新建軟件工程詳細(xì)過(guò)程
這里主要想提醒的是:在IAR工程中有個(gè)匯編文件portasm.s包含了
注意:是在EWARM的Project -> Options -> Assembler -> Preprocessor中添加。
3.創(chuàng)建自己任務(wù)和添加相應(yīng)代碼
我們創(chuàng)建四個(gè)任務(wù),還是使用比較經(jīng)典的LED燈任務(wù)。
void AppTaskCreate(void)
{
xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);
xTaskCreate(vAppTask2, "Task2", TASK2_STACK_SIZE, NULL, TASK2_PRIORITY, NULL);
xTaskCreate(vAppTask3, "Task3", TASK3_STACK_SIZE, NULL, TASK3_PRIORITY, NULL);
xTaskCreate(vAppTask4, "Task4", TASK4_STACK_SIZE, NULL, TASK4_PRIORITY, NULL);
}
void vAppTask1(void *pvParameters)
{
for(;;)
{
LED1_TOGGLE;
vTaskDelay(50);
}
}
我新建了app_task.c和app_task.h文件添加任務(wù)的源代碼。
4.修改FreeRTOSConfig.h配置文件
這個(gè)文件是必須配置的,而且根據(jù)實(shí)際情況而定。我們系統(tǒng)的裁剪也與該文件有關(guān),類似于UCOS中的os_cfg.h文件。
比如:主頻、系統(tǒng)滴答、系統(tǒng)堆棧大小等。
#define configCPU_CLOCK_HZ ((unsigned long)72000000)
#define configTICK_RATE_HZ ((TickType_t)100)
#define configTOTAL_HEAP_SIZE ((size_t)(4 * 1024))
本文不講述具體內(nèi)容。后期詳細(xì)分析FreeRTOSConfig.h中的每一個(gè)參數(shù)。
至此,基本的步驟算是完成了。
-
芯片
+關(guān)注
關(guān)注
456文章
51176瀏覽量
427263 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62396
原文標(biāo)題:簡(jiǎn)單幾步,讓你的FreeRTOS直接跑在芯片上!
文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Arduino庫(kù)可以直接在RT-Thread上運(yùn)行了 附詳細(xì)解讀
如何用CCS直接在ARM A8上運(yùn)行裸跑程序?
請(qǐng)問(wèn)怎么讓SD卡拔下來(lái)可以直接在電腦上顯示卡的內(nèi)容,求程序
freeRTOS 如何移植到zynq芯片
FreeRTOS任務(wù)調(diào)度優(yōu)先級(jí),會(huì)直接在就緒列表中調(diào)用低優(yōu)先級(jí)任務(wù)么?
分享STM32F427IIH6芯片上運(yùn)行的FreeRTOS系統(tǒng)
現(xiàn)有的BSP工程可以直接在GD32F470上進(jìn)行開發(fā)嗎
FreeRTOS在STM32上的移植筆記
什么是操作系統(tǒng)?FreeRTOS中文實(shí)用教程讓你快速入門FreeRTOS
![什么是操作<b class='flag-5'>系統(tǒng)</b>?<b class='flag-5'>FreeRTOS</b>中文實(shí)用教程<b class='flag-5'>讓</b>你快速入門<b class='flag-5'>FreeRTOS</b>](https://file.elecfans.com/web1/M00/63/DD/o4YBAFuY1ZKAJrXtAABd58heXBE927.png)
芯片焊接在電路板的好處_芯片如何焊接在電路板上
FreeRTOS的直接任務(wù)(消息)通知
嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS在ARM7上移植實(shí)現(xiàn)
![嵌入式實(shí)時(shí)操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>FreeRTOS</b>在ARM7<b class='flag-5'>上</b>移植實(shí)現(xiàn)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于STM32的FreeRTOS開發(fā)(1)----FreeRTOS簡(jiǎn)介
![基于STM32的<b class='flag-5'>FreeRTOS</b>開發(fā)(1)----<b class='flag-5'>FreeRTOS</b>簡(jiǎn)介](https://file1.elecfans.com/web2/M00/8D/EB/wKgaomTBzP-Abdm8AADYzLBC-Bw325.png)
評(píng)論