朋友圈

400-850-8622

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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