星標公眾號,讓嵌入式知識 “投喂” 不停歇!
大家好,我是雜燴君。
這篇文章不勸你「全信」或「全棄」AI,只聊一件能落實的事——怎么把公司規(guī)范變成它能遵守的輸入,再用編譯、靜態(tài)分析、最小測試把補丁攔住。
模型的強項是語感:注釋像那么回事,函數長得像見過的開源項目。
嵌入式要命的是那些沒人寫在題干里的前提:棧深夠不夠、能不能在 ISR 里走這條路徑、volatile 該不該登場、優(yōu)化一開寄存器訪問會不會被「優(yōu)化沒了」。
劃重點(類比):把模型當成剛入職、沒看過你們 Wiki的同事。你口頭扔一句「按慣例寫」,它只能按業(yè)內最常見的慣例寫——這在純業(yè)務層多半是風格問題,在驅動層經常是時序或數據競爭。你要做的,是把「慣例」拆成條目寫進對話或文檔片段里,別指望它心領神會。
補一句實操認知:上下文不是越長越靈。整本手冊貼進去,模型容易平均用力,把你最關心的三條規(guī)范沖淡。
更省事的是寫「本次改動的最短背景」:動的是哪路外設、當前時鐘樹誰已開好、倉庫里同類函數叫啥名——各用幾行釘死,比幾千字背景說明好使。
厚厚一疊 PDF 整份粘貼,模型往往抓不到重點。實戰(zhàn)里更順手的,是離源碼更近的三類東西。
一份縮寫的硬條目:能不能用 malloc、ISR 里允許哪幾個庫函數、裸機要不要禁用浮點、錯誤碼是 enum 還是 int、頭文件分層怎么切——用列表或表格,條數可控,比章程全文好用。
兩段golden sample:倉庫里大家公認干凈的小模塊,脫敏后要留住的其實是骨架——初始化順序、命名節(jié)奏、注釋寫為什么而不是復述代碼。
模型「仿寫」的能力,往往大于「理解長篇原則」的能力。常見兩個坑:只貼總則它照樣自說自話;一次貼五千行現網代碼當風格參考,噪聲又大。
折中辦法是每次任務抽三百到五百字的最小相鄰切片——同目錄頭文件包含順序、近鄰驅動的錯誤碼表、旁邊函數的注釋粒度,夠了。
再加一頁團隊版負面清單:上一次評審里反復被打回的雷區(qū)——ISR 里打印、魔數、忘了關中斷就碰共享變量——貼出來,專治「順手一寫」。
芯片與工具鏈是第二層現實:手冊里的時序、DMA 與 Cache、RTOS 哪些 API 能從中斷上下文調,這些不和規(guī)范并列談,生成物就容易「文從字順,板子上翻船」。
組里若已有 clang-format、clang-tidy 的配置文件,把路徑或關鍵開關寫進說明,讓輸出先過一遍再進評審,少吵一半花括號;真正要命的風格(禁止某類隱式轉換、未檢查返回值)交給 tidy 比靠人眼掃靠譜。
三層輸入疊在一起,才談得上「像自己人寫的」:

整文件甩給模型,diff 一大,你 Review 時眼睛會糊。更省心的辦法是拆:先定接口與數據走向,再補實現,最后補超時、失敗分支、資源回收。
你審閱也照著這個順序——先認「契不契約」,再摳細節(jié)。
劃重點(并發(fā)):有人在 lint 報告里糾結格式,卻放過主循環(huán)和中斷之間那個幾比特的標志位。癥狀是間歇性壞了才難查。
寫需求時直接寫明:哪幾個變量只在 ISR 寫、主線程只讀;或者必須走隊列、關中斷、拿鎖里的一種,別寫「注意線程安全」六個字糊弄過去。
流水線上各人干各人的活——機器做重復規(guī)則,人做板級與并發(fā)判斷。串起來長這樣:

省事的一類活——掩碼表展開、重復初始化、在你們封裝風格里把 HAL 遷一遷——適合模型打底,但你照樣要套模板、跑檢查,別以為省了測試。
揪心的一類——上電順序、DMA 環(huán)形緩沖與 Cache、進低功耗前后外設狀態(tài)——模型可以給你檢查清單和草稿,可寄存器級誰置位、誰先開后開,最終要和手冊、和組里踩過的坑對齊。這里省時間不省責任。
還有一種惱人的:模型給你短了、漂亮了,卻違反了你們的靜態(tài)規(guī)則(比如隱式窄化)。這類別跟模型辯論三回合,多半不如加一條明文規(guī)則或換一段 golden,比講大道理管用。
走 C++ 又想省重復代碼時,別讓模型起手就設計七層繼承。先把具體類型跑通,接口穩(wěn)定了再請它幫忙抽共性;一上來「給我一套通用策略模板」,常常得到能編、但半年后的自己也不想讀的一坨。
往下這張是工程師腦子里的分岔,用來決定你怎么分工:

volatile 或 memory barrier,對照手冊問一句:是需要,還是它慌了。劃重點(UB):有些代碼 -O0 僥幸活了,-Os 一開刀,變量像從來沒人讀過。表現往往是「某次重構之后」「只在這一塊板子上」才出問題。別靠模型亂點關鍵字擋槍;分析工具 + 正確序的訪問約定才是底子。
團隊可以把「常用 prompt 段落」「負面清單」「golden 鏈接」放進倉庫里的 docs/ai/ 之類目錄,和編碼規(guī)范一樣打版本。
誰要是單獨在 IDE 里維護工程提示,記得把長期有效的約束和一次性會話參數分開——前者該進倉庫、該過評審;后者隨便。
不然換個人新開聊天窗口,昨天口頭說死的規(guī)矩今天就蒸發(fā)。
自動化吃規(guī)則,人吃語義與現場:

一份打通“應用→驅動”的Linux底層修煉指南!