Skip to main content
< All Topics
Print

【Vibe】U01. AI 寫韌體容易「翻車」,WHY?

前言:本系列文章

本系列文章共4個單元,是針對 第7屆花蓮太平洋盃PTWAx華紙公益 的【Vibe Coding x 微控器】教學系列,以下各單元摘要與連結:

U01. AI 寫韌體容易「翻車」,WHY?

建立了當我們使用AI輔助開發程式時,韌體與純軟體的開發,有著基礎上的不同。若未能掌握韌體的特性與要求,LLM大語言模型在輔助韌體開發時,容易發生用錯誤、不適切的方法完成你交辦任務。AI就像一位「技術極強,但剛到職、完全不熟悉公司硬體的資深工程師」。我們必須給它一本明確的「員工手冊/A SKILL File」。

U02. 一位稱職的韌體架構師

面對AI時代,過往的工作流程將開始改變。AI 的「通用型知能 (General Skill)」非常豐富,其精通各種程式架構、迴圈邏輯與 C++ 語法,甚至能在短時間內寫出極為複雜的數學演算法。人們如何清楚地認清與調整自己的任務位置,是本小節的討論重心。也唯有透過此觀念的建立,你才能順利將本系列實作內容,轉化至自己的工作/任務環境之中

U03. 建立你的AI韌體助手/專屬家教

在要求LLM進行韌體開發前,我們透過實作示範了重要的前置作業:餵給 AI 關鍵資料,用以建立專屬於你的開發環境。此外,LLM大語言模型只能當你的程式開發助手嗎? 哪可小看了。LLM也可以成為你的專屬家教呦,我們在此單元中亦提供了一些簡要的使用方法。

U04. 硬體控制變換練習

此單元中,我們由一些基礎的硬體控制項目變換開始實作練習,例如,我們以PS3搖桿的控制鍵為變換練習核心,進行了控制機構的啟動鍵更換、蜂鳴器發聲控制、全彩LED燈號控制等。更進一步地,實作了車體由抓地胎模式,韌體生成為麥克納姆輪運動模式。


AI可以為韌體程式做什麼?

隨著各家大語言模型 (LLM) 核心的升級,運用 LLM 生成程式碼的可行性日益增高。一直以來,LLM 生成「純軟體」相關專案其成果相當穩定,但是,在「韌體專案」上的應用,始終存在著一道不容易跨越的坎——硬體配置的「區域性」,這高度關聯著 LLM 生成的可用性與穩定性 。

本系列教學即是要分享一些入門技巧,陪同各位朋友同好們一同跨越這道「坎」,打造專屬於你的高效率 AI 韌體開發助手!

先來個簡單VibeCoding / AI生成程式碼的過程展示,感受Self-Coding(傳統自編程式)與Vibe-Coding的差異姓。

DEMO 01.


👉為什麼 AI 寫韌體容易「翻車」?

或許你內心murmur:前述的DEMO是如此地快速便利,網路上也有許多大神說著用兩三句話就可以生成一個強大網站!? 但是,我嘗試時,卻是… x.#$%….🤔

在純軟體世界,程式邏輯大多是通用的;但在硬體世界,你的 微處理器(ESP32/STM32…) 接了哪些腳位、馬達驅動板是哪一種MOS型號、電路規劃、感測器使用哪種通訊協定,這些都是物理實體的絕對限制

當你僅僅對 AI 說:「幫我寫一個相撲機器人避障程式」時,AI 為了強行滿足你的需求,往往會開始「通靈」(Hallucination,即 AI 幻覺):

  • 發明不存在的腳位:隨機指定 Pin 9 為超音波,但你的電路板上根本沒這個接法。
  • 虛構 API 函數:自行呼叫 robot.moveForward(),但你的硬體函數庫裡根本沒有這個指令。
  • 錯誤的底層邏輯:隨意使用 delay() 造成程式阻塞,或是寫出錯誤的輪詢(Polling)導致微控制器卡死。

✨核心解法:導入「Vibe Coding」與嚴格開發規範

要解決這個問題,我們不能把 AI 當成無所不知的神,而是要把它當成一個「技術極強,但剛到職、完全不熟悉公司硬體的資深工程師」。你需要給它一本明確的「員工手冊」,這就是 Vibe Coding 的核心精神。

例如,透過建立一份專屬的 系統提示詞 (System Prompt)Skill 指南,我們可以為 AI 劃定絕對安全的開發結界。以下是三大引導策略:

1. 建立「零容忍幻覺防禦機制」(Anti-Hallucination)

我們必須明確告訴 AI 「只能用什麼,絕對不能用什麼」。採用「白名單制」來限制物件與方法的呼叫。

  • ⭕ 嚴格限制 API:例如,要求底盤控制只能使用 FORWARDBACKWARD 等列舉,超音波只能呼叫 ObjDistance()
  • ❌ 明列禁止事項:例如,明確告知 AI「絕對禁止給馬達速度帶入負數」,或是「後退一律使用專屬 API,禁止自行運算」。

2. 鎖死硬體腳位與常數 (Hardware Pin Mapping)

不要讓 AI 自由發揮腳位!在提示詞中,直接把硬體預設的常數定義群(如 DUAL2S_HW 命名空間)餵給 AI。例如,強制規範狀態燈引腳必須帶入 DUAL2S_HW::WSLED。這樣生成的程式碼,複製貼上後就能直接編譯、完美驅動實體。

3. 規範程式架構與防呆機制

針對複雜的應用(如 PS3 搖桿遙控),明文禁止 AI 使用阻塞式的程式碼,強制要求使用事件驅動(Event-driven)架構;或是要求音效播放必須使用非阻塞式的 alarm(freq),以確保系統效能穩定。

有了前述的概念之後,我們實作一下加入SKILL之後,使用LLM生成韌體的複雜度與穩定性都大幅提升。這也將是本系列教學文的重點。在此之前,先來個簡單DEMO吧:


建立你的AI程式助手,一起動手吧!

由前面的Vibe Coding的知識與技術背景說明,我們就容易了解在建立【自己的AI程式助手】之前,我們應該先給LLM那些資料囉。我們下一篇教學,準備進入【U02. 一位稱職的韌體架構師

Table of Contents