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

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