2023-06-21 19:19:51來源:隊牛彈琴
在單片機的Helloworld程序中(讓LED實現(xiàn)閃爍)的過程中,常常用到了延時,在這個延時過程中CPU相當(dāng)于什么事情都沒干,當(dāng)然這只是個實現(xiàn)電平翻轉(zhuǎn)的簡單任務(wù)。但是一旦任務(wù)增多后CPU的算力就大打折扣,因為在延遲的過程中,CPU這個“勞動者”在等待時間消息,幾乎不再工作,這就需要一種方法去最大化“壓榨”CPU的算力,使得CPU全時間滿負(fù)荷運行。
嵌入式設(shè)備一般分為以下幾種:
裸機系統(tǒng)、輪詢系統(tǒng)、前后臺系統(tǒng)、多任務(wù)系統(tǒng)。輪詢系統(tǒng)就是一個主程序中不斷運行無限循環(huán)里邊的程序內(nèi)容;前后臺系統(tǒng)就是在輪詢系統(tǒng)中加入了中斷,中斷事件的處理是在中斷函數(shù)進(jìn)行處理的,中斷是前臺,主程序是后臺;多任務(wù)系統(tǒng)是事件的中斷處理在主函數(shù),中斷函數(shù)負(fù)責(zé)傳遞中斷標(biāo)志位。
(資料圖片)
不同系統(tǒng)模型的對比如下圖:
常見的操作系統(tǒng)如下:常用的 RTOS有國外的 FreeRTOS、μC/OS、RTX 和國內(nèi)的 FreeRTOS、Huawei LiteOS和 AliOS-Things 等,其中尤以國外開源且免費的FreeRTOS 的市場占有率最高。操作系統(tǒng)其實就是把硬件資源虛擬化,把單核處理虛擬成“多核”提高“并發(fā)”感。這種思想非常重要,類似的有虛擬機,還有當(dāng)下大量應(yīng)用于物聯(lián)網(wǎng)的Docker技術(shù)。
對于單核ARM單片機來說,要達(dá)到兩個進(jìn)程任務(wù)的幾乎同步態(tài),那是不可能的,所以對于多任務(wù)系統(tǒng),要限制每個任務(wù)的運行時間,所以就需要分時切片處理,如下圖,運行兩個任務(wù)進(jìn)程,每個任務(wù)進(jìn)程的運行時間所占據(jù)的時間片一樣的,只要時間片劃分足夠小,例如在毫秒級別上進(jìn)行任務(wù)切換可以滿足大部分系統(tǒng)的穩(wěn)定運行需求。時間片上運行過程如下圖 運行結(jié)果如下下圖:
TWO
在操作系統(tǒng),每一個要執(zhí)行的任務(wù),也就是一段程序的運行過程被稱為一個 進(jìn)程。進(jìn)程包含著動態(tài)的概念,它是一個程序的運行過程,而不是一個靜態(tài)的程序。進(jìn)程體現(xiàn)在程序中形式實際上就是一段循環(huán)執(zhí)行的代碼,使用操作系統(tǒng)的任務(wù)創(chuàng)建函數(shù)創(chuàng)建了這個進(jìn)程之后,操作系統(tǒng)就自動找到這段代碼并執(zhí)行。一段程序執(zhí)行時,一般劃分成三個階段,開始執(zhí)行--->執(zhí)行中--->執(zhí)行完成。這也恰好對應(yīng)了進(jìn)程的工作狀態(tài): 就緒態(tài)(Ready)---> 運行態(tài)(Running---> 終止態(tài)(Blocked)。如果在一個進(jìn)程執(zhí)行的過程中,調(diào)用了將進(jìn)程掛起的功能函數(shù),或者是進(jìn)程執(zhí)行時有更高優(yōu)先級的 任務(wù)就緒了,則進(jìn)程會進(jìn)入 掛起狀態(tài)(Suspended)。容易把阻塞態(tài)與掛起態(tài)相混,我的理解是處于阻塞態(tài)的時候進(jìn)程在等待一個信號條件滿足后繼續(xù)運行,該信號條件可以是中斷可以是信號量等等。而處于掛起態(tài)的時候該程序根本沒運行,就像一個人被掛起,那他根本不可能完成任何任務(wù)。
由于使用時間切片引起任務(wù)進(jìn)程的暫停容易導(dǎo)致正在處理的數(shù)據(jù)丟失,所以操作系統(tǒng)需要給每個任務(wù)進(jìn)程分配一個內(nèi)存,存儲上個時間片尚未處理的任務(wù)數(shù)據(jù)。
同時任務(wù)進(jìn)程的工作并不是完全獨立的而是互相交替訪問的,各個進(jìn)程的通信也需要容易導(dǎo)致對某個變量的的訪問極易出現(xiàn)沖突,所以需要一個信息傳輸?shù)慕橘|(zhì)- 存儲隊列。該消息隊列既能寫入數(shù)據(jù)也能讀取數(shù)據(jù),消息隊列對象一般以全局變量進(jìn)行聲明。消息緩存空間采用先進(jìn)先出FIFO方式進(jìn)行存儲,實現(xiàn)效果如下圖。
有限的硬件資源可能會被多個進(jìn)程同時訪問,并且有的進(jìn)程對被控制實體的作用是相反的,極短時間內(nèi)互斥任務(wù)進(jìn)程的切換極易使得被控對象產(chǎn)生震蕩,所以需要對互斥進(jìn)程做一個規(guī)約,這個規(guī)約的實現(xiàn)就是信號量,F(xiàn)reeRTOS中可以實現(xiàn)任務(wù)之間同步或臨界資源的互斥訪問,常用于協(xié)助一組相互競爭的任務(wù)來訪問臨界資源。也可以用作進(jìn)程順序執(zhí)行或者同步運行的保證。
具體來說信號量是一個非負(fù)整數(shù),由臨界資源釋放,當(dāng)信號量為0時,剩余任務(wù)進(jìn)程失去資源訪問的機會,只有當(dāng)另一個任務(wù)停止訪問臨界資源時,才會釋放出信號量。采用信號量的實現(xiàn)過程如下圖所示。
單片機開發(fā)中用的最多就是二值信號量了,可以理解為一個位0和1,也可以理解為true或false如下圖為二值信號量的實現(xiàn)過程。訪問的任務(wù)進(jìn)程只能有一個,所以就能避免訪問資源引起的競爭與及規(guī)避控制效果的互斥。
在一個復(fù)雜控制系統(tǒng)中一個控制量常常需要多種事件的出現(xiàn)才能觸發(fā),事件的發(fā)生與消失用1和0來表示。多事件的狀態(tài)可以通過FreeRTOS中的事件庫進(jìn)行事件狀態(tài)的統(tǒng)一管理,F(xiàn)reeRTOS中一個事件組為32位,可通過配置文件修改其長度。
以32位為例其中高九位不可用,一個位代表一個事件,例如0x00000092就表示,因為0x00001188轉(zhuǎn)換為二進(jìn)制0b 0000 0000 0000 0000 0000 0000 1001 0010,然后通過查詢事件句柄查詢對應(yīng)事件的發(fā)生與否。
THREE
要看懂FreeRTOS源碼了解其原理,那么必須要學(xué)會c語言中常用的數(shù)據(jù)結(jié)構(gòu)--- 鏈表結(jié)構(gòu),鏈表的源文件在list.c文件中,一般分為單向鏈表和雙向鏈表,單向鏈表有頭尾之分,雙向鏈表則構(gòu)成了一個環(huán),分別指針分別指向上個鏈表節(jié)點地址和下個鏈表節(jié)點地址。
鏈表的節(jié)點成員以及成員作用如下圖所示:
可以看出鏈表本身就不包含大量數(shù)據(jù)的存儲,鏈表是一個動態(tài)的數(shù)據(jù)結(jié)構(gòu),將不連續(xù)的離散的硬件地址通過鏈表映射形成虛擬的連續(xù)存儲地址,面試中也常常問到鏈表和數(shù)組的區(qū)別,數(shù)組是開辟了一個連續(xù)的存儲地址,位置固定。
用最基礎(chǔ)的部分的理解就到此結(jié)束,當(dāng)然考慮到不同任務(wù)進(jìn)程的優(yōu)先級以及不同任務(wù)執(zhí)行的時間長短,和kernel等事件的觸發(fā)中斷,因此FreeRTOS有著更為復(fù)雜的調(diào)度機制,比如本文開頭提到的時間片輪轉(zhuǎn)法,在考慮到任務(wù)優(yōu)先級的時候,該算法根本不能保證高優(yōu)先級的進(jìn)程任務(wù)的執(zhí)行,而且不同任務(wù)在排隊列表中順序各有差異。排隊靠前的低優(yōu)先級任務(wù)和排隊較后的高優(yōu)先級任務(wù)怎么取舍等一系列的問題。當(dāng)然可以明確的是本系統(tǒng)的調(diào)度是由“ 先來先服務(wù)(FCFS)”調(diào)度算法,“ 優(yōu)先級”調(diào)度算法,“ 時間片輪轉(zhuǎn)”調(diào)度算法三種算法共同作用的。而且還可以通過設(shè)置宏configUSE_PREEMPTION來定義是采用搶占式還是合作式操作系統(tǒng)(說太多了不解釋了.....)。
其實把用起來就知道操作系統(tǒng)的一個重要工作就是執(zhí)行各個進(jìn)程的狀態(tài)切換,因為實際上單片機每次只能運行一個進(jìn)程,而操作系統(tǒng)通過適當(dāng)?shù)墓芾?,讓每一個進(jìn)程都可以得到及時的響應(yīng),讓多個進(jìn)程呈現(xiàn)出一種同時運行的“并發(fā)”感,和一根信號上傳輸多種信號的思想是一致的都是分時處理,但是速度肯定不及兩根信號線分別傳輸兩種信號。
現(xiàn)在的嵌入式入門門檻已經(jīng)很低,原有的STM32固件庫官方不在更新,使用CubeMX生成的HAL庫正在逐漸替代原有的固件庫,大大降低開發(fā)門檻提高開發(fā)效率。當(dāng)然熟悉板子上的常用的寄存器會讓你得心應(yīng)手。
項目中關(guān)于RTOS問題的記錄:
(1)FreeRTOS一定要配置好系統(tǒng)時鐘,給予一個單獨的硬件時鐘源作為系統(tǒng)時鐘。否則時間片的長度為無限大..程序只運行第一次進(jìn)入的進(jìn)程任務(wù)。
(2)隊列的大小要設(shè)置得當(dāng),否則容易內(nèi)存溢出,數(shù)據(jù)后移亂碼等情況。
(3)中斷中對事件組的操作一律使用....FromISR。
(4)任務(wù)進(jìn)程中的延遲要使用操作系統(tǒng)中提供的延遲函數(shù)。
(5)應(yīng)用操作系統(tǒng)是讓CPU算力最大化,所以盡量使用官方提供的外設(shè),GPIO口的通信盡量不要選擇模擬協(xié)議自行編程,因為中間需要加入非操作系統(tǒng)的微秒級延遲,降低了CPU的使用效率。
(6)在通信隊列操作中,讀取完畢應(yīng)將通信隊列清空。
(7)單片機硬件系統(tǒng)會產(chǎn)生各式各樣的中斷,而FreeRTOS可以幫助你去對管理中斷,由于STM32的內(nèi)核中斷優(yōu)先級過高,所以規(guī)定FreeRTOS能使用的中斷級別大于4.
關(guān)鍵詞:
責(zé)任編輯:定向增發(fā)新股是指,CYVNHoldings將投入現(xiàn)金總額7 385億美元,以按每股
瘋狂梗傳是一款比較有難度的文字游戲,還有不少小伙伴還沒弄清瘋狂梗傳
當(dāng)?shù)貢r間6月20日,蔚來、國家電網(wǎng)、工商銀行、商湯科技等15家中德企
盛劍環(huán)境(603324)06月21日在投資者關(guān)系平臺上答復(fù)了投資者關(guān)心的問題。
截至2023年6月21日收盤,靖洋集團(08257 HK)報收于0 13港元,上漲2 31%
2023年青島中考成績什么時候出?青島中考成績一般在考完幾天后公布?下
搜狐韓娛訊SM娛樂公司前總制作人李秀滿最近被曝光于今年3月成立了一家
定向增發(fā)新股是指,CYVNHoldings將投入現(xiàn)金總額7 385億美元,以按每股
你們好,最近小品發(fā)現(xiàn)有諸多的小伙伴們對于四川泡菜的腌制方法,正宗四
端午節(jié)快要到了,吃香甜可口的粽子是大家過節(jié)的儀式感,但吃的時候一定
不過,隨著今年海外需求回落、海運恢復(fù)常態(tài),海外倉進(jìn)入新一輪出清和整
公司解散與破產(chǎn)清算方式的不同之處在于二者清算的原因、清算程序、清算
能源相關(guān)海事解決方案供應(yīng)商MISCBerhad(MISC)已與瑞士船用發(fā)動機制造
國家能源局日前印發(fā)《風(fēng)電場改造升級和退役管理辦法》(以下簡稱《辦法
注意海報背后的影子,形象是漫威漫畫中幻視和旺達(dá)的經(jīng)典形象,而且幻視
近日,安慶市公安局宜秀分局五橫派出所持續(xù)落實“宜秀戶籍便民意,窗口
市場監(jiān)管總局副局長田世宏會見美國UL公司全球總裁簡思明:據(jù)市場監(jiān)管總
1、這個世上,誰失去了誰,其實都會一如既往地生活下去。你雖然不會再
為傳承中華優(yōu)秀傳統(tǒng)文化,激發(fā)學(xué)生對傳統(tǒng)節(jié)日文化的熱愛,培養(yǎng)學(xué)生熱愛
瘋狂梗傳是一款比較有難度的文字游戲,還有不少小伙伴還沒弄清瘋狂梗傳
國足2-0巴勒斯坦!風(fēng)暴體育訊北京時間6月21日,昨晚結(jié)束的國際友誼賽中
最新發(fā)布的驍龍480plus雖然是一款低端芯片,不過據(jù)了解它的性能已經(jīng)可
1、遺憾嗎?我們就這樣莫名其妙的誰也不喜歡誰了。2、倒啤酒時上面總有
炎亞綸丑聞事件繼續(xù)發(fā)酵閉幕嘉賓演出遭撤換
格隆匯6月21日丨東陽光600673600673SH公布控股子公司桐梓縣獅溪煤業(yè)有
北京靈活就業(yè)社保繳費2023年,下文就隨社保網(wǎng)小編來簡單的了解一下吧。
CFi CN訊:一、定點提名信概況浙江亞太機電股份有限公司(以下簡稱“公
1、廣西民族大學(xué)預(yù)科班成績普遍低于本校本科招生最低分?jǐn)?shù)線。2、廣西民
暗黑4不尋常的礦石任務(wù)攻略:1、玩家首先是先來到圖中的位置,到達(dá)后接
中國網(wǎng)財經(jīng)6月21日訊今日,國家金融監(jiān)督管理總局網(wǎng)站顯示,云南元謀農(nóng)
近日國外Reddit論壇用戶Sad_Mud4604透露《生化危機:代號維羅妮卡》重
相信有很多藍(lán)色協(xié)議朋友不知道藍(lán)色協(xié)議常見錯誤代碼解決方法攻略,那么
本報訊(通訊員劉濤)酒駕無小事,警鐘需長鳴。為切實預(yù)防和減少道路交
嘉興海寧7 18億掛牌1宗宅地起始樓面1 17萬元 平米創(chuàng)歷史新高,配建,起價
北京商報訊(記者劉洋劉曉夢)6月21日,長安汽車在互動平臺表示,新能
當(dāng)?shù)貢r間6月20日,蔚來、國家電網(wǎng)、工商銀行、商湯科技等15家中德企
近日,隨著一輛車牌號為34C01557的冷柜車被海關(guān)放行,當(dāng)天經(jīng)東興口岸北
傳奇再戰(zhàn)一年!皇馬官方:33歲克羅斯與球隊續(xù)約,拜仁,歐冠,皇馬,國王杯
今年六一兒童節(jié)期間,中央民族歌舞團迎來40名青海玉樹的青少年,與他們
成都2023年6月21日 美通社 --?在 "六一國際兒童節(jié) "來臨之際,成
撥打北京兩家寶能觀致直營店的電話,其中順義直營店的兩個座機電話都顯
截至2023年6月21日收盤,縱橫游控股(08069 HK)報收于0 13港元,下跌1 5
跳格子類游戲是一種非常受歡迎的休閑游戲,玩家需要通過控制角色跳躍來
為認(rèn)真落實禁毒宣傳工作任務(wù),科學(xué)普及禁毒知識,教育引導(dǎo)長寧區(qū)禁毒媽
知名度極低的雪山腳下村子,一路都是景,村子,雨崩村,大自然,原生態(tài),梅
寶萊(上海)營養(yǎng)品有限公司,注冊資本1500萬人民幣,總部位于上?;春V?/p>
6月21日消息,港股延續(xù)跌勢,午后加速下行。截至收盤,恒指收跌1 98%,
今年來,六合區(qū)衛(wèi)健委緊緊圍繞“健康六合”建設(shè),進(jìn)一步合理配置醫(yī)療資
七一二(603712)06月21日在投資者關(guān)系平臺上答復(fù)了投資者關(guān)心的問題。
朝陽萬事通微信公眾號公益轉(zhuǎn)載關(guān)注公眾號查看今日其他消息!一場龍舟賽
截至2023年6月21日收盤平治信息300571報收于385元下跌44換手率468成交
對于凱迪拉克而言,這是一個相對空白的細(xì)分市場,GT4在產(chǎn)品層面有一定
盛劍環(huán)境(603324)06月21日在投資者關(guān)系平臺上答復(fù)了投資者關(guān)心的問題。
中信銀行南寧分行—廣西柳工機械股份有限公司AMH項目簽約,廣西柳工機械
地處東北亞區(qū)域地理中心的中國吉林省與遠(yuǎn)在東南亞的馬來西亞沙巴州在農(nóng)
民主與法制網(wǎng)訊(記者黎志飛□劉真瑤)近年來,四川省南充市嘉陵區(qū)人民
一捧鮮花,對消費者而言是裝點生活、訴說心意的“幫手”,對鮮花基地、
雨巷原文全文,雨巷全文這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!1
證券代碼:002527股票簡稱:新時達(dá)公告編號:臨2023-05
截至2023年5月末,深圳普惠小微貸款余額16586 54億元,同比增長26 7%,
為進(jìn)一步從源頭上防范非法集資行為,提高員工和客戶防范非法集資違法犯
不知道大家還記不記得一個視頻,在2011年的時候,馬斯克接受媒體的一段
截至2023年6月21日收盤,聲揚集團(08163 HK)報收于0 13港元,下跌14 0%
中新網(wǎng)6月21日電 據(jù)農(nóng)業(yè)農(nóng)村部網(wǎng)站消息,近日,北京華都峪口禽業(yè)有
這家夫妻店剛扭虧就想IPO,如此急匆匆融資為啥?,中興,上市,融資,ipo,
6月21日金融一線消息,據(jù)國家金融監(jiān)督管理總局網(wǎng)站發(fā)布的行政處罰信息
余秋雨名人警句1、站在金字塔前,我對埃及文化的最大感慨是:我只知道
哈爾濱機場值機大廳仇建攝中新網(wǎng)哈爾濱6月21日電(仇建)哈爾濱機場21日
6月21日,據(jù)廉潔運城:山西省運城市煤礦機械廠原廠長萬青龍涉嫌嚴(yán)重違
海峽網(wǎng)訊19日上午,福建省福州市晉安區(qū)王莊街道在五里亭尚東區(qū)茶城舉行
6月21日,長沙住房公積金管理中心發(fā)布關(guān)于住房公積金年度結(jié)息關(guān)賬的通
1、先在電腦上安裝迅雷11,然后我們再點擊快捷鍵打開迅雷。2、然后再點
年輕人沒有存款是多么正常的事情!大驚小怪,存款,買房,消費貸
1、手機機身側(cè)面有一個帶孔的sim卡頭,可以用針戳開(新品手冊里有專門
近日,有常州市新北區(qū)羅溪鎮(zhèn)村民投訴,有人在村子附近非法傾倒工業(yè)廢料
【深交所上市委:浙江雅虎首發(fā)6月30日上會】深交所上市委公告,浙江雅
辦好“互聯(lián)網(wǎng)+”大賽,深化“雙創(chuàng)”教育改革6月21日,“建行杯”第九屆
眉筆哪個牌子好用推薦,眉筆哪個牌子好這個很多人還不知道,現(xiàn)在讓我們
雨后的清江庫區(qū)現(xiàn)別樣美景。 曹禮達(dá) 攝清江高壩洲庫區(qū)呈現(xiàn)出別樣
6月20日,思明擁軍聯(lián)盟實踐活動簽約暨授牌儀式在廈門市加州商業(yè)廣場舉
《群星(Stellaris)》中的太空生物的種類是非常多的,太空海盜就是其
專注于智能保健電器的創(chuàng)新科技企業(yè),為家庭保健提供整體解決方案,包括
FreeRTOS-STM32操作系統(tǒng)-在單片機的Helloworld程序中(讓LED實現(xiàn)閃爍)的
2023年6月21日,遼寧省沈陽市中級人民法院一審公開開庭審理了黑龍江省
1、申請?zhí)枺?00920231409 9申請日:2009 08 14名
眾所周知,我們在申請信用卡透支消費以后,每消費一筆都可以獲得一定比
1、請電話咨詢維修服務(wù)400-682-2080
近日,一名本科生畢業(yè)當(dāng)天給母校捐10萬元引發(fā)關(guān)注。有人夸贊當(dāng)事女生懂
6月18日0時16分110指揮中心接到報警義烏江有人落水在市中心醫(yī)院聯(lián)勤點
西部礦業(yè)(601168)06月21日在投資者關(guān)系平臺上答復(fù)了投資者關(guān)心的問題。
近日,中國移動北京公司(北京移動)聯(lián)合中興通訊、聯(lián)發(fā)科技在圓明園完
上一期我們說到了7月1日新國標(biāo)實施后,車外電子后視鏡CMS就可以合法合
1、疾病分析:測試前,一定要完整閱讀說明書。2、使用前,將試劑和尿樣
金融界6月21日消息中偉股份公告,公司全資二級子公司中偉香港鴻創(chuàng)與POS
amsonite品牌介紹,samsonite是什么牌子這個問題很多朋友還不知道,來
特斯拉FSD遭破解,“埃隆模式”曝光:雙手離開方向盤,900+公里0提醒
蘭霓裳之鳳求凰晉江,猗蘭霓裳之鳳求凰這個問題很多朋友還不知道,來為
漢字王者是一款非常特別的游戲,游戲中的所有元素都是在其他游戲中見不
中新社???月21日電 (記者 符宇群)記者21日從??诿捞m國際機場(
綠美新呈·貢帆逐浪—2023年呈貢區(qū)第二屆網(wǎng)絡(luò)文化節(jié)系列活動之“我們的
1、小鮮肉”用于形容男演員,指年輕、帥氣、有肌肉的新生代男偶像。2、
無論是2020-2021年“貸款利率下降、存款利率剛性”的不對稱局面,還是2
6月21日消息,今日,北大光華管理學(xué)院聯(lián)合騰訊,宣布升級“數(shù)字中國筑
每經(jīng)AI快訊,桃李面包(SH603866,收盤價:10 27元)6月21日晚間發(fā)布公