電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>嵌入式系統(tǒng)實(shí)時(shí)內(nèi)核和事務(wù)文件系統(tǒng)資料下載

嵌入式系統(tǒng)實(shí)時(shí)內(nèi)核和事務(wù)文件系統(tǒng)資料下載

2021-04-07 | pdf | 207.44KB | 次下載 | 3積分

資料介紹

作者:Matt Gordon;Thom Denholm, Silicon Labs(亦稱“芯科科技”) 如果只研讀最新微控制器數(shù)據(jù)手冊(cè)的話,開(kāi)發(fā)人員會(huì)很容易認(rèn)為高效使用CPU資源(包括內(nèi)存和時(shí)鐘周期),是目前硬件設(shè)計(jì)中的一個(gè)小問(wèn)題。最新的32位MCU可以在嵌入式空間提供閃存和RAM分配,這在不久前都是聞所未聞的;并且其CPU與之前臺(tái)式機(jī)獨(dú)有的運(yùn)行速度一樣。然而,近來(lái)開(kāi)發(fā)過(guò)物聯(lián)網(wǎng)產(chǎn)品的人都知道,這些硬件的進(jìn)步并非空穴來(lái)風(fēng);它們一直因應(yīng)著最終用戶的期望和設(shè)計(jì)要求顯著地變化著。因此,現(xiàn)在比以往任何時(shí)候都更重要的是:開(kāi)發(fā)人員要確保其軟件以最大效率運(yùn)行,并且有效地利用他們的時(shí)間。 在現(xiàn)代嵌入式系統(tǒng)中運(yùn)行的軟件往往有各種來(lái)源。應(yīng)用開(kāi)發(fā)人員編寫(xiě)的代碼通常與RTOS(實(shí)時(shí)操作系統(tǒng))提供商的現(xiàn)成軟件組件相結(jié)合,而這些組件又可能利用最初由半導(dǎo)體公司提供的驅(qū)動(dòng)程序代碼。開(kāi)發(fā)人員可以編寫(xiě)每段代碼來(lái)優(yōu)化效率,但本文更著重于現(xiàn)成的軟件組件中的效率優(yōu)化。特別是其中兩個(gè)組成部分將作為審視本文給出的資源效率的基礎(chǔ):實(shí)時(shí)內(nèi)核和事務(wù)文件系統(tǒng)(transactional file system)。 實(shí)時(shí)內(nèi)核:高效系統(tǒng)的核心 實(shí)時(shí)內(nèi)核是當(dāng)今許多嵌入式系統(tǒng)中運(yùn)行的軟件的核心。簡(jiǎn)單說(shuō),內(nèi)核是一個(gè)調(diào)度程序;為基于內(nèi)核的系統(tǒng)編寫(xiě)應(yīng)用程序代碼的開(kāi)發(fā)人員將代碼分為任務(wù),內(nèi)核負(fù)責(zé)安排這些任務(wù)。那么,內(nèi)核是main()中無(wú)限循環(huán)的替代方法,它常常作為裸機(jī)(bare-metal)嵌入式系統(tǒng)中的主要調(diào)度機(jī)制。使用實(shí)時(shí)內(nèi)核提供了重要優(yōu)點(diǎn),包括提高效率。選擇將其應(yīng)用代碼基于內(nèi)核的開(kāi)發(fā)人員可以優(yōu)化其系統(tǒng)中處理器資源的使用,同時(shí)更有效地利用自己的時(shí)間。然而,并不是所有的內(nèi)核都生而相同,因此簡(jiǎn)單地決定在新項(xiàng)目中采用內(nèi)核,并不能保證效率的提升。 調(diào)度是內(nèi)核可能不同且CPU資源的使用效率可以有很大差異的關(guān)鍵領(lǐng)域。通過(guò)提供一種允許任務(wù)以響應(yīng)事件的方式運(yùn)行的智能調(diào)度機(jī)制,內(nèi)核可幫助開(kāi)發(fā)人員在無(wú)限循環(huán)中提升效率;其中以固定順序執(zhí)行任務(wù)(或換句話說(shuō),函數(shù))?;趦?nèi)核的應(yīng)用程序的確切效率部分取決于其調(diào)度程序的實(shí)現(xiàn)方式。一個(gè)內(nèi)核的調(diào)度程序(只是一段負(fù)責(zé)決定每個(gè)任務(wù)何時(shí)運(yùn)行的代碼)最終是種開(kāi)銷,這個(gè)開(kāi)銷必須不能蠶食掉通過(guò)擺脫裸機(jī)系統(tǒng)獲得的好處。 通常,在實(shí)時(shí)內(nèi)核中,調(diào)度是基于優(yōu)先級(jí)的,這意味著應(yīng)用程序開(kāi)發(fā)人員為其任務(wù)分配優(yōu)先級(jí)(通常為數(shù)字),并且在做出調(diào)度決策時(shí),內(nèi)核支持更高優(yōu)先級(jí)的任務(wù)運(yùn)行。在這種機(jī)制下,內(nèi)核必須保持某種類型的數(shù)據(jù)結(jié)構(gòu)、跟蹤應(yīng)用程序不同任務(wù)的優(yōu)先級(jí)以及每個(gè)任務(wù)的當(dāng)前狀態(tài)。 從Micrium的-C/OS-II內(nèi)核獲取的一個(gè)例子如圖1所示。在OSRdyTbl []中,這里顯示的是8元素?cái)?shù)組(每元素八位),每個(gè)位表示不同的任務(wù)優(yōu)先級(jí);其中:第一個(gè)元素中的最低有效位對(duì)應(yīng)最高優(yōu)先級(jí);最后一個(gè)元素中的最高有效位表示最低優(yōu)先級(jí)。數(shù)組的位值反映任務(wù)狀態(tài):如果相關(guān)優(yōu)先級(jí)的任務(wù)準(zhǔn)備就緒,則用值1表示;若任務(wù)未準(zhǔn)備就緒,就用0表示。作為-C / O S - I I調(diào)度程序的一部分,附帶的OSRdyTbl []是圖中所示的單個(gè)八位變量—OSRdyGrp。 圖1:在μC/OS-II調(diào)度程序中,每個(gè)任務(wù)優(yōu)先級(jí)由數(shù)組中的位表示 該變量中的每個(gè)位表示數(shù)組中的一整行或元素:1位表示對(duì)應(yīng)的行至少有一個(gè)就緒任務(wù);0位表示該行的任務(wù)都沒(méi)就緒。通過(guò)使用清單1中所示的代碼首先掃描OSRdyGrp、再掃描OSRdyTbl[],-C/OS-II可以確定在任何給定時(shí)間已準(zhǔn)備好運(yùn)行的最高優(yōu)先級(jí)任務(wù)。如列表所示,此操作很高效,只需要兩行C代碼。當(dāng)然,緊湊、高效的代碼只是開(kāi)發(fā)人員在內(nèi)核中尋求的特性之一。鑒于大多數(shù)新MCU提供的閃存要相對(duì)多于RAM,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),考慮內(nèi)核所占用空間的數(shù)據(jù)端也很重要。對(duì)于內(nèi)核的調(diào)度程序來(lái)說(shuō),臃腫的RAM占用會(huì)導(dǎo)致過(guò)多開(kāi)銷,從而減少多任務(wù)應(yīng)用程序代碼通常帶來(lái)的好處。 內(nèi)核可以采用兩種方法來(lái)分配多任務(wù)所需的基本資源:分配這些資源的責(zé)任可以留給應(yīng)用代碼;或者內(nèi)核本身可以處理分配。在任何內(nèi)核中必然會(huì)存在某些變量和數(shù)據(jù)結(jié)構(gòu),因?yàn)樗鼈儗?duì)于執(zhí)行多任務(wù)服務(wù)至關(guān)重要,所以這些變量和數(shù)據(jù)結(jié)構(gòu)完全放在內(nèi)核中。然而,對(duì)諸如用于記錄每個(gè)任務(wù)狀態(tài)的TCB(或任務(wù)控制塊)等數(shù)據(jù)結(jié)構(gòu),或甚至對(duì)于在上下文切換時(shí)存儲(chǔ)CPU寄存器值的堆棧,內(nèi)核提供者可以選擇在內(nèi)部分配或依賴應(yīng)用代碼實(shí)現(xiàn)。 任何一種方法,如果實(shí)現(xiàn)時(shí)以靈活性為目標(biāo)之一,都可以產(chǎn)生一個(gè)高效內(nèi)核。延遲將資源分配給應(yīng)用代碼也許是為開(kāi)發(fā)人員提供最大靈活性的方法,因?yàn)樗鼮殪o態(tài),或動(dòng)態(tài)分配機(jī)制留有選擇。 Micrium的-C/OS-III采用這種方法,讓?xiě)?yīng)用程序開(kāi)發(fā)人員決定如何最好地分配其TCB和堆棧。然而,如同Micrium的-C/OS-II中的TCB情況一樣,強(qiáng)制在內(nèi)核中實(shí)施資源分配可以是同樣有效的方法,只要有能配置所分配資源量的方法即可。最終,應(yīng)用開(kāi)發(fā)人員需要一種從系統(tǒng)的內(nèi)存空間中消除未使用資源的方法。 文件系統(tǒng)效率 大多數(shù)設(shè)備需要存儲(chǔ)數(shù)據(jù)和日志事件的選項(xiàng),作為在傳送到云之前的臨時(shí)保存空間、或者是更長(zhǎng)久地存儲(chǔ)在設(shè)備上。為此目的設(shè)計(jì)的任何代碼都是文件系統(tǒng),無(wú)論是由開(kāi)發(fā)人員編寫(xiě)和測(cè)試的、還是作為RTOS方案的一部分提供。文件系統(tǒng)還可以提供效率選項(xiàng)。其范圍可從簡(jiǎn)單(保留多少內(nèi)存緩沖區(qū))到復(fù)雜(是否支持完整的POSIX操作)。 開(kāi)發(fā)人員應(yīng)從其數(shù)據(jù)存儲(chǔ)要求開(kāi)始。該數(shù)據(jù)是否在現(xiàn)場(chǎng)進(jìn)行操作?或僅存儲(chǔ)并稍后傳送?要測(cè)量多少內(nèi)容?其數(shù)據(jù)應(yīng)該分開(kāi)或組合嗎?在對(duì)設(shè)備實(shí)施數(shù)據(jù)采集前先行存儲(chǔ)數(shù)據(jù)嗎?還是將其傳送到云?存儲(chǔ)介質(zhì)有多可靠?設(shè)計(jì)能完全免受電源故障的影響嗎?首先,一些RTOS提供類似FAT的文件系統(tǒng)。這包括使用標(biāo)準(zhǔn)介質(zhì)格式(包括文件夾和文件) 執(zhí)行I /O的代碼。一般來(lái)說(shuō),其可定制程度受限,很少能防范電源故障時(shí)的數(shù)據(jù)丟失。 另一個(gè)選擇是Datalight的Reliance Edge,它使用交易點(diǎn)(transactionpoint)來(lái)提供里令人興奮的是:設(shè)計(jì)的靈活性如何有助于提高效率。Reliance Edge提供存儲(chǔ)選項(xiàng)的定制。在最小用例中,稱為“文件系統(tǒng)要素”,不使用文件夾甚至文件名。數(shù)據(jù)存儲(chǔ)到編號(hào)的inode中。這些位置的計(jì)數(shù)在編譯時(shí)確定,但大小不是預(yù)先確定的。一個(gè)“文件”可以包含比其它文件更多的數(shù)據(jù),并且僅當(dāng)“文件”的總大小達(dá)到閾值時(shí),存儲(chǔ)介質(zhì)才裝滿。還可自由地對(duì)文件進(jìn)行截取、讀取和寫(xiě)入。 相比之下,F(xiàn)AT格式的文件系統(tǒng)具有專用于兩個(gè)文件分配表的介質(zhì)塊。對(duì)于每個(gè)用戶數(shù)據(jù)文件,分配了文件名和元數(shù)據(jù)—前者可能相當(dāng)大以支持長(zhǎng)文件名。如果使用子文件夾,其元數(shù)據(jù)和長(zhǎng)文件名也將占用空間。所有這些都會(huì)導(dǎo)致存儲(chǔ)介質(zhì)上所收集的用戶數(shù)據(jù)可用空間變少。 對(duì)于較大的設(shè)計(jì),Reliance Edge提供了更像POSIX的環(huán)境。這里的文件名、文件夾和文件系統(tǒng)元數(shù)據(jù)(如屬性以及數(shù)據(jù)和時(shí)間)是一個(gè)可配置選項(xiàng)。對(duì)于期望從其它設(shè)計(jì)移植POSIX接口的應(yīng)用來(lái)說(shuō),這可能是個(gè)非常好的選擇。最終,文件系統(tǒng)要求的最終選擇與用例直接相關(guān),這是迄今為止最有效的資源方案。 全面考量效率 除了資源使用問(wèn)題之外,多年來(lái),在購(gòu)買內(nèi)核、文件系統(tǒng)和其他軟件模塊時(shí),效率一直是開(kāi)發(fā)者關(guān)注的頭等大事。這是因?yàn)橛糜谧C明采用這種模塊的理由通常是:從頭開(kāi)始編寫(xiě)等效的代碼是浪費(fèi)時(shí)間。換句話說(shuō),應(yīng)用開(kāi)發(fā)人員最有效的時(shí)間利用是編寫(xiě)應(yīng)用程序,而不是死磕數(shù)萬(wàn)行的基礎(chǔ)架構(gòu)代碼。 然而,正如內(nèi)核和文件系統(tǒng)的使用本身并不能保證CPU資源的有效應(yīng)用一樣,將這些模塊引入新項(xiàng)目的決定,也不會(huì)自動(dòng)確保開(kāi)發(fā)人員能最有效地使用其時(shí)間。為了真正讓開(kāi)發(fā)人員專注于應(yīng)用級(jí)代碼,嵌入式軟件模塊必須具有直觀的界面,并且該界面必須有詳盡文檔。在沒(méi)有有用文檔的情況下,開(kāi)發(fā)人員可能要花數(shù)周的時(shí)間來(lái)解決事后證明是函數(shù)誤用導(dǎo)致的問(wèn)題。 不幸的是,如果不能可靠地實(shí)現(xiàn)所描述的功能,甚至文檔編寫(xiě)良好的代碼也會(huì)不必要地浪費(fèi)開(kāi)發(fā)時(shí)間。這就是為什么除了要求完整的文檔外,開(kāi)發(fā)人員在為新項(xiàng)目選擇軟件時(shí),應(yīng)尋求可靠性證據(jù)—例如過(guò)去的認(rèn)證或測(cè)試結(jié)果。實(shí)際上,每個(gè)軟件模塊在宣傳文獻(xiàn)中都是可靠的,但只有部分模塊提供了可靠證明,能保證它們“言行一致”。 例如,Datalight的Reliance Edge就有用于各種不同測(cè)試的源代碼,允許應(yīng)用開(kāi)發(fā)人員確認(rèn)文件系統(tǒng)在特定開(kāi)發(fā)環(huán)境中能否可靠運(yùn)行。示例:開(kāi)發(fā)具最高效率的IoT醫(yī)療設(shè)備什么類型的開(kāi)發(fā)環(huán)境可能出現(xiàn)在物聯(lián)網(wǎng)項(xiàng)目中?鑒于嵌入式設(shè)備中連接需求的快速增長(zhǎng),不可能確定一種硬件、軟件和工具鏈的特定組合來(lái)界定這個(gè)范圍。找到完全代表物聯(lián)網(wǎng)可能性范圍的單一終端產(chǎn)品同樣具有挑戰(zhàn)性。盡管如此,這一領(lǐng)域的討論當(dāng)然可以從具體的例子中受益。一種有助于說(shuō)明物聯(lián)網(wǎng)開(kāi)發(fā)者面臨的一些挑戰(zhàn)的產(chǎn)品,就是在幾年之前甚至不會(huì)被認(rèn)為是種連接設(shè)備的—血糖儀。 該產(chǎn)品的關(guān)鍵特征之一是市場(chǎng)容量:血糖儀每年的產(chǎn)量有數(shù)百萬(wàn),并且往往以低于成本的價(jià)格出售,甚至免費(fèi)贈(zèng)送。因此,降低BOM成本,并最短化這些儀器開(kāi)發(fā)時(shí)間的壓力很大。不過(guò),開(kāi)發(fā)這些設(shè)備并不容易。事實(shí)上,新血糖儀的功能列表可能包括彩色顯示、數(shù)據(jù)記錄功能和云連接。面對(duì)如此復(fù)雜的需求列表,負(fù)責(zé)血糖儀開(kāi)發(fā)的團(tuán)隊(duì)當(dāng)然希望利用內(nèi)核的多任務(wù)功能。優(yōu)化內(nèi)核的內(nèi)存占用可能是該團(tuán)隊(duì)的首要關(guān)注點(diǎn)之一,因?yàn)榈湫偷母弋a(chǎn)量、低成本MCU往往只有有限的閃存和RAM資源。減少空間占用的關(guān)鍵步驟是刪除應(yīng)用代碼不需要的任何內(nèi)核資源(如TCB)。消除應(yīng)用的各種內(nèi)核管理任務(wù)所需的堆棧中的浪費(fèi)也將會(huì)有幫助。 像Micrium的-C/Probe這樣的工具,可用于實(shí)現(xiàn)這一目標(biāo),其截圖如圖2所示。-C/Probe可以深入了解基于內(nèi)核的應(yīng)用的棧(stack)和堆(heap)的使用情況,使開(kāi)發(fā)人員能夠輕松識(shí)別低效并提高效率。當(dāng)實(shí)施血糖儀的數(shù)據(jù)記錄功能時(shí),儀器的開(kāi)發(fā)團(tuán)隊(duì)將受益于文件系統(tǒng)的功能。在此,與內(nèi)核一樣,使用現(xiàn)成的軟件模塊可以減輕團(tuán)隊(duì)開(kāi)發(fā)基礎(chǔ)架構(gòu)代碼的負(fù)擔(dān),從而有助于實(shí)現(xiàn)短得多、具成本效益的開(kāi)發(fā)周期。處理器資源使用作為系統(tǒng)的總體約束之一,在開(kāi)發(fā)數(shù)據(jù)記錄代碼時(shí)不可避免地需要予以考慮,因此使用高效的事務(wù)文件系統(tǒng)是理想情況。 圖2:FAT文件系統(tǒng)與Reliance Edge (資料來(lái)源:Datalight) 借助Reliance Edge等文件系統(tǒng)方案,開(kāi)發(fā)團(tuán)隊(duì)可以輕松地將服務(wù)縮減到最低限度,以便為應(yīng)用程序留出盡可能多的存儲(chǔ)空間。 圖3:μC/Probe提供對(duì)系統(tǒng)數(shù)據(jù)的運(yùn)行時(shí)訪問(wèn),包括內(nèi)核統(tǒng)計(jì)信息(來(lái)源:Micrium)。 結(jié)論 雖然每個(gè)嵌入式系統(tǒng)都有其獨(dú)特的需求,但是適用于最大限度提高血糖儀效率的方法可以很容易地用于開(kāi)發(fā)其它類設(shè)備。組件重用早已被公認(rèn)為軟件開(kāi)發(fā)的最佳實(shí)踐,血糖儀所需的許多基礎(chǔ)架構(gòu)代碼(包括實(shí)時(shí)內(nèi)核和文件系統(tǒng))可以作為其它設(shè)備的基礎(chǔ),除了替換少數(shù)底層代碼外,僅需很少改動(dòng)。通過(guò)選擇質(zhì)量有保證的現(xiàn)成的組件作為項(xiàng)目基礎(chǔ),開(kāi)發(fā)團(tuán)隊(duì)可以確保自己的資源以及嵌入式硬件的有效利用,并且可以專注于編寫(xiě)創(chuàng)新的應(yīng)用代碼,使其設(shè)計(jì)在眾多的產(chǎn)品中脫穎而出。物聯(lián)網(wǎng)創(chuàng)新的曙光已經(jīng)開(kāi)始閃亮。 本文轉(zhuǎn)載自 (mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)