• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

嵌入式軟件工程師,被深夜的硬件調(diào)試擊碎了傲慢

02/13 10:40
859
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

我是老溫,一名熱愛(ài)學(xué)習(xí)的嵌入式工程師。

春節(jié)假期后的第二天,現(xiàn)在已經(jīng)是凌晨三點(diǎn),辦公室里面的日光燈管在工程師的頭頂嘶鳴著,鼠標(biāo)的點(diǎn)擊聲和鍵盤(pán)的按壓聲,在不斷地相互輝映著。

(說(shuō)好的,春節(jié)假期回來(lái)后,兩周內(nèi)進(jìn)行產(chǎn)品小批量生產(chǎn),然后交付給客戶。)

我揉了揉疲憊的雙眼,盯著示波器上扭曲的信號(hào)波形,第28次按下了Debug Tools上面的固件燒錄按鍵,心里面期待奇跡發(fā)生。

某臺(tái)樣機(jī)的LCD顯示屏,顯示圖像時(shí)依然存在撕裂現(xiàn)象,但作為一名飽經(jīng)風(fēng)雨的嵌入式軟件工程師,有時(shí)候我卻信奉,“硬件問(wèn)題都是玄學(xué)”,。。。

“老溫,用最初制作的工程樣機(jī),你的代碼確實(shí)是通過(guò)了單元測(cè)試?!?,硬件組的林工,他把出問(wèn)題產(chǎn)品的硬件測(cè)試報(bào)告推到我面時(shí)說(shuō)道。

“但是你看,換了試產(chǎn)供應(yīng)商后做的樣機(jī),這顆芯片的CLK時(shí)鐘線,在穿過(guò)六層板的第三信號(hào)層時(shí),就會(huì)串?dāng)_DDR的信號(hào)?!?/p>

我看著他用手指點(diǎn)在那些蝌蚪般的蛇形走線上,疲倦的大腦突然意識(shí)到:阻抗信號(hào)完整性,我為啥一直沒(méi)有注意到這個(gè)排查方向?!

“軟件調(diào)試了數(shù)十遍,結(jié)果,問(wèn)題居然出現(xiàn)在硬件制作工藝的差異上?”,望著窗外漆黑的天際,我苦笑一聲。

作為一名嵌入式軟件工程師,平時(shí)都習(xí)慣了在代碼里面編織各種邏輯,卻從未像此刻這般渴望,渴望窺探電路板下銅箔與樹(shù)脂的微觀世界。

三天后。。。

“老溫,來(lái)試試這個(gè)新樣板?!保止と觼?lái)一款新的樣機(jī),焊盤(pán)在太陽(yáng)的照耀下泛著金色的光芒。

我問(wèn):“林工,這次改版跟前兩天調(diào)試的,有啥不一樣嗎?”

林工說(shuō):“我重新改進(jìn)了DDR和CPU相關(guān)的布線,用了嘉立創(chuàng)的盤(pán)中孔工藝,并且重新進(jìn)行了阻抗匹配,你再試試”。

--- 編譯、燒錄、按下RESET按鍵,一整套常規(guī)動(dòng)作下來(lái),

這一次,“奇跡”發(fā)生了,新樣機(jī)運(yùn)行無(wú)誤,圖像照片終于可以完美地顯示在LCD屏幕上面。

 

“為何會(huì)如此神奇,林工,可以詳細(xì)說(shuō)說(shuō)你的改動(dòng)嗎?”,我問(wèn)。

林工說(shuō):“我問(wèn)外包商拿了PCB源文件,發(fā)現(xiàn)他們Layout是用常規(guī)的BGA扇出布線方式,導(dǎo)致PCB上面有較多的過(guò)孔侵占布線空間?!?/p>

“他們?yōu)榱耸〕杀荆€換了PCB打樣的供應(yīng)商,又沒(méi)有注意高速信號(hào)的阻抗匹配,所以就導(dǎo)致了這次問(wèn)題!”

林工接著說(shuō)道,

“我在他們的基礎(chǔ)上,把BGA封裝的芯片改成嘉立創(chuàng)盤(pán)中孔了,也換了打樣供應(yīng)商,在嘉立創(chuàng)做6層板打樣。”

我來(lái)興趣了,接著問(wèn):“為啥盤(pán)中孔會(huì)有如此大的作用?”。

林工繼續(xù)耐心解釋?zhuān)骸爱?dāng)常規(guī)的過(guò)孔侵占了30%的布線空間,我們可以考慮用盤(pán)中孔工藝,0.2mm的樹(shù)脂塞孔既能保持焊盤(pán)完整,又讓阻抗連續(xù)性提升了18%”。

“噢噢,原來(lái)如此,又學(xué)到了?!?,我似懂非懂地點(diǎn)了點(diǎn)頭。

“那你這次又沉金又盤(pán)中孔的,豈不是成本很高?”,我接著說(shuō)。

林工笑著說(shuō),“你這寫(xiě)代碼的不懂,在嘉立創(chuàng),6~32層打板時(shí)可以免費(fèi)使用盤(pán)中孔+沉金加厚工藝,6層板還可以直接用免費(fèi)打樣券,成本又進(jìn)一步降低”。

“我比較過(guò)價(jià)格,10cm*10cm的6層沉金亞黑PCB樣板,在其他廠家光是沉金+盤(pán)中孔的工藝費(fèi)用,就接近400!”

“反正樣板便宜,我現(xiàn)在先多整幾塊給你,你多驗(yàn)證幾遍,沒(méi)問(wèn)題就可以發(fā)布固件進(jìn)入小批量了?!保止ぷ詈笳f(shuō)道。

我看著桌面上一堆金燦燦的PCB和樣機(jī),腦袋突然間陷入了思考,思考起嵌入式軟件和硬件之間的哲學(xué)關(guān)聯(lián)。

在嘉立創(chuàng)的高多層PCB設(shè)計(jì)指南里,我發(fā)現(xiàn)了硬件電路板與軟件分層架構(gòu),有著驚人的相似性:

- 電源層采用銅塊挖空技術(shù),如同代碼中的內(nèi)存池管理。
- 差分信號(hào)層錯(cuò)位堆疊設(shè)計(jì),堪比多線程的鎖機(jī)制。
- 混合介電常數(shù)材料應(yīng)用,像極了軟件里的緩存分級(jí)策略。
-?盤(pán)中孔像極了代碼里的“指針跳轉(zhuǎn)”,繞過(guò)堆棧溢出風(fēng)險(xiǎn);
- 六層堆疊堪比分布式系統(tǒng)的分層架構(gòu),讓電源、信號(hào)、地各司其職;
-?沉金工藝則如同嚴(yán)密的異常處理機(jī)制,將氧化與虛焊的概率收斂至零。

如今,我依然保持著嵌入式軟件工程師的“傲慢”,但工位上的《高速PCB設(shè)計(jì)秘籍》已經(jīng)逐漸開(kāi)始與往年的《C++高級(jí)編程》并駕齊驅(qū)。

我在想:“真正的嵌入式全棧工程師,應(yīng)該既能用代碼馴服晶體管,也能讓銅箔的紋路吟誦出最優(yōu)的算法?!?/p>

我轉(zhuǎn)動(dòng)板卡,讓陽(yáng)光在沉金焊盤(pán)上折射出一道金色光芒,在這個(gè)時(shí)代,最優(yōu)雅的編程語(yǔ)言,可能就隱藏在1oz銅厚的微帶線里。

感謝閱讀,愿各位工程師在未來(lái)的日子里,信號(hào)完整,代碼無(wú)Bug!

相關(guān)推薦