調(diào)試是嵌入式設(shè)計的重要組成部分;必須跨越硬件/軟件鴻溝的一種。在系統(tǒng)級別,嵌入式設(shè)計的功能越來越多地由固件定義,因此避免錯誤需要具有特定學科的工程師在項目的設(shè)計階段密切合作。這也可能意味著在不可避免地出現(xiàn)錯誤時抵制指責的沖動。
或許正是軟件定義硬件的本質(zhì)使現(xiàn)代嵌入式設(shè)計成為一個如此有趣的職業(yè)。每個新的微控制器 (MCU) 似乎都提供了更高的集成度和更高級的功能,但在它被編程之前它完全沒有意義。雖然這種級別的集成和配置顯然是一個促成因素,并且正在為產(chǎn)品設(shè)計帶來巨大的進步,但它有時會給工程師帶來無法預料的問題。
MCU 等嵌入式組件提供的功能級別和可配置特性也在不斷提高,這些組件提供了許多并非所有設(shè)計都需要的特性。這些額外的功能可能會被忽略,很少會引起問題。
正如大多數(shù)工程師所理解的那樣,這些功能通常由可以通過軟件修改的寄存器控制。因此,它們在上電時將具有默認設(shè)置,如果保持不變,將繼續(xù)在這些默認設(shè)置下運行。在許多情況下,這可能不會造成問題,但如果這些功能仍未使用并且可能未經(jīng)測試,那么它們的影響可能會以某種無法預料的方式感受到。系統(tǒng)中可能會出現(xiàn)錯誤,這是由可能被忽略的完全合法的功能引起的。
即使在理想條件下,查找故障也可能很困難、耗時且成本高昂。通常,故障將通過其影響來識別,這將提供足夠的證據(jù)讓工程師能夠追蹤原因。這個原因是硬件還是軟件相關(guān)在很大程度上無關(guān)緊要,但也許仍然存在爭議;重要的是它被找到并糾正了。
如果故障的原因是未正確初始化的低級功能,那么找到它可能會變得更具挑戰(zhàn)性。了解硬件平臺的初始狀態(tài)如何影響整個設(shè)計需要對整個系統(tǒng)有更高的了解,并且追蹤這些難以捉摸的條件確實會消耗資源。
例如,考慮訪問串行閃存的 MCU 上的 SPI 總線,這是在許多嵌入式系統(tǒng)中使用的相對簡單的功能。如果在存儲的值中檢測到錯誤,則表明內(nèi)存而不是 MCU 出現(xiàn)了故障。當從閃存的狀態(tài)寄存器連續(xù)讀取顯示它正在檢測讀/寫錯誤時,這是一位客戶的經(jīng)驗??梢岳斫獾氖?,假設(shè)存儲設(shè)備出現(xiàn)故障,這一理論得到了證實,即如果在狀態(tài)寄存器讀取之間引入短暫的延遲,檢測到的故障數(shù)量似乎會減少。此外,電源循環(huán)似乎可以暫時清除故障。
工程師們認為這些癥狀表明串行存儲器出現(xiàn)故障,盡管它仍然在其指定的周期限制內(nèi),僅完成了大約 60k 的寫入周期。當串行閃存設(shè)備返回 Adesto 進行進一步測試時,即使執(zhí)行了超過 300k 的寫入周期,也沒有發(fā)現(xiàn)故障。
為了追查真正的故障,Adesto 工程師調(diào)查了客戶的應用并探測了 SPI 信號??雌饋硎莾?nèi)存設(shè)備的故障,實際上是系統(tǒng)噪音問題,而且很容易糾正。雖然部分原因是 MCU 和閃存之間的 PCB 走線阻抗不匹配,但噪聲并不完全是 PCB 設(shè)計不良或信號完整性問題的結(jié)果。
盡管看起來是 PCB 或電路設(shè)計問題,但噪聲實際上是 SPI 信號上的過沖和下沖,這是由信號驅(qū)動強度過大引起的。過沖足以破壞閃存設(shè)備的電荷泵并導致讀寫錯誤。在某些情況下,SPI 信號上的過沖和下沖也可以解釋為信號轉(zhuǎn)換,這也可能導致讀取或?qū)懭脲e誤。

顯示 SPI 線上存在的過沖和下沖的跟蹤圖像
一種可能的解決方案是在信號跡線上放置一個 RC 電路,以減慢轉(zhuǎn)換速度。然而,人們發(fā)現(xiàn)該設(shè)計基于一個相對較新的 MCU,它允許在固件中修改 I/O 引腳的驅(qū)動強度。降低信號的驅(qū)動強度足以消除 SPI 信號線上的過沖和下沖,有效消除系統(tǒng)級噪聲源。
這里最重要的一點并不是閃存設(shè)備正在盡最大努力應對大量系統(tǒng)噪聲,而是 MCU 上的可配置功能可能會引入很容易被解釋為單獨部件中的故障的影響的設(shè)計。在這種情況下,通過穩(wěn)健的設(shè)計方法檢測到故障,并通過 Adesto 工程師的勤奮解決。
也許這里真正的教訓是,看似硬件故障的問題可以通過軟件輕松修復。一個組件中看似故障的情況可以追溯到另一個組件中的錯誤配置。硬件和軟件工程師以及客戶和供應商之間的工作關(guān)系應該足夠牢固,以承受最新技術(shù)設(shè)計可能帶來的挑戰(zhàn)。即使默認設(shè)置旨在提供幫助,也應該對其進行驗證。優(yōu)化這些設(shè)置可以顯著提高系統(tǒng)性能和可靠性。
作者:Paul Hill Gordon MacNee
審核編輯:郭婷
-
mcu
+關(guān)注
關(guān)注
147文章
18639瀏覽量
387766 -
嵌入式
+關(guān)注
關(guān)注
5186文章
20169瀏覽量
329100 -
SPI
+關(guān)注
關(guān)注
17文章
1867瀏覽量
99883
發(fā)布評論請先 登錄
Lora基站在物聯(lián)網(wǎng)應用的重要性
芯源半導體在物聯(lián)網(wǎng)設(shè)備中具體防護方案
廣凌智慧教室整體解決方案:教室物聯(lián)網(wǎng)應用
學習物聯(lián)網(wǎng)怎么入門?
學習物聯(lián)網(wǎng)可以做什么工作?
物聯(lián)網(wǎng)藍牙模塊有哪些優(yōu)勢?
物聯(lián)網(wǎng)的應用范圍有哪些?
硬件調(diào)試:JLink 驅(qū)動配置與調(diào)試技巧

調(diào)試跨越物聯(lián)網(wǎng)中的硬件
評論