調(diào)試是嵌入式設(shè)計的重要組成部分;必須跨越硬件/軟件鴻溝的一種。在系統(tǒng)級別,嵌入式設(shè)計的功能越來越多地由固件定義,因此避免錯誤需要具有特定學(xué)科的工程師在項目的設(shè)計階段密切合作。這也可能意味著在不可避免地出現(xiàn)錯誤時抵制指責(zé)的沖動。
或許正是軟件定義硬件的本質(zhì)使現(xiàn)代嵌入式設(shè)計成為一個如此有趣的職業(yè)。每個新的微控制器 (MCU) 似乎都提供了更高的集成度和更高級的功能,但在它被編程之前它完全沒有意義。雖然這種級別的集成和配置顯然是一個促成因素,并且正在為產(chǎn)品設(shè)計帶來巨大的進(jìn)步,但它有時會給工程師帶來無法預(yù)料的問題。
MCU 等嵌入式組件提供的功能級別和可配置特性也在不斷提高,這些組件提供了許多并非所有設(shè)計都需要的特性。這些額外的功能可能會被忽略,很少會引起問題。
正如大多數(shù)工程師所理解的那樣,這些功能通常由可以通過軟件修改的寄存器控制。因此,它們在上電時將具有默認(rèn)設(shè)置,如果保持不變,將繼續(xù)在這些默認(rèn)設(shè)置下運(yùn)行。在許多情況下,這可能不會造成問題,但如果這些功能仍未使用并且可能未經(jīng)測試,那么它們的影響可能會以某種無法預(yù)料的方式感受到。系統(tǒng)中可能會出現(xiàn)錯誤,這是由可能被忽略的完全合法的功能引起的。
即使在理想條件下,查找故障也可能很困難、耗時且成本高昂。通常,故障將通過其影響來識別,這將提供足夠的證據(jù)讓工程師能夠追蹤原因。這個原因是硬件還是軟件相關(guān)在很大程度上無關(guān)緊要,但也許仍然存在爭議;重要的是它被找到并糾正了。
如果故障的原因是未正確初始化的低級功能,那么找到它可能會變得更具挑戰(zhàn)性。了解硬件平臺的初始狀態(tài)如何影響整個設(shè)計需要對整個系統(tǒng)有更高的了解,并且追蹤這些難以捉摸的條件確實(shí)會消耗資源。
例如,考慮訪問串行閃存的 MCU 上的 SPI 總線,這是在許多嵌入式系統(tǒng)中使用的相對簡單的功能。如果在存儲的值中檢測到錯誤,則表明內(nèi)存而不是 MCU 出現(xiàn)了故障。當(dāng)從閃存的狀態(tài)寄存器連續(xù)讀取顯示它正在檢測讀/寫錯誤時,這是一位客戶的經(jīng)驗??梢岳斫獾氖?,假設(shè)存儲設(shè)備出現(xiàn)故障,這一理論得到了證實(shí),即如果在狀態(tài)寄存器讀取之間引入短暫的延遲,檢測到的故障數(shù)量似乎會減少。此外,電源循環(huán)似乎可以暫時清除故障。
工程師們認(rèn)為這些癥狀表明串行存儲器出現(xiàn)故障,盡管它仍然在其指定的周期限制內(nèi),僅完成了大約 60k 的寫入周期。當(dāng)串行閃存設(shè)備返回 Adesto 進(jìn)行進(jìn)一步測試時,即使執(zhí)行了超過 300k 的寫入周期,也沒有發(fā)現(xiàn)故障。
為了追查真正的故障,Adesto 工程師調(diào)查了客戶的應(yīng)用并探測了 SPI 信號??雌饋硎莾?nèi)存設(shè)備的故障,實(shí)際上是系統(tǒng)噪音問題,而且很容易糾正。雖然部分原因是 MCU 和閃存之間的 PCB 走線阻抗不匹配,但噪聲并不完全是 PCB 設(shè)計不良或信號完整性問題的結(jié)果。
盡管看起來是 PCB 或電路設(shè)計問題,但噪聲實(shí)際上是 SPI 信號上的過沖和下沖,這是由信號驅(qū)動強(qiáng)度過大引起的。過沖足以破壞閃存設(shè)備的電荷泵并導(dǎo)致讀寫錯誤。在某些情況下,SPI 信號上的過沖和下沖也可以解釋為信號轉(zhuǎn)換,這也可能導(dǎo)致讀取或?qū)懭脲e誤。
顯示 SPI 線上存在的過沖和下沖的跟蹤圖像
一種可能的解決方案是在信號跡線上放置一個 RC 電路,以減慢轉(zhuǎn)換速度。然而,人們發(fā)現(xiàn)該設(shè)計基于一個相對較新的 MCU,它允許在固件中修改 I/O 引腳的驅(qū)動強(qiáng)度。降低信號的驅(qū)動強(qiáng)度足以消除 SPI 信號線上的過沖和下沖,有效消除系統(tǒng)級噪聲源。
這里最重要的一點(diǎn)并不是閃存設(shè)備正在盡最大努力應(yīng)對大量系統(tǒng)噪聲,而是 MCU 上的可配置功能可能會引入很容易被解釋為單獨(dú)部件中的故障的影響的設(shè)計。在這種情況下,通過穩(wěn)健的設(shè)計方法檢測到故障,并通過 Adesto 工程師的勤奮解決。
也許這里真正的教訓(xùn)是,看似硬件故障的問題可以通過軟件輕松修復(fù)。一個組件中看似故障的情況可以追溯到另一個組件中的錯誤配置。硬件和軟件工程師以及客戶和供應(yīng)商之間的工作關(guān)系應(yīng)該足夠牢固,以承受最新技術(shù)設(shè)計可能帶來的挑戰(zhàn)。即使默認(rèn)設(shè)置旨在提供幫助,也應(yīng)該對其進(jìn)行驗證。優(yōu)化這些設(shè)置可以顯著提高系統(tǒng)性能和可靠性。
作者:Paul Hill Gordon MacNee
審核編輯:郭婷
-
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
366941 -
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317583 -
SPI
+關(guān)注
關(guān)注
17文章
1804瀏覽量
95987
發(fā)布評論請先 登錄
物聯(lián)網(wǎng)藍(lán)牙模塊有哪些優(yōu)勢?
物聯(lián)網(wǎng)的應(yīng)用范圍有哪些?
硬件調(diào)試:JLink 驅(qū)動配置與調(diào)試技巧

物聯(lián)網(wǎng)未來發(fā)展趨勢如何?
物聯(lián)網(wǎng)工程師為什么要學(xué)Linux?
為什么選擇蜂窩物聯(lián)網(wǎng)
宇樹科技在物聯(lián)網(wǎng)方面
物聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?
網(wǎng)關(guān)在物聯(lián)網(wǎng)中的應(yīng)用
物聯(lián)網(wǎng)學(xué)習(xí)路線來啦!
如何進(jìn)行硬件調(diào)試?

評論