日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:為靈活、有效地在多任務(wù)程序設(shè)計(jì)中應(yīng)用μC/OS-Ⅲ操作系統(tǒng)中的郵箱,采用理論分析與實(shí)例實(shí)驗(yàn)相結(jié)合的方法,得到基于μC/OS-Ⅲ操作系統(tǒng)的郵箱機(jī)制在全雙工任務(wù)間通信、二值信號(hào)量和充當(dāng)延遲函數(shù)等方面的應(yīng)

摘要:為靈活、有效地在多任務(wù)程序設(shè)計(jì)中應(yīng)用μC/OS-Ⅲ操作系統(tǒng)中的郵箱,采用理論分析與實(shí)例實(shí)驗(yàn)相結(jié)合的方法,得到基于μC/OS-Ⅲ操作系統(tǒng)的郵箱機(jī)制在全雙工任務(wù)間通信、二值信號(hào)量和充當(dāng)延遲函數(shù)等方面的應(yīng)用技巧和方法。實(shí)驗(yàn)表明,郵箱的靈活應(yīng)用不僅可以實(shí)現(xiàn)傳統(tǒng)的任務(wù)間數(shù)據(jù)通信,還可以方便地替代互斥信號(hào)量和實(shí)現(xiàn)延時(shí)功能。
關(guān)鍵字:嵌入式系統(tǒng);任務(wù)間通信;μC/OS-Ⅲ;郵箱

0 引言
   
嵌入式系統(tǒng)軟件通常由多個(gè)功能模塊構(gòu)成,而模塊的功能一般由基于嵌入式操作系統(tǒng)的任務(wù)來(lái)實(shí)現(xiàn)。在實(shí)際應(yīng)用中,常需要進(jìn)行任務(wù)間通信來(lái)實(shí)現(xiàn)特定的功能,如變量的傳遞、資源的共享等,這就需要針對(duì)操作系統(tǒng)建立可靠的任務(wù)間通信,而郵箱是最常用的任務(wù)間通信機(jī)制之一。本文基于μC/OS-Ⅲ嵌入式實(shí)時(shí)操作系統(tǒng),研究了郵箱的使用和技巧,不僅探討了郵箱在傳統(tǒng)任務(wù)間通信和數(shù)據(jù)的傳遞中的應(yīng)用,還通過(guò)實(shí)例研究了郵箱在二值信號(hào)量和實(shí)現(xiàn)延時(shí)功能中的靈活應(yīng)用。

1 μC/OS-Ⅲ簡(jiǎn)介
   
嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)是嵌入式系統(tǒng)的關(guān)鍵組成部分。近年來(lái),μC/OS-Ⅲ操作系統(tǒng)以其較小的體積、開(kāi)放的源碼和值得信賴的可靠性獲得了工程技術(shù)人員的青睞。2011年,μC/OS-Ⅲ的升級(jí)版μC/OS-Ⅲ發(fā)布。μC/OS-Ⅲ秉承了前一版本的優(yōu)點(diǎn),是一個(gè)高度可移植、可固化、可擴(kuò)展,具有優(yōu)先搶占的實(shí)時(shí)性,專為滿足當(dāng)今嵌入式系統(tǒng)的苛刻要求的多任務(wù)內(nèi)核,它的最大改進(jìn)之處在于允許多個(gè)任務(wù)運(yùn)行于同一優(yōu)先級(jí)上,相同優(yōu)先級(jí)的任務(wù)按時(shí)間片輪轉(zhuǎn)調(diào)度,內(nèi)核對(duì)象的數(shù)量不受限制以及接近于零的終端禁用時(shí)鐘周期。μC/OS-Ⅲ內(nèi)核為程序員提供了高效的實(shí)時(shí)任務(wù)調(diào)度、中斷管理以及任務(wù)間通信。與前期版本不同,μC/OS-Ⅲ支持無(wú)限多個(gè)任務(wù),無(wú)限多個(gè)優(yōu)先級(jí),無(wú)限多個(gè)信號(hào)量,同時(shí)支持互斥信號(hào)量、消息郵箱等任務(wù)間通信方式。

2 任務(wù)間通信與郵箱的應(yīng)用
   
