朋友圈

400-850-8622

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

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

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

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

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

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

技巧2——使用狀態(tài)機(jī)來控制程序流程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)換,決定了軟件如何對各種激勵(lì)做出反應(yīng)。使用狀態(tài)機(jī)設(shè)計(jì)軟件將使模塊化、可維護(hù)和易于理解的軟件開發(fā)變得容易。存在大量展示狀態(tài)機(jī)理論和算法的資源。

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

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

技巧5–保持中斷服務(wù)例程簡單中斷服務(wù)例程用于從當(dāng)前正在執(zhí)行的代碼分支中中斷處理器,以便處理中斷剛剛被觸發(fā)的外設(shè)。每當(dāng)執(zhí)行中斷時(shí),都需要一定量的開銷來保存當(dāng)前程序狀態(tài),運(yùn)行中斷,然后將處理器返回到原始程序狀態(tài)。現(xiàn)代處理器比幾年前快得多,但仍需要考慮這種開銷。一般來說,為了不干擾主代碼分支,嵌入式開發(fā)人員希望盡量減少中斷時(shí)間。這意味著中斷應(yīng)該短而簡單。不應(yīng)從中斷中調(diào)用函數(shù)。此外,如果中斷開始變得太復(fù)雜或花費(fèi)太多時(shí)間,則應(yīng)該使用該中斷來完成當(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)建原型測試電路總是有幫助的,這樣可以確保工程師在布局電路板之前對電路的理解是正確的。寫軟件也可以這樣。硅制造商通常有示例代碼,可以用來測試微處理器的部件,以便工程師可以了解部件的工作原理。這允許洞察軟件架構(gòu)應(yīng)該如何組織以及可能遇到的任何潛在問題。在設(shè)計(jì)過程的早期識別潛在的障礙,而不是在發(fā)貨前的*后幾個(gè)小時(shí)才發(fā)現(xiàn)。這是預(yù)先測試代碼片段的好方法,但是要注意,制造商代碼通常不是模塊化的,在實(shí)際應(yīng)用中不需要大量修改就可以輕松使用。隨著時(shí)間的推移,這種情況一直在改變,也許有*會從芯片提供商那里得到生產(chǎn)就緒的代碼。

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

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

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

技巧10——使用敏捷開發(fā)過程當(dāng)進(jìn)行任何類型的工程設(shè)計(jì)時(shí),總是建議定義并遵循某種過程,其結(jié)果是一致的質(zhì)量、成本和按時(shí)交付。嵌入式開發(fā)人員已經(jīng)成功地使用敏捷開發(fā)過程來開發(fā)高質(zhì)量的軟件。該流程允許開發(fā)具有優(yōu)先級的需求。*高優(yōu)先級的任務(wù)首先在一個(gè)被稱為迭代的預(yù)定時(shí)間段內(nèi)執(zhí)行。該過程的美妙之處在于它允許軟件開發(fā)過程是流動(dòng)的,允許需求和任務(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)系方式,讓課程老師跟你詳細(xì)解答:
咨詢電話:400-850-8622

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