在過去的幾年中,我注意到嵌入式系統(tǒng)開發(fā)人員和團(tuán)隊之間的趨勢非常令人不安。趨勢包括開發(fā)功能(最好)但不是為生產(chǎn)環(huán)境構(gòu)建或測試的嵌入式系統(tǒng)。這種趨勢導(dǎo)致災(zāi)難。
這種“簡單功能”趨勢的主要原因似乎是由于三個因素:利用示例代碼,匆忙的開發(fā)周期,以及缺乏理解它需要什么構(gòu)建生產(chǎn)嵌入式系統(tǒng)。利用示例代碼的第一個因素實際上是啟動嵌入式軟件開發(fā)的關(guān)鍵一步。示例代碼有助于啟動和運行嵌入式系統(tǒng),以及獲得對目標(biāo)硬件的重要見解。許多微控制器供應(yīng)商為開發(fā)人員提供了有關(guān)如何設(shè)置外設(shè)和與微控制器交互的急需的示例代碼。
但是,許多開發(fā)人員通常不會考慮這個示例代碼。首先,示例代碼只是一個例子;它不適合生產(chǎn)。它只是如何設(shè)置和與各種外圍設(shè)備交互的指南。然而開發(fā)人員將采用代碼,一旦將示例代碼引入系統(tǒng),它通常會保留在系統(tǒng)中。
仔細(xì)檢查來自不同微控制器供應(yīng)商的示例代碼,經(jīng)常會發(fā)現(xiàn)免責(zé)聲明所提供的代碼不能保證適用于任何目的。它甚至不能用于任何目的,而只是“原樣”提供。只要閱讀免責(zé)聲明,就應(yīng)該讓嵌入式軟件開發(fā)人員在考慮采用該代碼時感到不安。該軟件的制作人沒有足夠的信心支持他們的榜樣,那么是什么讓人們認(rèn)為示例代碼產(chǎn)品已經(jīng)準(zhǔn)備就緒?
檢查硬件寄存器標(biāo)志時,通常可以看到功能示例代碼的一個很好的例子。圖1顯示了類似于人們通常會發(fā)現(xiàn)的內(nèi)容。
圖1 - 示例代碼硬件寄存器標(biāo)記檢查
一個問題使用圖1中的代碼是 while 循環(huán)假設(shè)操作最終會成功完成。在理想條件下,這可能是真的,但如果硬件出現(xiàn)故障會怎樣?也許振蕩器正在漂移,因此無法實現(xiàn)同步。也許寫入閃存失敗了。當(dāng)流氓出現(xiàn)故障的外部傳感器導(dǎo)致總線停機(jī)時,硬件檢查可能在通信總線標(biāo)志上,從而無法完成傳輸。在這些情況下,使用圖1中的代碼的結(jié)果將是無限循環(huán),需要外部力量(例如看門狗定時器)的干預(yù)。即使這樣,看門狗定時器也會重置系統(tǒng),但不能保證系統(tǒng)不會在循環(huán)中結(jié)束,進(jìn)入永久復(fù)位的永久循環(huán)。
為生產(chǎn)環(huán)境編寫的軟件應(yīng)該適應(yīng)失敗的可能性。某些場景的解決方案(如圖1中的 while 循環(huán))可能是基于系統(tǒng)節(jié)拍向循環(huán)添加超時,或者可能建立最大數(shù)字標(biāo)志檢查。這些將阻止系統(tǒng)進(jìn)入無限循環(huán)或永久復(fù)位循環(huán)。
圖2中的示例演示了如何將附加條件添加到 while 循環(huán)中,以便系統(tǒng)退出發(fā)生故障時的循環(huán)。這些添加不是使系統(tǒng)掛起等待救援的無限循環(huán),而是生成錯誤代碼,該錯誤代碼警告調(diào)用例程感興趣的硬件標(biāo)志已超時。然后,系統(tǒng)可以在不調(diào)用最后一個監(jiān)視器的情況下采取糾正措施。
圖2 - 生產(chǎn)代碼硬件寄存器標(biāo)記檢查
導(dǎo)致構(gòu)建功能性而非生產(chǎn)意圖嵌入式系統(tǒng)趨勢的第二個因素是匆忙的開發(fā)周期。開發(fā)嵌入式系統(tǒng)會給企業(yè)帶來巨大的管理成本,這使得企業(yè)希望昨天進(jìn)入市場。此外,初創(chuàng)企業(yè),小型企業(yè)和銷售團(tuán)隊因樂觀地設(shè)定生產(chǎn)日期而不考慮開發(fā)強大的生產(chǎn)就緒系統(tǒng)所需的實際工作而臭名昭著。許多工程師要么在這種情況下拒絕接受管理,要么他們確實發(fā)現(xiàn)他們的擔(dān)憂被置若罔聞。最終結(jié)果是角落被切割以試圖滿足不切實際的最后期限,這導(dǎo)致設(shè)計僅包含僅在一系列非常受控的條件下工作的功能代碼。
有助于發(fā)布功能性而非生產(chǎn)意圖的嵌入式系統(tǒng)的最終因素是缺乏對如何構(gòu)建生產(chǎn)意圖嵌入式系統(tǒng)的理解。嵌入式軟件和系統(tǒng)工程師需求量大,供不應(yīng)求。這種情況導(dǎo)致公司在校外或從不同學(xué)科的工程師(如網(wǎng)絡(luò)或應(yīng)用程序開發(fā))中擔(dān)任重要角色。結(jié)果是如何正確地構(gòu)建和實現(xiàn)健壯的嵌入式系統(tǒng)的知識差距,這些嵌入式系統(tǒng)不需要每天更新修補程序錯誤并修復(fù)安全問題。
但是,綠色和跨學(xué)科的工程師并非完整的故事,導(dǎo)致人們對生產(chǎn)嵌入式系統(tǒng)的真正缺乏了解。經(jīng)常會要求訓(xùn)練有素且經(jīng)驗豐富的工程師開發(fā)原型或概念證明。為了向管理人員演示,工程師們提供了一個基于功能性示例代碼的漂亮功能原型。演示很順利,但該系統(tǒng)只能在受控條件下工作。但由于演示進(jìn)展順利,管理層希望立即運送系統(tǒng),而不是理解仍需要做很多工作才能使系統(tǒng)生產(chǎn)準(zhǔn)備就緒。
嵌入式系統(tǒng)正在進(jìn)入我們生活的每一個角落。對于在受控條件下操作的一些設(shè)備,僅使用功能代碼可能是好的。但隨著物聯(lián)網(wǎng)和自主智能社會的快速發(fā)展,運輸功能而非生產(chǎn)代碼的危險趨勢是等待發(fā)生的事故。
-
嵌入式
+關(guān)注
關(guān)注
5092文章
19178瀏覽量
307693 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21833 -
華強PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27938 -
華強pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43178
發(fā)布評論請先 登錄
相關(guān)推薦
評論