由于嵌入式系統(tǒng)軟件通常由基于操作系統(tǒng)的若干個(gè)任務(wù)實(shí)現(xiàn),因此,不可避免的需要任務(wù)之間或中斷服務(wù)子程序與任務(wù)間的通信,這種信息傳遞機(jī)制稱為任務(wù)間的通信。μC/OS-Ⅲ任務(wù)間的通信可以通過(guò)共享內(nèi)存、信號(hào)量、任務(wù)內(nèi)建消息隊(duì)列、外部消息隊(duì)列、事件標(biāo)志組實(shí)現(xiàn)。共享內(nèi)存方式使用全局變量或緩存,對(duì)大型而復(fù)雜的程序,多個(gè)任務(wù)同時(shí)對(duì)一個(gè)變量進(jìn)行讀寫(xiě)操作會(huì)引起沖突或緩存區(qū)的溢出,因此共享內(nèi)存用于共享一些對(duì)數(shù)據(jù)安全性不高的通用數(shù)據(jù)。信號(hào)量的通信模型雖然可以很好地起到互斥的作用,但在多個(gè)任務(wù)同時(shí)與某一任務(wù)通信是就會(huì)產(chǎn)生對(duì)信號(hào)量的競(jìng)爭(zhēng),引起通信發(fā)起端的排隊(duì),降低系統(tǒng)的效率。任務(wù)內(nèi)建消息隊(duì)列一般用于接收少量消息(如中斷服務(wù)程序發(fā)送過(guò)來(lái)的消息)、外部消息隊(duì)列主要面向于多個(gè)任務(wù)共同等待的消息,事件標(biāo)志組則用于多個(gè)任務(wù)間的同步。
    總結(jié)來(lái)說(shuō),μC/OS-Ⅲ任務(wù)間通信有2個(gè)途徑:通過(guò)全局變量或發(fā)消息給另一個(gè)任務(wù)。用全局變量時(shí),必須保證每個(gè)任務(wù)或中斷服務(wù)子程序獨(dú)享該變量。中斷服務(wù)中保證獨(dú)享的惟一辦法是關(guān)中斷。如果2個(gè)任務(wù)共享某變量,各任務(wù)實(shí)現(xiàn)獨(dú)享該變量的辦法可以使關(guān)中斷,再開(kāi)中斷,或使用信號(hào)量。需要注意的是,任務(wù)只能通過(guò)全局變量與中斷服務(wù)子程序通信,而任務(wù)并不知道什么時(shí)候全局變量被中斷服務(wù)子程序修改了,除非中斷服務(wù)子程序以信號(hào)量方式向任務(wù)發(fā)信號(hào),或者是該任務(wù)以查詢方式不斷周期地查詢變量的值。這樣就不可避免地給程序設(shè)計(jì)帶來(lái)了一定的難度,為避免這種情況,常用的解決方法是采用郵箱。
    典型的消息郵箱(Message Mail Box)也稱作交換消息,即用一個(gè)指針型變量,一個(gè)任務(wù)或一個(gè)中斷服務(wù)子程序通過(guò)內(nèi)核,可以把一則消息(一個(gè)指針)放到郵箱中。同樣,一個(gè)或多個(gè)任務(wù)通過(guò)內(nèi)核,可以接收這則消息。發(fā)送消息的任務(wù)和接收消息的任務(wù)約定,某個(gè)指針指向的內(nèi)容就是它們要傳送的消息,如發(fā)送消息用指針*Txmsg,而接收消息用指針*Rxmsg。這種消息傳送的過(guò)程與通過(guò)郵箱收發(fā)郵件頗為相似,故稱消息郵箱,或簡(jiǎn)稱郵箱。
    為了在μC/OS-Ⅲ中使用郵箱,必須將OS_CFG.H文件中相應(yīng)的配置常數(shù)置1。具體配置項(xiàng)如表1所示。


    需要說(shuō)明的是,由于μC/OS-Ⅲ的郵箱管理必須有函數(shù)OSMboxCreate()和OSMboxPend()的參與,所以它們不能單獨(dú)被屏蔽掉。但從表1中可以看出,將OS_MBOX_EN選項(xiàng)置0即可屏蔽所有郵箱函數(shù),當(dāng)然也可以屏蔽OSMboxCreate()和OSMboxPend()函數(shù)。
    μC/OS-Ⅲ的郵箱支持任務(wù)與任務(wù)之間、任務(wù)與中斷服務(wù)子程序之間進(jìn)行消息傳遞,圖1給出了郵箱支持的消息傳遞過(guò)程中所用到的函數(shù)和任務(wù)、中斷服務(wù)子程序之間的關(guān)系。


    從圖1可以看出,任務(wù)或中斷服務(wù)子程序都可以調(diào)用函數(shù)OSMboxPost()和OSMboxPostOpt(),但只有任務(wù)可以調(diào)用OSMboxCreate(),OSMbo xDel(),OSMboxPend()及OSMboxQuery()函數(shù)。此外,μC/OS-Ⅲ中應(yīng)用程序可以使用多個(gè)郵箱,其最大數(shù)目由OS_CFG.H文件中的配置常數(shù)OS_MAX_EVENTS設(shè)定。
    在表1中各選項(xiàng)配置完畢并了解圖1中各郵箱函數(shù)的關(guān)系后,即可以使用郵箱進(jìn)行消息的傳遞,其具體過(guò)程為:創(chuàng)建郵箱OSMboxCreate();郵箱內(nèi)消息的內(nèi)容初始化,此時(shí)郵箱內(nèi)是否有消息并不重要;將消息放入郵箱OSMboxPost();等待有消息進(jìn)入郵箱OSMboxPend();如果郵箱內(nèi)有消息,則任務(wù)將消息從郵箱中取走;如果郵箱內(nèi)沒(méi)有消息,則內(nèi)核不將該任務(wù)掛起,返回空指針。
    下述代碼給出了2個(gè)郵箱TxMbox和RxMbox的建立方法,同時(shí)TaskOne和TaskTwo兩個(gè)任務(wù)使用郵箱實(shí)現(xiàn)了全雙工的應(yīng)答式通信。
   
   
   
    從代碼可以看出,使用內(nèi)核提供的郵箱服務(wù)實(shí)現(xiàn)任務(wù)問(wèn)通信方便、簡(jiǎn)單,這也是郵箱作為任務(wù)問(wèn)通信最常用手段的原因。此外,在實(shí)際應(yīng)用中,通過(guò)分析郵箱的功能特點(diǎn),還可以將其應(yīng)用到其他場(chǎng)合以實(shí)現(xiàn)一些靈活的功能。

