www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]引言目前,RTOS特別是搶先式RTOS在嵌入式系統中的應用越來越廣泛,但是還有很大一部分產品使用是小型單片機。這些系統由于成本的限制,通常資源非常有限,比如ROM往往小丁3

引言

目前,RTOS特別是搶先式RTOS在嵌入式系統中的應用越來越廣泛,但是還有很大一部分產品使用是小型單片機。這些系統由于成本的限制,通常資源非常有限,比如ROM往往小丁32 KB,RAM小于2 KB,由于RTOS對每個任務都要開辟單獨內存區(qū)域,存放任務的上下文和各任務獨立的堆棧,所以在這種系統中使用RTOS非常勉強。對于這些低成本資源受限系統通常采用“前后臺”(或者叫“超級循環(huán)”)結構進行編程,這實際上是一種事件觸發(fā)的編程模式,當中斷數目較多且系統完成的功能相對復雜時,就會使系統的程序編寫變得非常復雜并使系統運行的可預測性迅速下降。

針對這個問題,Michael J.Pont提出了一種“基于時間觸發(fā)的編程模式”,這種方法有助于降低CPU的負荷并減少存儲器的使用量,提高系統行為的可預測性,并使程序的結構變得簡潔。但是在實際使用中,當系統中不同的任務對時間要求差異較大時,“基于時間觸發(fā)的編程模式”難以給出簡單有效的解決方案。為此,對“基于時間觸發(fā)的編程模式”進行了改進,使之適應性更強,可以為成本和資源受限的小型嵌入式系統提供統一且有效的可編程邏輯模式。

1 傳統編程結構的局限性

當不使用RTOS時,嵌入式設計軟件通常采用兩種傳統的編程結構進行編程,一種叫“前后臺廳式”或者叫“超級循環(huán)結構”,本質上是事件觸發(fā)的編程方式;另一種叫時間觸發(fā)編程模式,Michael J.Pont的“基于時間觸發(fā)的編程模式”即屬于此。

在實際工作中,當系統稍微復雜時,會發(fā)現這兩種方式都有一定局限性,下面以一個實際產品設計中遇到的問題為例來說明。在設計一個用于配電柜的壁裝式智能配電儀表時,CPU的程序設計需完成以下任務:

①每半秒對前顯示屏的顯示數據進行一次刷新。

②每0.1 s對DI/DO進行一次刷新。

③每0.2 s對鍵盤進行一次掃描。

④每半秒對測量數據進行一次重新采集和計算。

⑤異步串行口與上位機使用Modhus通信,速率最高1 9 200 bps。

⑥CPU通過I2C總線與時鐘芯片和EEPROM通信。

⑦CPU通過SPI總線與LED數碼管及采集芯片通信。

⑧CPU要對所采集的6路信號進行FFT變換。

⑨當系統掉電時,CPU要能快速響應,把當前的電度底數寫入EEPROM中。

上述任務中,任務⑤和任務⑨是強實時性的,如果對串口的收發(fā)事件得不到及時響應,接收時會導致字節(jié)丟失,發(fā)送時會導致字節(jié)間時間間隔太大,造成接收方的 Modbus幀定界錯誤,對系統掉電事件如果不能及時響應會造成EEPROM的寫入失敗。其他任務只要在指定的周期內能得到執(zhí)行就行,但是任務⑧比較特殊,使用通常的8位CPU進行6種信號的FFT變換,哪怕每種信號只做128點的FFT,運算一次也要好幾秒。下面來看用傳統編程結構實現上述設計時遇到的困擾。

1.1 使用“前后臺方式”進行編程

使用“前后臺方式”進行編程時,為保證任務⑤的及時性,使用了UART中斷,當UART完成一個字節(jié)的收發(fā)后產生中斷,在中斷程序中將接收到的字符保存在接收緩沖區(qū)或從發(fā)送緩沖區(qū)取下一個待發(fā)字符裝入UART進行發(fā)送,對Modbus協議的處理可以單獨用一個任務在中斷外處理,這保證了巾斷程序的簡短。為保證任務⑨響應的及時性,也必須為它安排一個中斷。因為當系統掉電時,系統只有不到10 ms的過渡時間,系統如果不能在這個時間內完成相關的操作,系統電壓將跌落至有效電壓以下而喪失工作能力。

安排好了后臺的中斷任務后再來看看前臺的任務如何完成。這里遇到的最大的挑戰(zhàn)是對任務⑧的處理,因為任務⑧需要的執(zhí)行時間太長了,簡單的把它當成一個任務處理將影響系統對其他任務的響應,在超級循環(huán)中的代碼結構如下:

while(1){

任務①;

任務②;

……

任務⑧;

}

由于任務⑧執(zhí)行一次要幾秒鐘的時間,整個超級循環(huán)執(zhí)行一次至少大于任務⑧需要的時間,也就是說這個超級循環(huán)循環(huán)一次要幾秒鐘時間,將滿足不了各任務響應時間的要求。

要解決這個問題,只有把任務⑧拆分成很多個子任務,將每個子任務的耗時壓縮到10 ms左右,并定義好各個子任務完成后的狀態(tài),在超級大循環(huán)中每次根據狀態(tài)只執(zhí)行一個子任務,程序結構如下:

這樣,就需要把一個耗時幾秒的FFT運算任務拆分成幾百個耗時10 ms左有的子任務,這顯然是不可接受的。除此之外,超級大循環(huán)結構隱含的一個缺點就是隨著任務的增加,循環(huán)體的執(zhí)行時間是線性增加的,在實際設計中即使沒有像任務⑧那樣的高耗時任務,當系統功能增加時要保證系統響應的及時性也是一個不小的挑戰(zhàn)。

