發(fā)就像戴著鐐銬跳舞的大象:約束下的工程智慧)
硬件開(kāi)發(fā) 戴著鐐銬跳舞的大象太真實(shí)了這個(gè)比喻我越品越覺(jué)得貼切。大象是硬件開(kāi)發(fā)的體量——一個(gè)產(chǎn)品從想法到落地牽扯元器件選型、原理圖設(shè)計(jì)、PCB Layout、結(jié)構(gòu)堆疊、嵌入式軟件、測(cè)試認(rèn)證、生產(chǎn)供應(yīng)鏈每一個(gè)環(huán)節(jié)都是真金白銀的投入和實(shí)打?qū)嵉奈锢硎澜缃换?。鐐銬則是它繞不開(kāi)的天花板——開(kāi)發(fā)周期、物料成本、功耗上限、信號(hào)完整性、散熱約束、老板的deadline甚至是你根本控制不了的上游芯片交期。你永遠(yuǎn)不可能像純軟件那樣一個(gè)CtrlS就萬(wàn)事大吉寫(xiě)錯(cuò)了重來(lái)成本極低硬件的每一次改版都是用時(shí)間和金錢(qián)在買(mǎi)單。更麻煩的是硬件開(kāi)發(fā)不僅要做出來(lái)還要做到量產(chǎn)要做到在成千上萬(wàn)臺(tái)設(shè)備上穩(wěn)定運(yùn)行這讓它每一步都像是在負(fù)重前行。這篇文章不會(huì)跟你講那些教科書(shū)上枯燥的理論我盡量用做過(guò)項(xiàng)目的人才有的體感來(lái)說(shuō)事結(jié)合我這些年踩過(guò)的坑、悟出的道理聊聊硬件開(kāi)發(fā)的本質(zhì)約束、項(xiàng)目推進(jìn)中的關(guān)鍵決策、以及結(jié)合當(dāng)下像鴻蒙這類(lèi)新生態(tài)帶來(lái)的開(kāi)發(fā)思路轉(zhuǎn)變。也會(huì)順帶聊聊美團(tuán)硬件工程師筆試這類(lèi)招聘考察背后的能力模型以及硬件開(kāi)發(fā)筆記到底該怎么記才真正有用。先聊聊“鐐銬”到底長(zhǎng)什么樣很多人入行前對(duì)硬件開(kāi)發(fā)的想象是——對(duì)著芯片手冊(cè)畫(huà)畫(huà)原理圖焊接幾塊板子調(diào)通功能就完事了。真做起來(lái)才發(fā)現(xiàn)這只是熱身都算不上。硬件開(kāi)發(fā)的鐐銬從來(lái)不是單一維度的它是一整套互相牽制的約束網(wǎng)絡(luò)。1.1 物理世界是終極天花板軟件世界里的Bug往往是邏輯錯(cuò)誤找到了根源改一行代碼就結(jié)束了硬件世界的Bug很詭異可能是電源紋波太大可能是阻抗不匹配導(dǎo)致信號(hào)反射可能是地環(huán)路引入了噪聲也可能是溫度一高芯片就罷工。每一個(gè)問(wèn)題的背后都是電磁學(xué)、熱力學(xué)、材料科學(xué)這些底層物理規(guī)則在起作用。舉個(gè)例子你是做IoT設(shè)備的系統(tǒng)待機(jī)電流要小于10uA這時(shí)你選的主控睡眠模式漏電流是3uA電源芯片的靜態(tài)功耗是4uA再加上上拉電阻和分壓電阻的漏電整個(gè)系統(tǒng)的底噪就已經(jīng)到了8uA以上。你費(fèi)盡心機(jī)把軟件優(yōu)化到極致壓測(cè)結(jié)果依然卡在11uA左右過(guò)不了標(biāo)。這沒(méi)辦法靠軟磨硬泡解決物理規(guī)律決定了部分硬件選型從一開(kāi)始就是個(gè)錯(cuò)誤。這就是硬件開(kāi)發(fā)最考驗(yàn)人的地方——你在做決策的時(shí)候就要往前看三步。選型的時(shí)候大概能估算出系統(tǒng)的底噪是多少留給外圍電路多少余量最終的規(guī)格能不能達(dá)成。如果只看芯片品牌和價(jià)格就下單后期調(diào)試再多也是事倍功半。1.2 時(shí)間窗口與供應(yīng)鏈的雙重?cái)D壓硬件開(kāi)發(fā)很少有“萬(wàn)事俱備”的時(shí)候。往往芯片還在等樣片結(jié)構(gòu)件還在開(kāi)模卻要在一個(gè)明確的時(shí)間點(diǎn)看到能跑能演示的樣機(jī)。而供應(yīng)鏈的波動(dòng)又讓這件事難上加難。我經(jīng)歷過(guò)因?yàn)橐活w主控缺貨整塊板子的設(shè)計(jì)方案重新選了三次的窘境也經(jīng)歷過(guò)電容電阻這種基礎(chǔ)物料漲了三倍價(jià)項(xiàng)目成本一下被擊穿的狀況。這類(lèi)問(wèn)題在軟件開(kāi)發(fā)里基本不存在但在硬件開(kāi)發(fā)里卻是家常便飯。一顆物料的交期長(zhǎng)可能會(huì)讓整個(gè)項(xiàng)目的進(jìn)度繞一大段彎路。這就逼迫硬件工程師在做方案選型時(shí)不能只考慮技術(shù)指標(biāo)替代料是否好找、pin-to-pin兼容的是否足夠多、采購(gòu)渠道是否穩(wěn)定都要納入考量。這種思維模式和純寫(xiě)代碼是完全不同的——代碼跑在通用平臺(tái)上而硬件工程師所有的設(shè)計(jì)目標(biāo)都在為一個(gè)非常具體的、由成千上萬(wàn)個(gè)物料組成的物理實(shí)體服務(wù)。所以這顆“鐐銬”不僅僅鎖在你身上還鎖在整個(gè)供應(yīng)鏈上任何一環(huán)掉鏈子最終都會(huì)成為你在Debug現(xiàn)場(chǎng)甚至?xí)h室里挨罵的原因。1.3 跨職能協(xié)作帶來(lái)的隱性成本有人覺(jué)得硬件工程師只跟電路打交道實(shí)際上要跟結(jié)構(gòu)工程師溝通堆疊和開(kāi)孔位置要跟嵌入式軟件工程師對(duì)齊寄存器配置和中斷引腳要跟測(cè)試工程師商討測(cè)試規(guī)范和夾具設(shè)計(jì)還要跟采購(gòu)、PM、品質(zhì)、產(chǎn)線去解釋——為什么這塊板子改版了為什么這個(gè)地方要做阻抗控制為什么這個(gè)物料不能用便宜替代的。這種跨職能的溝通往往是壓垮項(xiàng)目進(jìn)度最現(xiàn)實(shí)也最容易被忽略的一根稻草。設(shè)計(jì)被結(jié)構(gòu)干涉擋住軟件找不到啟動(dòng)原因測(cè)試機(jī)臺(tái)燒了板子產(chǎn)線良率上不去最后都會(huì)順著線索追到硬件這里。戴鐐銬跳舞真正累的地方在于你承擔(dān)的不僅是自己的那部分設(shè)計(jì)還要協(xié)調(diào)所有上下游的技術(shù)矛盾。大多數(shù)產(chǎn)品的延期并不是某一個(gè)點(diǎn)徹底無(wú)解而是無(wú)數(shù)個(gè)小摩擦攢出來(lái)的系統(tǒng)性延遲。核心開(kāi)發(fā)流程里的關(guān)鍵決策點(diǎn)硬件開(kāi)發(fā)項(xiàng)目拆開(kāi)了看無(wú)非是需求分析、總體設(shè)計(jì)、原理圖繪制、PCB設(shè)計(jì)、打樣調(diào)試、驗(yàn)證迭代、量產(chǎn)維護(hù)這套流程。流程本身誰(shuí)都會(huì)背難在每個(gè)環(huán)節(jié)里頭的關(guān)鍵決策上。2.1 需求評(píng)審先決條件不是功能而是邊界條件很多硬件Project開(kāi)局就注定結(jié)局已經(jīng)埋雷了。因?yàn)樾枨笤u(píng)審的時(shí)候大家只盯著功能清單——能連藍(lán)牙、能測(cè)溫度、能上傳數(shù)據(jù)卻忽略了一個(gè)致命的問(wèn)題這些東西要在什么環(huán)境下工作供電范圍是多少待機(jī)時(shí)間要多長(zhǎng)工作溫度是多少EMC要過(guò)什么等級(jí)標(biāo)準(zhǔn)如果這些邊界條件不定義清楚后續(xù)做設(shè)計(jì)時(shí)就是無(wú)根之萍。比如老板說(shuō)目標(biāo)是做一款“便攜式有源音箱”聽(tīng)起來(lái)很簡(jiǎn)單。但你得繼續(xù)往下問(wèn)便攜到多小電池容量能塞多少音腔體積多少額定功率多大續(xù)航目標(biāo)幾個(gè)小時(shí)如果在會(huì)議室里沒(méi)把這些參數(shù)撕扯清楚工程師按自己的經(jīng)驗(yàn)假設(shè)去做做到后面一定會(huì)發(fā)現(xiàn)——結(jié)構(gòu)上的空間根本放不下預(yù)想中的電路板電池也達(dá)不到標(biāo)稱的續(xù)航。所以在需求評(píng)審階段真正該做的是把模糊的功能描述轉(zhuǎn)變成可測(cè)量的技術(shù)指標(biāo)并且逐條拉通各個(gè)部門(mén)的確認(rèn)。每條需求都要能和機(jī)構(gòu)、軟件、測(cè)試、生產(chǎn)的限制條件關(guān)聯(lián)起來(lái)最終生成一個(gè)明確的設(shè)計(jì)規(guī)格書(shū)。這一階段多花三天后面就能省三個(gè)星期的“返工地獄”。2.2 原理圖設(shè)計(jì)真正的專(zhuān)業(yè)能力體現(xiàn)在細(xì)節(jié)取舍原理圖設(shè)計(jì)是硬件開(kāi)發(fā)最關(guān)鍵的一環(huán)。外行人覺(jué)得原理圖無(wú)非是照著器件手冊(cè)把引腳連起來(lái)事實(shí)上器件手冊(cè)只告訴你每個(gè)引腳的推薦接法沒(méi)告訴你為什么有些引腳要加下拉電阻為什么關(guān)鍵的電源輸入要加磁珠或者π型濾波為什么高速信號(hào)線要包地。真正的項(xiàng)目經(jīng)驗(yàn)體現(xiàn)在這些面向成本、電磁兼容、量產(chǎn)穩(wěn)定性的微調(diào)上。原理圖上任何一個(gè)看似多余的電容電阻都有它的故事。有的是為了濾除高頻噪聲有的是為靜電防護(hù)提供泄放回路有的是給芯片復(fù)位引腳做時(shí)序匹配。你省略一個(gè)0歐姆電阻看起來(lái)省了幾分錢(qián)但它可能是為了調(diào)試時(shí)方便斷開(kāi)電源網(wǎng)絡(luò)測(cè)量電流而留下的活口。經(jīng)驗(yàn)豐富的硬件工程師在畫(huà)原理圖的時(shí)候會(huì)在心里預(yù)演整塊板子的工作狀態(tài)。他會(huì)考慮電源的上電時(shí)序考慮芯片復(fù)位時(shí)IO口的默認(rèn)電平會(huì)不會(huì)引起外設(shè)誤動(dòng)作考慮敏感信號(hào)回路的面積是否過(guò)大考慮哪些信號(hào)可能會(huì)互相干擾。這個(gè)階段看得越細(xì)后面PCB布線和Debug就越輕松。2.3 PCB設(shè)計(jì)比電路原理更復(fù)雜的物理戰(zhàn)資深工程師都明白一個(gè)道理一塊電路能不能穩(wěn)定工作從原理圖上看不出來(lái)但PCB Layout能決定六七成。原理圖是邏輯層面PCB才是物理實(shí)現(xiàn)。兩個(gè)地的回路面積不一樣效果天差地別同一條信號(hào)線走在內(nèi)層還是外層走線寬一點(diǎn)窄一點(diǎn)阻抗差多少都直接影響輻射、串?dāng)_和時(shí)序余量。PCB設(shè)計(jì)中經(jīng)常被新手忽視的一個(gè)問(wèn)題是回流路徑。高速數(shù)字信號(hào)從芯片A傳到芯片B看起來(lái)是走了一條信號(hào)線但實(shí)際上電流必須通過(guò)地平面回流。如果這個(gè)回流路徑被切斷了或者繞了很遠(yuǎn)的路整個(gè)環(huán)路面積就會(huì)變大不僅是EMC輻射會(huì)超標(biāo)信號(hào)質(zhì)量也會(huì)嚴(yán)重劣化。所以在布局時(shí)就要提前規(guī)劃好哪些區(qū)域是數(shù)字區(qū)、哪些是模擬區(qū)、哪些區(qū)域的地平面要完整。我個(gè)人的經(jīng)驗(yàn)是PCB布局階段寧可多花三五個(gè)小時(shí)去思考擺放位置、考慮發(fā)熱元件的散熱路徑、規(guī)劃連接器的出線方向也千萬(wàn)不要草草排完就去布線。布局基本決定了一塊板子布線是否能順利也決定了后期是否能調(diào)試。所謂“磨刀不誤砍柴工”在硬件項(xiàng)目里就是字面意義上的真理。從招聘筆試和知識(shí)復(fù)盤(pán)看清基本功跟這個(gè)標(biāo)題一起出現(xiàn)的一些熱搜詞挺值得琢磨的比如美團(tuán)硬件開(kāi)發(fā)工程師筆試內(nèi)容以及硬件開(kāi)發(fā)筆記。招聘筆試和日常筆記表面上是兩件小事但它們映射的其實(shí)是同一個(gè)根本問(wèn)題——硬件工程師的基本功和知識(shí)體系是否足夠扎實(shí)。3.1 美團(tuán)硬件工程師筆試背后的能力要求互聯(lián)網(wǎng)公司的硬件崗位往往不同于傳統(tǒng)硬件公司它們更強(qiáng)調(diào)系統(tǒng)思維也更關(guān)注把技術(shù)與實(shí)際商業(yè)場(chǎng)景結(jié)合的能力。美團(tuán)這類(lèi)公司的硬件崗位往往和即時(shí)配送、無(wú)人配送、智能倉(cāng)儲(chǔ)、IoT設(shè)備管理相關(guān)所以筆試題一般不會(huì)單純考死板的芯片手冊(cè)參數(shù)它更側(cè)重考察幾個(gè)核心能力。第一是模擬電路和數(shù)字電路的基本功。運(yùn)放電路的計(jì)算、三極管工作狀態(tài)判斷、邏輯門(mén)的時(shí)序分析都算比較高頻。第二是嵌入式系統(tǒng)的基本概念包括中斷機(jī)制、時(shí)鐘樹(shù)、通信接口協(xié)議等。第三是電源設(shè)計(jì)尤其是Buck、Boost這類(lèi)DC-DC的拓?fù)渫茖?dǎo)和效率分析因?yàn)閹缀跛杏布到y(tǒng)都在跟功耗和熱較勁。第四是關(guān)于信號(hào)完整性與EMC的基礎(chǔ)認(rèn)知比如端接匹配、去耦電容的布置策略這類(lèi)問(wèn)題。如果準(zhǔn)備這類(lèi)筆試我建議別去背太多復(fù)雜公式反而要把基本的歐姆定律、電容充放電、運(yùn)放虛短虛斷、濾波器的截止頻率計(jì)算這類(lèi)最基礎(chǔ)的內(nèi)容吃透。硬件知識(shí)是一棵技能樹(shù)所有高階的技巧都是從這些基礎(chǔ)概念上長(zhǎng)出來(lái)的。筆試不是看你記住了多少芯片型號(hào)而是看你能不能把基礎(chǔ)知識(shí)活用在具體的問(wèn)題場(chǎng)景里。另外還要關(guān)注電路設(shè)計(jì)中的工程化問(wèn)題比如良率、成本、可靠性、可量產(chǎn)性的權(quán)衡這些常常是互聯(lián)網(wǎng)公司硬件崗特別看重的素質(zhì)。3.2 硬件開(kāi)發(fā)筆記到底記什么才不浪費(fèi)時(shí)間很多人記硬件開(kāi)發(fā)筆記就是貼幾張芯片手冊(cè)截圖、存幾個(gè)參考設(shè)計(jì)鏈接或者復(fù)述一遍原理圖怎么畫(huà)。這類(lèi)筆記記錄下來(lái)最多就是存?zhèn)€檔過(guò)了三個(gè)月自己也懶得再看第二遍。真正有價(jià)值的筆記應(yīng)該是“面向問(wèn)題的復(fù)盤(pán)”。我自己的習(xí)慣是工作中每遇到一個(gè)費(fèi)盡周折才解決的Bug都會(huì)單獨(dú)開(kāi)一個(gè)筆記文檔結(jié)構(gòu)大致是這樣的問(wèn)題現(xiàn)象是怎么樣的當(dāng)時(shí)的調(diào)試環(huán)境和儀器設(shè)置是什么排查過(guò)哪些路徑、排除過(guò)哪些可能原因最終定位到的根因是什么從原理上解釋為什么會(huì)出現(xiàn)這樣的問(wèn)題這次教訓(xùn)對(duì)后續(xù)設(shè)計(jì)流程有什么指導(dǎo)意義記錄最大價(jià)值在于“回溯路徑”。你在調(diào)試某塊板子時(shí)可能花了一天時(shí)間才發(fā)現(xiàn)是某個(gè)引腳的默認(rèn)電平不對(duì)。走通之后如果沒(méi)有記錄你當(dāng)時(shí)是怎么一步步縮小范圍的下一次遇到相似問(wèn)題又得從零開(kāi)始摸索。硬件開(kāi)發(fā)過(guò)程中踩過(guò)的坑都是非常昂貴的經(jīng)驗(yàn)難道不應(yīng)該讓它發(fā)揮最大價(jià)值先不說(shuō)這是給公司省了探路成本至少給未來(lái)的自己少添一點(diǎn)堵。硬件開(kāi)發(fā)筆記不一定要文筆多好也不需要整理得多精美。關(guān)鍵是一定要有“因果鏈”。一個(gè)低概率發(fā)生的偶發(fā)問(wèn)題往往比穩(wěn)定復(fù)現(xiàn)的問(wèn)題更具記錄價(jià)值因?yàn)樗ǔR馕吨到y(tǒng)的某個(gè)邊界條件沒(méi)被充分理解。把這些邊界條件沉淀下來(lái)才是經(jīng)驗(yàn)。鴻蒙時(shí)代硬件開(kāi)發(fā)的解題方式變了聊到鴻蒙結(jié)合硬件開(kāi)發(fā)這是最近很多嵌軟和硬件群里的熱議話題。有人把它當(dāng)成簡(jiǎn)單的換皮RTOS或者換個(gè)編譯環(huán)境但如果真正用鴻蒙的生態(tài)去思考硬件開(kāi)發(fā)你會(huì)發(fā)現(xiàn)解題思路是有些變化的。從技術(shù)層面來(lái)看鴻蒙跟傳統(tǒng)嵌入式最大的區(qū)別在于分布式能力。傳統(tǒng)硬件設(shè)備往往是信息孤島哪怕支持藍(lán)牙或者Wi-Fi設(shè)備之間要實(shí)現(xiàn)互聯(lián)和資源協(xié)同也要做大量私有協(xié)議的適配。而鴻蒙的分布式軟總線把設(shè)備硬件能力“虛擬化”和“共享化”了——比如一個(gè)帶攝像頭的設(shè)備可以給不帶攝像頭的設(shè)備提供視頻流能力一個(gè)帶屏設(shè)備可以遠(yuǎn)程展示另一個(gè)設(shè)備的數(shù)據(jù)界面。這種架構(gòu)反向?qū)τ布O(shè)計(jì)提出了更高要求比如要支持更低功耗的待機(jī)喚醒要預(yù)留足夠的安全相關(guān)硬件能力像安全單元或者加解密模塊要讓通信模塊的射頻性能更好以適應(yīng)設(shè)備間頻繁的發(fā)現(xiàn)和連接。同時(shí)鴻蒙生態(tài)對(duì)硬件開(kāi)發(fā)的另一大影響是驅(qū)動(dòng)框架的標(biāo)準(zhǔn)化。基于HDFHarmonyOS Driver Framework的設(shè)備驅(qū)動(dòng)開(kāi)發(fā)讓驅(qū)動(dòng)層與系統(tǒng)層解耦得更徹底。硬件工程師寫(xiě)的驅(qū)動(dòng)代碼從傳統(tǒng)Linux的字符設(shè)備驅(qū)動(dòng)邏輯中解放出來(lái)更加關(guān)注硬件本身的抽象描述。這意味著硬件設(shè)計(jì)和驅(qū)動(dòng)的邊界要定義得更清晰。你在原理圖階段畫(huà)出的引腳分配不只是給自己看還要在HDF的配置代碼里描述清楚——這個(gè)GPIO是中斷輸入還是輸出控制那個(gè)I2C總線上掛了哪幾個(gè)外設(shè)地址是多少。這些需求反過(guò)來(lái)要求硬件設(shè)計(jì)具備更強(qiáng)的模塊化和標(biāo)準(zhǔn)化思維。在做硬件方案時(shí)你需要更早地了解上層軟件框架對(duì)硬件的抽象方式而不是像過(guò)去那樣硬件先把板子做出來(lái)再讓軟件去適配寄存器從而盡量減少“硬件定死、軟件來(lái)遷就”的別扭現(xiàn)狀。實(shí)操中的那些典型問(wèn)題和排障思路實(shí)錄講完了宏觀約束和時(shí)代變化聊幾個(gè)更實(shí)際的項(xiàng)目場(chǎng)景。這里只整理我親身踩過(guò)、也幫朋友排過(guò)的幾種典型問(wèn)題給讀者建立一個(gè)基礎(chǔ)的排查框架。5.1 上電后電流異常偏大現(xiàn)象板子一上電電源指示燈亮但電流到了標(biāo)稱值的兩倍芯片很快發(fā)熱。 排查路徑先用熱成像或者手指經(jīng)驗(yàn)有限時(shí)慎用去找發(fā)熱最明顯的器件。拿萬(wàn)用表量關(guān)鍵電源軌的對(duì)地阻抗排除焊接短路。再看電源芯片的反饋電阻是否焊錯(cuò)規(guī)格導(dǎo)致輸出電壓比預(yù)設(shè)高。對(duì)照原理圖逐段斷開(kāi)負(fù)載縮小故障范圍。 這類(lèi)問(wèn)題百分之六七十其實(shí)是焊接或物料貼裝錯(cuò)誤但偶爾也會(huì)碰到芯片本身被打磨過(guò)或是假貨的情況。所以從正規(guī)渠道購(gòu)買(mǎi)器件關(guān)鍵物料是我常年堅(jiān)持的底線。5.2 通信間歇性失敗現(xiàn)象設(shè)備偶爾連不上手機(jī)或網(wǎng)關(guān)重啟之后又恢復(fù)正常毫無(wú)規(guī)律。 排查路徑先看通信模塊的供電測(cè)量通信發(fā)生瞬間的電源電壓跌落幅度。很多無(wú)線模塊在發(fā)射瞬間的電流尖峰很大如果前端電源走線太細(xì)或儲(chǔ)能電容不夠電壓會(huì)被拉低到模塊的欠壓復(fù)位閾值以下于是模塊悄悄重啟了表現(xiàn)就是“連不上”或者“時(shí)而斷線”。 這類(lèi)問(wèn)題的根源常常不在通信鏈路本身而在電源設(shè)計(jì)余量預(yù)留不足。給模塊的電源引腳就近加一個(gè)100uF甚至更大容量的電容往往能解決大量看似玄學(xué)的通信問(wèn)題。5.3 產(chǎn)品在低溫環(huán)境下工作異?,F(xiàn)象設(shè)備在常溫下怎么測(cè)都穩(wěn)定進(jìn)了高低溫箱溫度降到零下屏幕就開(kāi)始花屏或者數(shù)據(jù)錯(cuò)亂。 排查路徑關(guān)注晶振是否起振穩(wěn)定尤其是一些低成本被動(dòng)晶振在低溫下可能出現(xiàn)起振困難或頻率偏差加大的情況進(jìn)而影響通信時(shí)序。再檢查L(zhǎng)DO或DC-DC的啟動(dòng)特性低溫下某些電容的ESR變化會(huì)影響電源環(huán)路穩(wěn)定性。 這類(lèi)問(wèn)題在設(shè)計(jì)階段就應(yīng)當(dāng)做高低溫裕量測(cè)試而不是等項(xiàng)目量產(chǎn)了才發(fā)現(xiàn)。樣機(jī)階段偷懶沒(méi)做環(huán)境試驗(yàn)后面賠的可能是整批貨的聲譽(yù)。類(lèi)似這樣的問(wèn)題其實(shí)還有很多可以看到絕大多數(shù)硬件Bug都是幾個(gè)側(cè)面交叉作用的結(jié)果電源、時(shí)序、地、信號(hào)完整性、溫度特性。排查的時(shí)候不要指望一步到位先快速建立假設(shè)再用最小代價(jià)的實(shí)驗(yàn)去驗(yàn)證假設(shè)如此循環(huán)直到鎖定真兇。關(guān)于“戴著鐐銬跳舞”的體感與進(jìn)階思路回到標(biāo)題那句話上。硬件開(kāi)發(fā)確實(shí)像一頭戴著鐐銬的大象目標(biāo)宏大但路徑受限。不過(guò)換個(gè)角度來(lái)看鐐銬本身就是這套職業(yè)的魅力所在——它不允許你拍腦袋逼迫你系統(tǒng)性地思考每一個(gè)決策背后交織的要素逼迫你去尊重物理世界的客觀規(guī)律。能在這些嚴(yán)苛的限制條件里把產(chǎn)品做出來(lái)本身就是一種非常有成就感的創(chuàng)作活動(dòng)。想在這個(gè)領(lǐng)域走得更遠(yuǎn)我個(gè)人有幾個(gè)比較深刻的體會(huì)。第一永遠(yuǎn)不要只滿足于“板子能跑”要追問(wèn)為什么能跑以及什么情況下它可能跑不了。把所有正常工作背后的邊界和原理吃透你才能真正把控產(chǎn)品質(zhì)量。第二盡早建立“設(shè)計(jì)-驗(yàn)證-復(fù)盤(pán)-標(biāo)準(zhǔn)化”的閉環(huán)習(xí)慣。每完成一個(gè)項(xiàng)目把設(shè)計(jì)規(guī)范、檢查清單、問(wèn)題復(fù)盤(pán)都沉淀成團(tuán)隊(duì)的資產(chǎn)而不是讓經(jīng)驗(yàn)只存在一兩個(gè)人的腦子里。第三別抗拒新的軟件生態(tài)和新的硬件架構(gòu)。從傳統(tǒng)的MCU到Linux應(yīng)用處理器再到如今鴻蒙這種面向全場(chǎng)景的分布式OS硬件開(kāi)發(fā)的解題方式一直在變但核心邏輯始終相通——那就是在真實(shí)物理世界的限制下用工程化手段實(shí)現(xiàn)產(chǎn)品的價(jià)值。最后再分享一個(gè)個(gè)人偏好我每做一個(gè)新項(xiàng)目的硬件方案都會(huì)先把上一個(gè)項(xiàng)目的復(fù)盤(pán)筆記翻出來(lái)看一遍。不是因?yàn)橛浶圆缓枚且驗(yàn)橛布_(kāi)發(fā)里踩過(guò)的坑往往不會(huì)只出現(xiàn)一次。它們只是換了一副面孔換了一個(gè)項(xiàng)目等在那里看你是否真的有長(zhǎng)進(jìn)。