3 郵箱的靈活應(yīng)用
3
1 用郵箱作為二值信號(hào)量
   
郵箱可以當(dāng)作二值信號(hào)量用,郵箱中有消息表示資源可以使用,而空郵箱表示資源已經(jīng)被其他資源占用。首先,在初始化時(shí)將郵箱設(shè)置為一個(gè)非空指針(eg.void*1),這樣,一個(gè)任務(wù)可以調(diào)用OSMboxPend()函數(shù)請(qǐng)求信號(hào)量,然后通過(guò)調(diào)用OSMboxPost()函數(shù)釋放信號(hào)量。若只需要二值信號(hào)量和郵箱,采用這種方法可以節(jié)省代碼空間。此時(shí),需將OS_MBOX_EN置1,而將OS_SEM_EN清0,即只用郵箱,而不是同時(shí)使用郵箱和信號(hào)量。同樣,給出了一個(gè)郵箱傳遞二值信號(hào)量的簡(jiǎn)單示例。
   
3.2 郵箱實(shí)現(xiàn)延時(shí),而不使用OSTimeDly()
   
郵箱的超時(shí)等待功能可以用作延時(shí),模仿OS-TimeDly()函數(shù)功能。示例代碼如下:
   
   
    在程序執(zhí)行過(guò)程中,若在指定的時(shí)間TIMEOUT內(nèi)沒(méi)有消息到來(lái),則TaskC繼續(xù)執(zhí)行,這顯然與OSTimeDly(TIMEOUT)功能類(lèi)似;但是,如果TaskD在指定的時(shí)間結(jié)束之前,向郵箱發(fā)送一個(gè)dummy消息,則可以中止任務(wù)1中的延時(shí),使TaskC提前繼續(xù)執(zhí)行,這與調(diào)用函數(shù)OSTimeDly Res ume()的功能一致。

4 結(jié)語(yǔ)
   