1.2 使用“時間觸發(fā)編程模式”進行編程

“時間觸發(fā)編程模式”的核心是建立一個基丁時間觸發(fā)的合作式的任務調度器,在系統中盡量減少事件觸發(fā)(減少中斷的使用),系統通過任務調度器完成各任務的調度執(zhí)行,下面是“時間觸發(fā)編程模式”的典型程序結構:

 

系統中每個任務都定義了優(yōu)先級、任務循環(huán)周期和任務延遲時間,系統定時器中斷程序SCH Updatc()按設定的節(jié)拍對任務隊列進行刷新,在超級大循環(huán)中只執(zhí)行任務調度器SCH_Dispatch_Tasks(),根據任務隊列的狀念安排任務的執(zhí)行。

這種編程結構避免了超級大循環(huán)結構循環(huán)時間隨代碼量的增加而線性增加的問題,但是由于任務是不可剝奪的,一旦任務啟動執(zhí)行,任務調度器只有在當前任務完成后才有機會執(zhí)行,這就要求每個任務占用CPU的時間不能太長,否則將影響整個系統的響應速度。所以,FFT運算在這種編程模式下還是必須進行有效的拆分,否則就必須提高CPU的檔次或使用可剝奪型的搶先式RTOS,這勢必造成系統成本的增加。那么有沒有更好的解決辦法呢?

下面的編程結構塒“時間觸發(fā)編程模式”進行了改進,使之在不提高硬件成本的情況下,使編程人員更直觀地定義任務,減少任務特性對系統程序結構的沖擊,使程序結構簡單、明了并提高系統的實時響應速度。[!--empirenews.page--]

2 對“時間觸發(fā)編程模式”的改進

根據多年嵌入式系統編程的經驗,通常嵌入系統的任務可以劃分成3種類型:

①及時型任務。這類任務是事件觸發(fā)型的,一旦事件發(fā)生,系統必須在限定的時間內進行響應,對這類任務,最自然的方法就是使用中斷來完成,即定義成“前后臺方式”中的后臺任務。

②周期型任務。這類任務是時間觸發(fā)式周期型的,系統必須保證在指定的周期內執(zhí)行任務,“時間觸發(fā)編程模式”可以很好地滿足這類任務的需求。

③背景型任務。這類任務是非實時型的,實時性不是非常重要,系統在運行過程中可隨時中斷這類任務以便執(zhí)行前兩類任務,系統只要能充分利用資源盡最大可能快速完成這類任務即可,這類任務最適合定義成“前后臺方式”中的前臺任務。

根據以上任務分類,對“時間觸發(fā)編程模式”的改進可概括成以下需求:

◆任務分3類,1類任務優(yōu)先級最高,3類任務優(yōu)先級最低;

◆高優(yōu)先級的任務可中斷低優(yōu)先級任務的執(zhí)行,同級的任務之間不可相互剝奪;

◆實際沒計中為提高系統的可預測性,應盡量減少1類任務的數量及1類任務的執(zhí)行時間;

◆為降低系統資源的占用,系統不給任務劃分單獨的堆??臻g。

以上改進的本質是設計3個優(yōu)先級的簡單的任務調度機制,高優(yōu)先級的任務可中斷低優(yōu)先級的任務,同優(yōu)先級的任務之間不能相互剝奪,該調度機制不為每個單獨的任務保存任務上下文和單獨的堆棧,這樣可以減少該編程模式對系統資源的需求。

可剝奪式RTOS中的一個高優(yōu)先級任務中斷一個低優(yōu)先級的任務時,會保存好低優(yōu)先級任務的上下文并把該低優(yōu)先級任務的局部變量保存在本任務單獨的堆棧中,如果系統不給任務分配單獨的堆棧,如何保證高優(yōu)先級任務退出后,低優(yōu)先級任務執(zhí)行環(huán)境的恢復呢?

對這個問題,可以借鑒中斷的處理機制用以下辦法予以解決:

①在系統中設計一個定時中斷函數,該函數的功能就是執(zhí)行周期性任務的調度,該定時中斷在所有中斷中優(yōu)先級最低。

②在系統中設計另一個定時中斷函數,該函數的功能是刷新周期型任務的任務管理隊列,為任務調度提供支持,本定時中斷函數的優(yōu)先級在系統中次低。

③周期型任務就是一個函數,該函數入口的第一個操作是開中斷,允許任務執(zhí)行期間被中斷以便響應及時型任務。

④背景型任務就是在主函數超級循環(huán)中執(zhí)行的代碼,該代碼可隨時被及時型和周期型任務中斷,當系統沒有及時型任務和周期型任務時才循環(huán)執(zhí)行背景型任務的代碼。

通過以上措施,“改進型時間觸發(fā)編程模式”的程序結構如下:

 

結語

使用“改進型時間觸發(fā)編程模式”進行小型嵌入式系統編程,就像使用RTOS進行編程一樣,設計者規(guī)劃好任務后,就可以專心于每個任務的設計,任務對處理器時間的占用可以由系統統一管理,減少任務之間的耦合,使產品的程序設計和改動都變得簡潔清楚。使用該編程模式很好地解決了譬裝式智能配電儀表所面臨的復雜的設計問題,證明該方法簡單有效。目前該設計模式僅僅設計了任務調度器,任務間的變量傳遞還需要使用全局變量,如果能加入信號量和消息機制,那么該模式將更加完善。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