在我們看來,嵌入式系統(tǒng)有一些顯而易見的特征,如RAM和ROM的使用情況,不過呢一些特征卻很容易被開發(fā)人員忽視,如系統(tǒng)時(shí)序和執(zhí)行順序,成為開發(fā)設(shè)計(jì)的隱患。針對(duì)這個(gè)方面,我們切勿直接忽視,而更應(yīng)該謹(jǐn)慎操作。粵嵌嵌入式開發(fā)培訓(xùn)來介紹一下:
特征1—系統(tǒng)時(shí)序
說到嵌入式系統(tǒng)的實(shí)時(shí)性能,許多開發(fā)人員只能在心里禱告獲得的結(jié)果。嵌入式開發(fā)人員需要了解多個(gè)中斷同時(shí)發(fā)生或者用戶在同一時(shí)刻“按下”所有按鈕時(shí),系統(tǒng)將如何響應(yīng)。當(dāng)然了,幸運(yùn)的是,現(xiàn)代微控制器有多種工具幫助開發(fā)人員理解嵌入式系統(tǒng)的時(shí)序和響應(yīng)。利用這些工具,嵌入式開發(fā)人員能看到反映系統(tǒng)內(nèi)部工作的實(shí)際數(shù)據(jù),而不再只是默默祈禱系統(tǒng)按自己想要的方式執(zhí)行代碼。
特征2—執(zhí)行順序
對(duì)開發(fā)人員來說,了解指令執(zhí)行順序與了解系統(tǒng)時(shí)序一樣重要。知道系統(tǒng)在何處分支或跳轉(zhuǎn)、各個(gè)函數(shù)或中斷何時(shí)并以何種順序執(zhí)行非常重要。如今的系統(tǒng)變得非常復(fù)雜,雖然我們自認(rèn)為明白正在發(fā)生什么,但仍然需要提取跟蹤數(shù)據(jù),明明白白看到代碼的執(zhí)行。結(jié)果顯示的內(nèi)容常常與我們所預(yù)期的完全不同。我強(qiáng)烈推薦開發(fā)人員研究并熟悉這些微控制器跟蹤工具。這些現(xiàn)代工具可以提供幾年前完全無法想象的直觀洞察圖。我曾經(jīng)用這些工具提供的洞察功能找出了許多設(shè)計(jì)缺陷,因此在編寫代碼之前設(shè)置好了跟蹤與缺陷捕獲工具。
特征3—RAM的使用
與代碼存儲(chǔ)器不同,RAM正成為嵌入式軟件開發(fā)的關(guān)鍵因素。提供超過100kB的閃存空間同時(shí)卻只提供16kB的RAM,對(duì)于微控制器已經(jīng)很常見。這意味著RAM空間仍然非常珍貴。如果再考慮實(shí)時(shí)操作系統(tǒng)(RTOS),情況會(huì)變得更糟。在基于RTOS的系統(tǒng)中,開發(fā)人員通常將大量的RAM分配給線程堆棧空間,因?yàn)楹茈y準(zhǔn)確估計(jì)合適的大小。因此開發(fā)人員在編寫并實(shí)現(xiàn)他們的軟件時(shí),需要監(jiān)控RAM空間都作了何用。
特征4—代碼大小
人們理所當(dāng)然地認(rèn)為每個(gè)開發(fā)人員都會(huì)監(jiān)視代碼大小,但嵌入式開發(fā)培訓(xùn)認(rèn)為實(shí)際上他們沒有這樣做。若是問一個(gè)GPIO或SPI驅(qū)動(dòng)程序在他們的系統(tǒng)中占多少空間,大多數(shù)開發(fā)人員甚至都不知道去哪兒找答案!他們知道的是自己編寫的應(yīng)用程序有GPIO和SPI,終的應(yīng)用程序使用了(比如)約47kB的閃存空間。眾所周知,我們通常都不會(huì)跟蹤系統(tǒng)中的代碼細(xì)節(jié)。
現(xiàn)在在我們的保護(hù)系統(tǒng)中,代碼大小會(huì)根據(jù)所用的編譯器甚至優(yōu)化等級(jí)和標(biāo)志而有很大的變化。另外,多數(shù)情況下,監(jiān)視代碼大小已經(jīng)變得不那么重要了,這是因?yàn)殚W存相當(dāng)便宜,供應(yīng)商已經(jīng)能夠做到根據(jù)代碼大小便利地在同一微控制器系列的不同器件之間切換。但為了便于未來的項(xiàng)目規(guī)劃和器件選擇,跟蹤驅(qū)動(dòng)程序等項(xiàng)目的細(xì)節(jié)仍然特別有用。
特征5—能耗
對(duì)于電池供電的設(shè)備,能耗無疑是系統(tǒng)設(shè)計(jì)的一個(gè)關(guān)鍵要求。而對(duì)于接入電網(wǎng)的系統(tǒng),因?yàn)槟芎牟皇顷P(guān)鍵要求,因此常被忽略。鑒于能量成本不斷上升、自然資源逐漸減少,開發(fā)人員仍應(yīng)繼續(xù)監(jiān)控設(shè)計(jì)的功耗需求,以便了解它們的能耗情況并地降低能耗。借助這種監(jiān)視,由電池供電的設(shè)備顯然會(huì)通過替換電池或給電池充電而獲得更長(zhǎng)的工作時(shí)間。那些直接連接到電網(wǎng)的設(shè)備也能節(jié)省電力成本而使消費(fèi)者和終用戶受益。的確,每一臺(tái)單獨(dú)的設(shè)備所節(jié)約的能源可能微乎其微,但如果數(shù)百萬(wàn)臺(tái)設(shè)備合在一起,我們就知道有多少能量不會(huì)被浪費(fèi)了。
前為止我在嵌入式開發(fā)現(xiàn)場(chǎng)遇到的問題總是與這五個(gè)關(guān)鍵特征密切相關(guān)。所以大家不要以為常見的就不需要警惕,越常見越可能出錯(cuò)。作為一名嵌入式開發(fā)人員,做好每個(gè)細(xì)節(jié)是基本的職業(yè)素質(zhì)。