本文基于嵌入式操作系統(tǒng)μC/OS-Ⅲ探討了郵箱在任務(wù)間通信中的應(yīng)用方法及注意事項(xiàng),分析了各郵箱函數(shù)的關(guān)系及使能/屏蔽方法,并給出示例實(shí)現(xiàn)2個(gè)任務(wù)的全雙工通信;在此基礎(chǔ)上,還研究了郵箱在二值信號(hào)量和延時(shí)功能中的靈活應(yīng)用,并給出實(shí)例代碼驗(yàn)證,這在嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中有一定的參考價(jià)值。

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

武漢2025年9月9日 /美通社/ -- 7月24日,2025慧聰跨業(yè)品牌巡展——湖北?武漢站在武漢中南花園酒店隆重舉辦!本次巡展由慧聰安防網(wǎng)、慧聰物聯(lián)網(wǎng)、慧聰音響燈光網(wǎng)、慧聰LED屏網(wǎng)、慧聰教育網(wǎng)聯(lián)合主辦,吸引了安防、...

關(guān)鍵字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移遠(yuǎn)通信宣布,其自研藍(lán)牙協(xié)議棧DynaBlue率先通過(guò)藍(lán)牙技術(shù)聯(lián)盟(SIG)BQB 6.1標(biāo)準(zhǔn)認(rèn)證。作為移遠(yuǎn)深耕短距離通信...

關(guān)鍵字: 藍(lán)牙協(xié)議棧 移遠(yuǎn)通信 COM BSP

上海2025年9月9日 /美通社/ -- 為全面落實(shí)黨中央、國(guó)務(wù)院和上海市委、市政府關(guān)于加快發(fā)展人力資源服務(wù)業(yè)的決策部署,更好發(fā)揮人力資源服務(wù)業(yè)賦能百業(yè)作用,8月29日,以"AI智領(lǐng) HR智鏈 靜候你來(lái)&quo...

關(guān)鍵字: 智能體 AI BSP 人工智能

北京2025年9月8日 /美通社/ -- 近日,易生支付與一汽出行達(dá)成合作,為其自主研發(fā)的"旗馭車(chē)管"車(chē)輛運(yùn)營(yíng)管理平臺(tái)提供全流程支付通道及技術(shù)支持。此次合作不僅提升了平臺(tái)對(duì)百余家企業(yè)客戶的運(yùn)營(yíng)管理效率...

關(guān)鍵字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制藥(PharmaEngine, Inc.)發(fā)現(xiàn)的新一代PRMT5抑制劑PEP0...

關(guān)鍵字: 泰科 AI MT BSP

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟(jì)和信息化委員會(huì)、上海市發(fā)展和改革委員會(huì)、上海市商務(wù)委員會(huì)、上海市教育委員會(huì)、上海市科學(xué)技術(shù)委員會(huì)指導(dǎo),東浩蘭生(集團(tuán))有限公司主辦,東浩蘭生會(huì)展集團(tuán)上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動(dòng)駕駛

推進(jìn)卓越制造,擴(kuò)大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車(chē)系統(tǒng)與蘇州工業(yè)園區(qū)管委會(huì)正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項(xiàng)目。...

關(guān)鍵字: 智能制造 BSP 汽車(chē)系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團(tuán)宣布,新世代首款量產(chǎn)車(chē)型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車(chē)展。中國(guó)專屬版車(chē)型也將在年內(nèi)與大家見(jiàn)面,2026年在國(guó)內(nèi)投產(chǎn)。 寶馬集團(tuán)董事...

關(guān)鍵字: 寶馬 慕尼黑 BSP 數(shù)字化

北京2025年9月4日 /美通社/ --?在全球新一輪科技革命與產(chǎn)業(yè)變革的澎湃浪潮中,人工智能作為引領(lǐng)創(chuàng)新的核心驅(qū)動(dòng)力,正以前所未有的深度與廣度重塑各行業(yè)發(fā)展格局。體育領(lǐng)域深度融入科技變革浪潮,駛?cè)霐?shù)字化、智能化轉(zhuǎn)型快車(chē)...

關(guān)鍵字: 人工智能 智能體 AI BSP

上海2025年9月2日 /美通社/ -- 近日,由 ABB、Moxa(摩莎科技)等八家企業(yè)在上海聯(lián)合發(fā)起并成功舉辦"2025 Ethernet-APL 技術(shù)應(yīng)用發(fā)展大會(huì)"。會(huì)議以"破界?融合...

關(guān)鍵字: ETHERNET 智能未來(lái) BSP 工業(yè)通信
關(guān)閉