找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8643|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

FreeRTOS中英文使用教程下載(實(shí)時(shí)內(nèi)核實(shí)用指南)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
FreeRTOS中文使用教程(附件里面還有英文版):

xQueueCreate() API 函數(shù)
隊(duì)列在使用前必須先被創(chuàng)建。
隊(duì)列由聲明為 xQueueHandle 的變量進(jìn)行引用。xQueueCreate()用于創(chuàng)建一個(gè)隊(duì)列,并返回一個(gè)xQueueHandle 句柄以便于對(duì)其創(chuàng)建的隊(duì)列進(jìn)行引用。
當(dāng)創(chuàng)建隊(duì)列時(shí),F(xiàn)reeRTOS從堆空間中分配內(nèi)存空間。分配的空間用于存儲(chǔ)隊(duì)列數(shù)據(jù)結(jié)構(gòu)本身以及隊(duì)列中包含的數(shù)據(jù)單元。如果內(nèi)存堆中沒(méi)有足夠的空間來(lái)創(chuàng)建隊(duì)列,xQueueCreate()將返回NULL。第五章會(huì)有關(guān)于內(nèi)存堆管理的更多信息。

6.3 其它常見(jiàn)錯(cuò)誤
問(wèn)題現(xiàn)象:在一個(gè) Demo應(yīng)用程序中增加了一個(gè)簡(jiǎn)單的任務(wù),導(dǎo)致應(yīng)用程序崩潰 任務(wù)創(chuàng)建時(shí)需要在內(nèi)存堆中分配空間。許多 Demo 應(yīng)用程序定義的堆空間大小只夠用于創(chuàng)建 Demo 任務(wù)——所以當(dāng)任務(wù)創(chuàng)建完成后,就沒(méi)有足夠的剩余空間來(lái)增加其它的任務(wù),隊(duì)列或信號(hào)量。
空閑任務(wù)是在 vTaskStartScheduler()調(diào)用中自動(dòng)創(chuàng)建的。如果由于內(nèi)存不足而無(wú)法創(chuàng)建空閑任務(wù),vTaskStartScheduler()會(huì)直接返回。在調(diào)用 vTaskStartScheduler()后加上一條空循環(huán)[for(;;)]可以使這種錯(cuò)誤更加容易調(diào)試。
如果要添加更多的任務(wù),可以增加內(nèi)存堆空間大小,或是刪掉一些已存在的 Demo任務(wù)。

問(wèn)題現(xiàn)象:在中斷中調(diào)用一個(gè) API 函數(shù),導(dǎo)致應(yīng)用程序崩潰
除了具有后綴為”FromISR”函數(shù)名的 API 函數(shù),千萬(wàn)不要在中斷服務(wù)例程中調(diào)用其它 API 函數(shù)。

問(wèn)題現(xiàn)象:有時(shí)候應(yīng)用程序會(huì)在中斷服務(wù)例程中崩潰
需要做的第一件事是檢查中斷是否導(dǎo)致了棧溢出。 在不同的移植平臺(tái)和不同的編譯器上,中斷的定義和使用方法是不盡相同的——所以,需要做的第二件事是檢查在中斷服務(wù)例程中使用的語(yǔ)法,宏和調(diào)用約定是否符合Demo程序的文檔描述,以及是否和Demp程序中提供的中斷服務(wù)例程范例相同。 如果應(yīng)用程序工作在 Cotex M3 上,需要確定給中斷指派優(yōu)先級(jí)時(shí),使用低優(yōu)先級(jí)號(hào)數(shù)值表示邏輯上的高優(yōu)先級(jí)中斷,因?yàn)檫@種方式不太直觀,所以很容易被忘記。一個(gè)比較常見(jiàn)的錯(cuò)誤就是,在優(yōu)先級(jí)高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中斷中調(diào)用了 FreeRTOS API 函數(shù)。

問(wèn)題現(xiàn)象:在啟動(dòng)第一個(gè)任務(wù)時(shí),調(diào)度器就崩潰了
如果使用的是 ARM7,那么請(qǐng)確定調(diào)用 vTaskStartScheduler()時(shí)處理器處于管理模式(Supervisor mode)。最簡(jiǎn)單的方式就是在 main()之前的 C啟動(dòng)態(tài)碼中將處理器設(shè)置為管理模式。ARM7 的 Demo應(yīng)用程序就是這么做的。 如果處理器不在管理模式下,調(diào)度器是無(wú)法啟動(dòng)的。

