嵌AI加速器:邊緣AI落地的關(guān)鍵路徑與實(shí)戰(zhàn)解析)
做嵌入式這幾年大家應(yīng)該都感受到了邊緣AI從“可選”變成了“必選”。我最近在評估幾款面向工業(yè)視覺和智能終端的芯片發(fā)現(xiàn)一個(gè)很明顯的趨勢低功耗MPU開始把AI加速器直接做進(jìn)SoC里而且宣傳口徑驚人地一致——都是“Power Efficient MPUs Embed AI Accelerator”。這話聽起來像營銷話術(shù)但實(shí)際接觸下來這確實(shí)是繼MCU外部NPU之后最值得關(guān)注的一條技術(shù)路線。工業(yè)質(zhì)檢、智能門禁、便攜醫(yī)療、車載感知這些場景對功耗和體積越來越敏感。單純用MCU跑不動像樣的神經(jīng)網(wǎng)絡(luò)上大算力SoC又扛不住成本和散熱于是“低功耗MPU里內(nèi)嵌AI加速器”就成了折中里的最優(yōu)解。這篇文章我會結(jié)合自己選型、開發(fā)、調(diào)優(yōu)的實(shí)操經(jīng)驗(yàn)把這類芯片的架構(gòu)思路、核心參數(shù)、工具鏈配置以及開發(fā)中真正讓人頭疼的坑都過一遍。如果你手里正好有帶NPU的MPU項(xiàng)目或者正在糾結(jié)要不要從MCU方案遷移過來這篇可以當(dāng)個(gè)參考。1. 低功耗MPU內(nèi)嵌AI加速器的設(shè)計(jì)思路與方案選型1.1 為什么非要往MPU里塞AI加速器先把概念理清楚。MPUMicroprocessor Unit在嵌入式語境里一般指的是帶MMU、能跑Linux/RTOS的應(yīng)用處理器比如瑞薩RZ系列、NXP i.MX系列、TI Sitara系列。以前這類芯片的定位是“能跑系統(tǒng)的處理器”AI計(jì)算要么用CPU硬算要么掛個(gè)外置NPU或GPU。但實(shí)際項(xiàng)目里這么干有麻煩。CPU跑神經(jīng)網(wǎng)絡(luò)效率太低一個(gè)YOLO類的檢測模型在四核A53上跑算力被吃光不說內(nèi)存帶寬也頂不住。外置NPU方案倒是算力強(qiáng)可一來成本抬上去二來PCB面積和走線復(fù)雜度增加三來兩顆芯片之間的數(shù)據(jù)搬運(yùn)本身就耗電、費(fèi)時(shí)間。對量產(chǎn)產(chǎn)品來說功耗、BOM成本、體積都是要命的指標(biāo)。所以芯片廠商的思路很直接與其讓你外面掛一顆不如我直接把NPU、DSP這類AI加速單元集成進(jìn)SoC和CPU共享DDR和中斷控制器。這樣一來數(shù)據(jù)不用再通過PCIe或USB在芯片間倒騰系統(tǒng)功耗天然更低二來軟件棧統(tǒng)一一套SDK搞定AI和業(yè)務(wù)邏輯三來對板級設(shè)計(jì)更友好四層板都能把核心電路畫完。我自己評估過幾個(gè)項(xiàng)目最直觀的感受是集成AI加速器的MPU在中等算力區(qū)間1-5 TOPS幾乎是無敵的存在。低于這個(gè)區(qū)間你用MCU輕量模型更劃算高于這個(gè)區(qū)間就要考慮獨(dú)立NPU或者GPU方案。目前很多低功耗MPU宣傳的能效比都在2-5 TOPS/W之間這個(gè)數(shù)對邊緣設(shè)備來說非常能打。1.2 三類主流AI計(jì)算方案的取舍在選型的時(shí)候把市面上常見的方案分成三類來看會清晰很多方案算力區(qū)間典型能效適合場景主要劣勢MCU DSP指令擴(kuò)展0.1-0.5 TOPS高但絕對算力低喚醒詞、異常檢測、簡單分類跑不了復(fù)雜CNN/Transformer低功耗MPU 內(nèi)置NPU/DRP1-5 TOPS2-5 TOPS/W工業(yè)視覺、邊緣盒子、醫(yī)療終端算力上限擺在那大模型跑不動MPU 外置NPU/GPU5-100 TOPS相對較低自動駕駛、服務(wù)器推理成本高、功耗高、板級復(fù)雜我接觸過的項(xiàng)目里有一個(gè)是工業(yè)產(chǎn)線上的瑕疵檢測原來用樹莓派加攝像頭跑Tiny-YOLOv4整板功耗7W左右還得外接散熱風(fēng)扇。后來換成內(nèi)置NPU的低功耗MPU同樣的模型量化到INT8功耗降到3W以內(nèi)風(fēng)扇直接去掉被動散熱搞定。這就是典型的內(nèi)嵌AI加速器帶來的工程紅利。當(dāng)然方案選型不能只看算力。你要考慮工具鏈的成熟度、開源模型能不能順利轉(zhuǎn)換、驅(qū)動和OS怎么集成、量產(chǎn)供貨周期多長。我見過不少項(xiàng)目在樣機(jī)階段發(fā)現(xiàn)“算力夠但工具鏈不行”模型死活轉(zhuǎn)換不過去最后又倒退回外置方案。所以下一節(jié)說的工具鏈問題很多時(shí)候比芯片本身參數(shù)更重要。2. 核心硬件細(xì)節(jié)解析算力、能效比與工具鏈兼容性2.1 不要被TOPS數(shù)字忽悠能效比才是關(guān)鍵選帶AI加速器的MPU時(shí)廠商最喜歡宣傳“XX TOPS AI算力”。TOPS通常指整數(shù)運(yùn)算的每秒萬億次操作聽起來很猛但實(shí)際能發(fā)揮多少要看幾個(gè)隱性指標(biāo)。首先是能效比單位是TOPS/W。低功耗MPU的優(yōu)勢恰恰在這里。比如瑞薩RZ/V2L那類方案集成的DRP-AI能效比做得很好整機(jī)功耗控制在幾瓦以內(nèi)還能跑1 TOPS級別的推理。而一顆幾十瓦的獨(dú)立GPU跑幾十TOPS能效比反而被MPU甩開。對電池供電的設(shè)備來說能效比的意義遠(yuǎn)大于峰值算力。其次是有效算力。TOPS是理論極限實(shí)際要看你跑的模型結(jié)構(gòu)、數(shù)據(jù)精度、內(nèi)存帶寬能不能喂飽NPU。我做過一個(gè)對比測試同樣標(biāo)稱2 TOPS的兩款芯片跑同一個(gè)YOLOv5s量化模型幀率能差出40%。差距主要出在DDR帶寬上——NPU要不斷搬權(quán)重和中間結(jié)果如果內(nèi)存帶寬不夠計(jì)算單元就是在空轉(zhuǎn)。這里有個(gè)經(jīng)驗(yàn)公式可以參考對大多數(shù)CNN推理任務(wù)模型參數(shù)量MB乘以單幀計(jì)算量FLOPs除以DDR有效帶寬基本決定了理論幀率下限。選型時(shí)別光看TOPS把DDR帶寬也列進(jìn)對比表里能少踩不少坑。2.2 比對幾款典型芯片的AI加速單元不同廠商的實(shí)現(xiàn)思路差異挺大我整理了幾款主流低功耗MPU的AI加速方案方便大家選型時(shí)參考芯片平臺核心CPUAI加速單元標(biāo)稱算力開發(fā)工具鏈瑞薩RZ/V2L雙核A55 M33DRP-AI動態(tài)可重構(gòu)處理器1.1 TOPSINT8DRP-AI Support Package、e2 studioNXP i.MX 8M Plus四核A53內(nèi)置NPU2.3 TOPSeIQ Toolkit、ONNX/TFLite轉(zhuǎn)換器TI AM62A四核A53DLA深度學(xué)習(xí)加速器2 TOPSEdge AI Studio、TIDLDRP-AI和普通NPU不一樣它屬于動態(tài)可重構(gòu)處理器可以把模型映射成硬件流水線在低功耗下跑出不錯(cuò)的能效。NXP的NPU則是典型的DSA思路配合eIQ工具鏈對TensorFlow Lite模型的兼容性做得比較好。TI的DLA走的是“極簡”路線吃掉了TIDL的模型轉(zhuǎn)換流程和自家處理器綁定很深上車容易下車上也容易。我的建議是選型時(shí)重點(diǎn)看三樣?xùn)|西模型轉(zhuǎn)換工具鏈?zhǔn)欠裰С帜愕闹髁蚣躊yTorch/ONNX/TFLite、有沒有現(xiàn)成的參考模型和benchmark、NPU驅(qū)動對Linux主線的適配是否及時(shí)。這些決定了你的算法團(tuán)隊(duì)和嵌入式團(tuán)隊(duì)能不能順暢配合。2.3 小模型也要注意數(shù)據(jù)精度和內(nèi)存布局很多低功耗MPU的AI加速器只支持INT8甚至有些嚴(yán)格的還要求對稱量化。這就倒逼你在部署前做量化感知訓(xùn)練或者至少做精度校準(zhǔn)。實(shí)測下來分類模型量化到INT8基本不掉點(diǎn)但檢測模型偶爾會掉1-2個(gè)mAP左右這時(shí)候就得靠混合量化或者對敏感層做回退處理。同時(shí)內(nèi)存布局很關(guān)鍵。NPU通常希望模型權(quán)重是連續(xù)且對齊的內(nèi)存塊最好在系統(tǒng)啟動時(shí)就固定在預(yù)留的連續(xù)物理內(nèi)存里。Linux下通常會預(yù)留CMA區(qū)域給NPU用這會影響整個(gè)系統(tǒng)的內(nèi)存分配。我見過團(tuán)隊(duì)因?yàn)镃MA配置太小NPU驅(qū)動加載失敗推理任務(wù)直接崩潰排查了一天才找到原因。3. 實(shí)操過程從環(huán)境搭建到模型部署的全流程3.1 開發(fā)環(huán)境與工具鏈準(zhǔn)備帶AI加速器的MPU開發(fā)和傳統(tǒng)嵌入式開發(fā)最大區(qū)別就是多了“AI工具鏈”這一層。以Linux系統(tǒng)為例典型的環(huán)境包括三部分交叉編譯工具鏈、Yocto/Buildroot鏡像、NPU推理運(yùn)行時(shí)。先說交叉編譯。低功耗MPU基本是ARM架構(gòu)用arm-none-linux-gnueabihf或aarch64-linux-gnu交叉編譯工具鏈都行。重點(diǎn)提醒一下NPU驅(qū)動和運(yùn)行時(shí)庫最好直接用廠商SDK里自帶的版本別自己從主線編譯否則驅(qū)動接口不一致后面推理會莫名失敗。然后是OS鏡像。我一般推薦直接用廠商BSPBoard Support Package構(gòu)建的Linux鏡像比如Yocto的SDK、Buildroot的defconfig。原因是AI推理涉及DDR帶寬、CMA內(nèi)存、GPU/VPU共享相關(guān)內(nèi)核配置廠商的配置模板都是調(diào)過的。自己從頭裁剪內(nèi)核很容易因?yàn)槟硞€(gè)DMA配置不對導(dǎo)致NPU和相機(jī)爭搶帶寬推理延遲直接翻倍。最后是推理運(yùn)行時(shí)。目前主流的低功耗MPU都支持ONNX Runtime或者TFLite的適配后端通過廠商提供的外部算子實(shí)現(xiàn)NPU加速。舉個(gè)實(shí)際例子我在i.MX 8M Plus上用ONNX Runtime eIQ執(zhí)行YOLOv5s只需要把模型導(dǎo)出為ONNX再調(diào)用eIQ的轉(zhuǎn)換腳本生成NPU可執(zhí)行的格式整個(gè)流程跑得還是很順的。3.2 配置OS與MPU軟件包以AUTOSAR場景為例在車載和車規(guī)級項(xiàng)目里這類低功耗MPU經(jīng)常要跑AUTOSAR平臺OS配置就不是簡單的Linux啟動了而是要基于AUTOSAR工具鏈來做復(fù)雜軟件集成。這里就得提到Davinci Configurator這類工具。Davinci Configurator是Vector家的AUTOSAR配置工具在傳統(tǒng)MCU的BSW配置上用得很多。這兩年隨著MPU上車它也支持了MPU相關(guān)的OS配置和軟件包集成。大概流程是新建AUTOSAR工程導(dǎo)入MPU的芯片支持包SIP包里面會定義好內(nèi)核、中斷、內(nèi)存映射這些基礎(chǔ)信息。配置多核OS。這類MPU往往是AOTA Architecture的比如雙核A55加M33就要在工具里把不同核跑的任務(wù)分配清楚A55上跑高負(fù)載的AI推理或感知融合M33跑安全相關(guān)的控制邏輯。配置調(diào)度表。AI推理任務(wù)通常有周期性比如每33ms一幀這個(gè)周期和AUTOSAR的OS調(diào)度表要匹配好。如果調(diào)度表優(yōu)先級設(shè)得不對安全任務(wù)會被推理任務(wù)阻塞。集成NPU驅(qū)動。廠商一般會提供AUTOSAR組件形式的NPU驅(qū)動通過Davinci把驅(qū)動模塊的端口、數(shù)據(jù)接口、內(nèi)存區(qū)域配置進(jìn)去生成RTE代碼后再和用戶程序一起編譯。這套流程對傳統(tǒng)MCU工程師來說有一定學(xué)習(xí)成本因?yàn)镸PU側(cè)的內(nèi)存保護(hù)、緩存一致性、中斷路由比MCU復(fù)雜得多。我有一次就是因?yàn)闆]有正確配置MPU的內(nèi)存訪問權(quán)限NPU驅(qū)動在訪問輸入圖像緩存時(shí)觸發(fā)了總線錯(cuò)誤系統(tǒng)直接panic。3.3 模型轉(zhuǎn)換、量化與部署的關(guān)鍵步驟模型部署流程是這類項(xiàng)目最容易卡殼的地方。我按自己習(xí)慣的流程整理一下訓(xùn)練和導(dǎo)出在PC上用PyTorch或TensorFlow訓(xùn)練模型導(dǎo)出為ONNX。注意保持輸入尺寸固定動態(tài)shape在NPU上支持很差。轉(zhuǎn)換前歸一化不要等轉(zhuǎn)換工具幫你歸一化把圖像的歸一化減均值除方差放到模型里的第一層這樣NPU單次推理更快。量化校準(zhǔn)用幾百張代表性的圖像做INT8量化校準(zhǔn)校準(zhǔn)集的分布盡量貼近真實(shí)場景。校準(zhǔn)集選不好量化后精度波動非常明顯。轉(zhuǎn)換成廠商的NN格式這一步根據(jù)廠商工具鏈不同叫法不一樣NXP叫NPU的eIQ轉(zhuǎn)換瑞薩叫DRP-AI轉(zhuǎn)換腳本TI叫TIDL導(dǎo)入。基本上是讀取ONNX輸出一個(gè)NPU專用的二進(jìn)制模型和依賴文件。交叉編譯部署程序在主程序里把輸入圖像從攝像頭或文件讀進(jìn)來做必要的顏色空間轉(zhuǎn)換和縮放放到NPU驅(qū)動指定的輸入內(nèi)存區(qū)調(diào)用推理接口再把輸出解析出來。看起來只有五步但每一步都有不少細(xì)節(jié)。比如第一步里如果模型里有Loop、Squeeze這類NPU不支持的算子轉(zhuǎn)換工具報(bào)的錯(cuò)非常難懂我建議先能在PC上轉(zhuǎn)成ONNX再用onnxsim做一遍簡化。再比如第四步轉(zhuǎn)換成功后通常會生成一個(gè)運(yùn)行時(shí)配置里面有個(gè)模型加載緩沖區(qū)和執(zhí)行緩沖區(qū)的大小這些要映射到CMAC或DDR物理地址上別隨手改。4. 功耗優(yōu)化策略與實(shí)測數(shù)據(jù)經(jīng)驗(yàn)4.1 從DVFS到低級時(shí)鐘門控的功耗優(yōu)化鏈路低功耗MPU的功耗優(yōu)化不能只依賴NPU的硬件效率軟件側(cè)也要做配合。首先要用好DVFSDynamic Voltage and Frequency Scaling根據(jù)當(dāng)前負(fù)載動態(tài)調(diào)整CPU和NPU頻率。這塊我踩過坑系統(tǒng)默認(rèn)的調(diào)頻器是performance模式NPU跑了個(gè)小模型也經(jīng)常滿頻率運(yùn)行整機(jī)功耗比預(yù)期高了將近1W。后來改成ondemand或schedutil配合NPU驅(qū)動里的時(shí)鐘管理功耗明顯下來了。接著是電源域管理。很多MPU會把NPU、VPU、ISP等模塊放在獨(dú)立的電源域里不使用時(shí)可以完全斷電。我建議主程序做一個(gè)“空閑檢測”比如連續(xù)10秒沒有推理任務(wù)就把NPU電源域關(guān)掉同時(shí)讓CPU進(jìn)入WFIWait For Interrupt或suspend狀態(tài)。這一招在電池設(shè)備上很有效待機(jī)功耗能差出兩個(gè)數(shù)量級。還有IO和外設(shè)功耗。低功耗MPU往往有多個(gè)UART、USB、Ethernet控制器如果開發(fā)時(shí)沒注意Linux內(nèi)核會把沒用的外設(shè)也通電并保持時(shí)鐘開啟。排查方法是看/sys/kernel/debug/clk/clk_summary把沒用到的模塊關(guān)掉或者通過設(shè)備樹禁掉每項(xiàng)都能省幾十毫瓦。4.2 實(shí)測數(shù)據(jù)同一模型在不同功耗配置下的表現(xiàn)我之前做過一組實(shí)驗(yàn)硬件平臺是一個(gè)內(nèi)置1 TOPS NPU的四核A55 MPU跑INT8的YOLOv5s輸入尺寸416x416。分別在三種配置下測整板功耗和推理延遲配置CPU頻率NPU頻率整板功耗單幀延遲性能優(yōu)先1.8GHz固定滿頻5.8W28ms均衡模式動態(tài)調(diào)頻自動降頻3.6W36ms低功耗模式1.0GHz限制低頻運(yùn)行2.4W52ms這個(gè)實(shí)驗(yàn)說明在低功耗MPU上性能和功耗確實(shí)是可以做取舍的。關(guān)鍵要想清楚應(yīng)用場景的硬性要求如果只是一個(gè)周期性的狀態(tài)上報(bào)2.4W的低功耗模式完全夠用如果是實(shí)時(shí)工業(yè)檢測那就得用前兩種模式并配合更大的散熱設(shè)計(jì)。4.3 異步推理是降低峰值功耗的利器經(jīng)常被忽視的優(yōu)化手段是異步推理。很多AI推理框架的接口是同步阻塞的比如你調(diào)用NPU推理CPU就死等結(jié)果期間CPU空閑NPU滿載。這個(gè)階段的瞬時(shí)功耗其實(shí)很高而且CPU沒有做任何有價(jià)值的事。改成異步后你可以把視頻幀采集、NPU推理、結(jié)果后處理三個(gè)環(huán)節(jié)做成流水線。NPU在推理第N1幀的時(shí)候CPU同時(shí)在解析第N幀的結(jié)果并且采集第N2幀的輸入。這樣CPU的負(fù)載被填滿NPU不會空閑等待整體的調(diào)度更均衡峰值功耗也能被平均掉。實(shí)測下來同樣的處理任務(wù)同步方案和異步方案的平均功耗能差10%-15%。5. 常見問題與排查技巧實(shí)錄5.1 模型跑不動或推理延遲飆高這是最多人問的問題。如果你發(fā)現(xiàn)NPU的標(biāo)稱算力很高但模型跑起來幀率很低先別急著罵芯片。第一步是看有沒有用到NPU加速程序日志里如果顯示的是CPU fallback執(zhí)行那就是模型沒轉(zhuǎn)換成功或者算子沒跑在NPU上。第二步是查DDR帶寬可以跑一個(gè)內(nèi)存帶寬測試工具比如mbw看看現(xiàn)在系統(tǒng)和DMA的帶寬占用。如果已經(jīng)把DDR帶寬占滿了NPU性能掉一半都不奇怪。第三步是看模型的算子融合情況。有些工具鏈對卷積BNReLU的結(jié)構(gòu)能自動融合成一個(gè)算子有些不能。轉(zhuǎn)換前檢查一下模型結(jié)構(gòu)盡量手動把BN層折疊進(jìn)卷積這樣不僅NPU算得快內(nèi)存訪問也少很多。5.2 實(shí)測功耗比芯片手冊高了太多功耗超標(biāo)通常有幾個(gè)原因供電電壓設(shè)置太高、外設(shè)沒關(guān)閉、電源管理配置錯(cuò)誤。先檢查PMIC的電壓配置有些MPU的VDD_GPU或VDD_NPU在出廠默認(rèn)配置是最高電壓等級實(shí)際性能完全用不到那么高。再檢查內(nèi)核態(tài)有沒有一直被喚醒的timer/proc/interrupts里如果某個(gè)中斷瘋狂觸發(fā)CPU沒辦法進(jìn)入低功耗狀態(tài)。還有一個(gè)容易被忽略的點(diǎn)是調(diào)試接口比如JTAG和串口如果一直連著芯片無法進(jìn)入深度睡眠。量產(chǎn)板子這些調(diào)試接口要默認(rèn)斷電或者改成普通GPIO能省不少功耗。5.3 OS配置與NPU驅(qū)動的內(nèi)存分配沖突在Linux或AUTOSAR里NPU驅(qū)動分配連續(xù)物理內(nèi)存的位置很敏感。Linux下如果CMA區(qū)域太小或者被相機(jī)模塊占用過多NPU推理時(shí)就會申請內(nèi)存失敗。我的建議是一切剛開始做的時(shí)候就通過內(nèi)核cmdline預(yù)留一塊專用的物理內(nèi)存比如memmap512M0x50000000讓NPU驅(qū)動永遠(yuǎn)在這個(gè)區(qū)域工作避免跟其他子系統(tǒng)競爭。AUTOSAR場景下更要注意OS的任務(wù)棧和內(nèi)存保護(hù)單元MPU的配置邊界經(jīng)常會把NPU驅(qū)動需要的共享內(nèi)存排除在外。我用Davinci Configurator配置時(shí)就碰到過數(shù)據(jù)都傳不到NPU里。最后是把NPU相關(guān)內(nèi)存區(qū)單獨(dú)添加進(jìn)OS的內(nèi)存映射配置還要額外配置MPU保護(hù)區(qū)確保S模式和應(yīng)用模式都能訪問。5.4 常見問題速查表現(xiàn)象可能原因排查思路解決建議模型轉(zhuǎn)換報(bào)“Unsupported Operator”算子不在NPU支持列表檢查算子列表找出不支持節(jié)點(diǎn)算子替換或函數(shù)建模切成等價(jià)運(yùn)算推理速度比CPU還快不了多少模型沒真正跑到NPU上看日志確認(rèn)有沒有NPU加載重新轉(zhuǎn)換模型檢查驅(qū)動加載狀態(tài)NPU推理結(jié)果全為0或隨機(jī)的數(shù)輸入數(shù)據(jù)格式不對或內(nèi)存地址錯(cuò)檢查輸入圖像尺寸、通道順序確認(rèn)縮放到模型的輸入要求對齊到內(nèi)存系統(tǒng)掛起后無法喚醒喚醒源沒配置對查中斷喚醒能力查電源域配置在設(shè)備樹中配置正確的喚醒GPIO或timer整板功耗異常高外設(shè)或電壓沒優(yōu)化檢查clk_summary和PMIC寄存器關(guān)掉無用外設(shè)調(diào)低電壓等級遇到問題的時(shí)候別一個(gè)個(gè)硬扛廠商的SDK包通常都帶參考例程比如攝像頭采集加NPU推理再加LCD顯示的標(biāo)準(zhǔn)演示。如果你的程序跑不起來先把參考例程跑通再逐個(gè)模塊替換成自己的代碼能省下很多排查時(shí)間。寫在最后的一點(diǎn)個(gè)人體會做了幾個(gè)帶NPU的低功耗MPU項(xiàng)目之后我的最大感受是這一類芯片把AI落地的門檻拉低了很多但并不是說拿到手就能輕松跑起來。硬件上的能效比再漂亮軟件工具鏈、OS配置、功耗管理這些環(huán)節(jié)總有地方會卡你一下。我自己的習(xí)慣是新項(xiàng)目上馬后先花兩三天跑通廠商的參考例程把數(shù)據(jù)通路完整走一遍再開始調(diào)自己的模型和應(yīng)用。這個(gè)前期投入很值得后面踩坑的概率會小很多。另外選型時(shí)多看看同系列芯片的roadmap也很重要。很多低功耗MPU同一個(gè)引腳兼容好幾款芯片低算力和高算力版本可替換。這意味著你的板子和軟件棧設(shè)計(jì)成同一套未來算力不夠時(shí)可以直接換Pin-to-Pin兼容的型號不用重新畫板。這個(gè)設(shè)計(jì)思路在量產(chǎn)項(xiàng)目里非常有價(jià)值產(chǎn)品生命周期被拉長了好幾年。