朋友圈

400-850-8622

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:程序開(kāi)發(fā)培訓(xùn)問(wèn)答 > 嵌入式開(kāi)發(fā)培訓(xùn)問(wèn)答 > 嵌入式開(kāi)發(fā):硬件工程師的 10 個(gè)軟件技巧

嵌入式開(kāi)發(fā):硬件工程師的 10 個(gè)軟件技巧

日期:2024-09-21     瀏覽:76    來(lái)源:綜合教育資訊
核心提示:嵌入式系統(tǒng)設(shè)計(jì)通常不僅需要了解硬件,還需要了解軟件如何影響硬件并與之交互。設(shè)計(jì)硬件需要一定的工程范例,這可能與設(shè)計(jì)軟件截然

嵌入式系統(tǒng)設(shè)計(jì)通常不僅需要了解硬件,還需要了解軟件如何影響硬件并與之交互。設(shè)計(jì)硬件需要一定的工程范例,這可能與設(shè)計(jì)軟件截然相反。在嵌入式開(kāi)發(fā)中,當(dāng)從硬件設(shè)計(jì)過(guò)渡到軟件設(shè)計(jì)時(shí),硬件工程師在開(kāi)始開(kāi)發(fā)軟件時(shí)應(yīng)該記住十個(gè)軟件技巧。

技巧1——首先是流程圖,其次是實(shí)現(xiàn)當(dāng)一個(gè)工程師*次踏入軟件開(kāi)發(fā)的領(lǐng)域時(shí),有一種強(qiáng)烈的誘惑讓他立即投入并開(kāi)始編寫(xiě)代碼。這種思維模式相當(dāng)于在原理圖完成之前就試圖設(shè)計(jì)PCB。坐下來(lái)開(kāi)發(fā)軟件時(shí),忽略開(kāi)始編寫(xiě)代碼的沖動(dòng),而是使用流程圖來(lái)開(kāi)發(fā)軟件的架構(gòu)圖,這一點(diǎn)至關(guān)重要。這將使開(kāi)發(fā)人員了解應(yīng)用程序所需的不同部件和組件,就像原理圖告訴工程師需要什么硬件組件一樣。通過(guò)這樣做,整個(gè)程序?qū)⒂懈玫臋C(jī)會(huì)被很好地組織和思考,從長(zhǎng)遠(yuǎn)來(lái)看,這將通過(guò)減少調(diào)試時(shí)間來(lái)節(jié)省時(shí)間和頭痛。

技巧2——使用狀態(tài)機(jī)來(lái)控制程序流程20世紀(jì)*偉大的軟件發(fā)明之一就是狀態(tài)機(jī)。一個(gè)應(yīng)用程序通??梢苑纸獬啥鄠€(gè)狀態(tài)機(jī),每個(gè)狀態(tài)機(jī)控制應(yīng)用程序的一個(gè)特定組件。這些狀態(tài)機(jī)中的每一個(gè)都有自己的內(nèi)部狀態(tài)和狀態(tài)轉(zhuǎn)換,決定了軟件如何對(duì)各種激勵(lì)做出反應(yīng)。使用狀態(tài)機(jī)設(shè)計(jì)軟件將使模塊化、可維護(hù)和易于理解的軟件開(kāi)發(fā)變得容易。存在大量展示狀態(tài)機(jī)理論和算法的資源。

技巧3——避免使用全局變量在過(guò)去的函數(shù)式編程中,函數(shù)優(yōu)先于形式,嵌入式開(kāi)發(fā)人員的*目標(biāo)是讓程序盡可能快地按預(yù)期運(yùn)行,而不考慮程序結(jié)構(gòu)或可重用性。這種編程范式不擔(dān)心使用程序中任何函數(shù)都可以修改的全局變量。結(jié)果是增加了變量損壞或誤用變量的機(jī)會(huì)。在新推薦的面向?qū)ο蠓独?變量應(yīng)該在盡可能小的范圍內(nèi)定義,并被封裝以防止其他函數(shù)誤用或破壞變量。因此,建議您限制使用全局范圍的變量的數(shù)量。在C語(yǔ)言中,可以通過(guò)使用extern關(guān)鍵字來(lái)標(biāo)識(shí)這些變量。