問(wèn)題現(xiàn)象:臨界區(qū)無(wú)法正確嵌套
除了 taskENTER_CRITICA()和 taskEXIT_CRITICAL(),千萬(wàn)不要在其它地方修改控制器的中斷使能位或優(yōu)先級(jí)標(biāo)志。這兩個(gè)宏維護(hù)了一個(gè)嵌套深度計(jì)數(shù),所以只有當(dāng)所有的嵌套調(diào)用都退出后計(jì)數(shù)值才會(huì)為0,也才會(huì)使能中斷。

問(wèn)題現(xiàn)象:在調(diào)度器啟動(dòng)前應(yīng)用程序就崩潰了
如果一個(gè)中斷會(huì)產(chǎn)生上下文切換,則這個(gè)中斷不能在調(diào)度器啟動(dòng)之前使能。這同樣適用于那些需要讀寫隊(duì)列或信號(hào)量的中斷。在調(diào)度器啟動(dòng)之前,不能進(jìn)行上下文切換。  還有一些 API 函數(shù)不能在調(diào)度器啟動(dòng)之前調(diào)用。在調(diào)用 vTaskStartScheduler()之前,最好是限定只使用創(chuàng)建任務(wù),隊(duì)列和信號(hào)量的API 函數(shù)。

問(wèn)題現(xiàn)象:在調(diào)度器掛起時(shí)調(diào)用 API 函數(shù),導(dǎo)致應(yīng)用程序崩潰
調(diào)用 vTaskSuspendAll()使得調(diào)度器掛起,而喚醒調(diào)度器調(diào)用xTaskResumeAll()。  千萬(wàn)不要在調(diào)度器掛起時(shí)調(diào)用其它 API 函數(shù)。

問(wèn)題現(xiàn)象:函數(shù)原型 pxPortInitialiseStack()導(dǎo)致編譯失敗
每種移植都需要定義一個(gè)對(duì)應(yīng)的宏,以把正確的內(nèi)核頭文件加入到工程中。如果編譯函數(shù)原型 pxPortInitialiseStack()時(shí)出錯(cuò),這種現(xiàn)象基本上可以確定是因?yàn)闆](méi)有正確定義相應(yīng)的宏。請(qǐng)參見(jiàn)附錄 4以獲得更多信息。
可以基本相應(yīng)平臺(tái)的 Demo 工程建立新的應(yīng)用程序。這種方式就不用擔(dān)心沒(méi)有包含正確的文件,也不必?fù)?dān)心沒(méi)有正確地配置編譯器選項(xiàng)。

0.png (144.76 KB, 下載次數(shù): 192)

0.png

0.png (133.65 KB, 下載次數(shù): 185)

0.png

0.png (10.38 KB, 下載次數(shù): 157)

0.png

2-FreeRTOS英文使用教程.pdf

1.3 MB, 下載次數(shù): 77, 下載積分: 黑幣 -5

1-FreeRTOS中文使用教程.pdf

2.9 MB, 下載次數(shù): 188, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:80640 發(fā)表于 2019-5-20 17:59 | 只看該作者
謝謝分享,哈哈
回復(fù)

使用道具 舉報(bào)

板凳
ID:543645 發(fā)表于 2019-5-21 15:27 | 只看該作者
非常好的資料
回復(fù)

使用道具 舉報(bào)

地板
ID:71535 發(fā)表于 2019-11-1 17:22 | 只看該作者
非常好學(xué)習(xí)啦,謝謝分享的資料。
回復(fù)

使用道具 舉報(bào)

5#
ID:636605 發(fā)表于 2019-11-6 11:38 來(lái)自手機(jī) | 只看該作者
非常好的學(xué)習(xí)材料,感謝
回復(fù)

使用道具 舉報(bào)

6#
ID:328121 發(fā)表于 2019-11-28 14:07 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

7#
ID:391781 發(fā)表于 2020-3-19 01:04 | 只看該作者
感謝分享。正在學(xué)習(xí)中。
回復(fù)

使用道具 舉報(bào)

8#
ID:899981 發(fā)表于 2021-12-14 17:56 | 只看該作者
請(qǐng)教里面的調(diào)試器是啥?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表