技巧4——利用模塊化的優(yōu)勢(shì)如果你問(wèn)任何一個(gè)工程師,項(xiàng)目中*有可能延遲交付和超出預(yù)算的部分,答案將是軟件。軟件通常很復(fù)雜,很難開(kāi)發(fā)和維護(hù),尤其是當(dāng)整個(gè)應(yīng)用程序駐留在一個(gè)文件或多個(gè)松散關(guān)聯(lián)的文件中時(shí)。為了簡(jiǎn)化可維護(hù)性、可重用性和復(fù)雜性,強(qiáng)烈建議利用現(xiàn)代編程語(yǔ)言的模塊化,將常見(jiàn)功能分解為模塊。通過(guò)以這種方式分解代碼,程序員可以開(kāi)始構(gòu)建函數(shù)庫(kù)和特性庫(kù),這些函數(shù)庫(kù)和特性庫(kù)可以從一個(gè)應(yīng)用程序重用到下一個(gè)應(yīng)用程序,從而通過(guò)連續(xù)測(cè)試提高代碼質(zhì)量,并減少時(shí)間和開(kāi)發(fā)成本。

技巧5–保持中斷服務(wù)例程簡(jiǎn)單中斷服務(wù)例程用于從當(dāng)前正在執(zhí)行的代碼分支中中斷處理器,以便處理中斷剛剛被觸發(fā)的外設(shè)。每當(dāng)執(zhí)行中斷時(shí),都需要一定量的開(kāi)銷來(lái)保存當(dāng)前程序狀態(tài),運(yùn)行中斷,然后將處理器返回到原始程序狀態(tài)?,F(xiàn)代處理器比幾年前快得多,但仍需要考慮這種開(kāi)銷。一般來(lái)說(shuō),為了不干擾主代碼分支,嵌入式開(kāi)發(fā)人員希望盡量減少中斷時(shí)間。這意味著中斷應(yīng)該短而簡(jiǎn)單。不應(yīng)從中斷中調(diào)用函數(shù)。此外,如果中斷開(kāi)始變得太復(fù)雜或花費(fèi)太多時(shí)間,則應(yīng)該使用該中斷來(lái)完成當(dāng)時(shí)所需的*少任務(wù),例如將數(shù)據(jù)加載到緩沖區(qū)并設(shè)置一個(gè)標(biāo)志,然后允許主分支處理傳入的數(shù)據(jù)。這樣做可以確保處理器的大部分周期都用于運(yùn)行應(yīng)用程序,而不僅僅是處理中斷。

技巧6——使用處理器示例代碼試驗(yàn)外設(shè)在設(shè)計(jì)硬件時(shí),構(gòu)建原型測(cè)試電路總是有幫助的,這樣可以確保工程師在布局電路板之前對(duì)電路的理解是正確的。寫(xiě)軟件也可以這樣。硅制造商通常有示例代碼,可以用來(lái)測(cè)試微處理器的部件,以便工程師可以了解部件的工作原理。這允許洞察軟件架構(gòu)應(yīng)該如何組織以及可能遇到的任何潛在問(wèn)題。在設(shè)計(jì)過(guò)程的早期識(shí)別潛在的障礙,而不是在發(fā)貨前的*后幾個(gè)小時(shí)才發(fā)現(xiàn)。這是預(yù)先測(cè)試代碼片段的好方法,但是要注意,制造商代碼通常不是模塊化的,在實(shí)際應(yīng)用中不需要大量修改就可以輕松使用。隨著時(shí)間的推移,這種情況一直在改變,也許有*會(huì)從芯片提供商那里得到生產(chǎn)就緒的代碼。

技巧7——當(dāng)處理任何復(fù)雜的任務(wù)時(shí),*簡(jiǎn)單的方法是把它分成更小更簡(jiǎn)單的任務(wù),這樣更容易處理。隨著任務(wù)或功能變得越來(lái)越復(fù)雜,人類越來(lái)越難跟蹤所有細(xì)節(jié)而不出錯(cuò)。當(dāng)一個(gè)函數(shù)被寫(xiě)出來(lái)的時(shí)候,它的復(fù)雜性在當(dāng)時(shí)看起來(lái)是合適的,但是當(dāng)它需要在六個(gè)月后被維護(hù)的時(shí)候,工程師將會(huì)如何看待它應(yīng)該被考慮。有很多方法可以測(cè)量函數(shù)的復(fù)雜度,比如圈復(fù)雜度。有一些工具可以自動(dòng)計(jì)算函數(shù)的圈復(fù)雜度。一般經(jīng)驗(yàn)表明,圈復(fù)雜度低于10的函數(shù)是理想的。

技巧8——使用源代碼庫(kù)并提交經(jīng)常犯錯(cuò)是人類的一部分,當(dāng)人類編寫(xiě)代碼時(shí),他們不會(huì)奇跡般地改變。這就是嵌入式開(kāi)發(fā)人員使用源代碼庫(kù)至關(guān)重要的原因。源代碼庫(kù)允許開(kāi)發(fā)人員簽入一個(gè)好的代碼版本,并描述對(duì)代碼庫(kù)做了哪些更改。這使得開(kāi)發(fā)人員不僅可以恢復(fù)或回到舊版本的代碼,還可以比較以前版本的變化。如果開(kāi)發(fā)人員做了一堆改變,然后破壞了系統(tǒng),回到一個(gè)好的代碼版本只是一個(gè)點(diǎn)擊!請(qǐng)記住,如果代碼沒(méi)有被頻繁地提交,那么存儲(chǔ)庫(kù)將不會(huì)像預(yù)期的那樣工作。如果進(jìn)行了不可逆轉(zhuǎn)的更改,等待兩周提交代碼然后返回將會(huì)損失大量的工作和時(shí)間!

技巧9——徹底記錄代碼在軟件開(kāi)發(fā)的激烈競(jìng)爭(zhēng)中,很容易只關(guān)注代碼的編寫(xiě)和調(diào)試,而忽略記錄。文檔經(jīng)常成為項(xiàng)目任務(wù)的結(jié)尾,因?yàn)楫?dāng)有壓力時(shí),它是開(kāi)發(fā)人員*不想做的事情。然而,重要的是當(dāng)代碼在你的腦海中還清晰的時(shí)候,記錄下來(lái),這樣將來(lái)的開(kāi)發(fā)人員或者你自己就可以閱讀注釋并理解代碼是如何工作的。

技巧10——使用敏捷開(kāi)發(fā)過(guò)程當(dāng)進(jìn)行任何類型的工程設(shè)計(jì)時(shí),總是建議定義并遵循某種過(guò)程,其結(jié)果是一致的質(zhì)量、成本和按時(shí)交付。嵌入式開(kāi)發(fā)人員已經(jīng)成功地使用敏捷開(kāi)發(fā)過(guò)程來(lái)開(kāi)發(fā)高質(zhì)量的軟件。該流程允許開(kāi)發(fā)具有優(yōu)先級(jí)的需求。*高優(yōu)先級(jí)的任務(wù)首先在一個(gè)被稱為迭代的預(yù)定時(shí)間段內(nèi)執(zhí)行。該過(guò)程的美妙之處在于它允許軟件開(kāi)發(fā)過(guò)程是流動(dòng)的,允許需求和任務(wù)根據(jù)客戶的結(jié)果和需求隨著每次迭代而適應(yīng)和改變。

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由 綜合教育資訊 整理發(fā)布。更多培訓(xùn)課程,學(xué)習(xí)資訊,課程優(yōu)惠,課程開(kāi)班,學(xué)校地址等學(xué)校信息,可以留下你的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢電話:400-850-8622

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: