# 🚀 FWAuto 整合流程

![](assets/integration-flow.svg)

## ✨ 功能特色

✨ FWAuto 提供一個完整的韌體開發自動化閉環，從程式碼修改到日誌分析，實現全流程 AI 輔助。
✨ FWAuto 採用檔案基礎的整合方式，完全相容現有開發流程。
✨ FWAuto 增強開發體驗而不是取代原來的開發模式。

### 🎯 核心元件

✨ 完整的韌體編譯和部署流程

**FWAuto** 是整個閉環的智慧控制中心：

- 🔍 分析日誌錯誤模式
- ⚡ 自動修改 Source Code
- 💡 生成修復建議
- 📈 持續優化開發流程
- 🔨 智能編譯
- ⚡ 智能部署

## 🔑 關鍵特色：Makefile 整合

FWAuto 將各種廠商工具統一轉換為 Makefile 操作

### 📁 檔案基礎整合方式

✨ 這種方式讓開發者可以繼續使用熟悉的開發環境，同時獲得 AI 輔助的好處。

**🎭 無侵入性設計**：
✨ FWAuto 採用檔案基礎的整合方式，完全相容現有開發流程：

- 保持原有工具鏈 - 不需要改變現有的 IDE 或編譯環境
- 檔案監控機制 - 自動監控編譯產出和日誌檔案
- 旁路式分析 - 透過檔案讀寫進行日誌分析和程式碼修改
- 零配置啟動 - 自動適應現有專案結構

**🔄 整合流程**：

1. 監控專案目錄的檔案變化
2. 偵測編譯產出 (HEX/BIN 檔案)
3. 追蹤日誌檔案更新
4. 分析後直接修改原始檔案
5. 觸發現有工具鏈重新編譯

## 🔄 完整閉環流程

✨ 閉環設計讓 FWAuto 不只是分析工具，更是一個能夠主動解決問題的智慧化開發夥伴。

### 1. 📝 修改 Source Code ⭐

- FWAuto 基於日誌分析結果自動修改程式碼
- 實現智慧化錯誤修復
- 提供程式碼優化建議

### 2. 🏗️ Makefile (build)

- 自動偵測並使用適當的編譯工具
- 統一不同廠商工具的建構流程
- 生成標準化的韌體映像

### 3. 💾 HEX/BIN 產出

- 產生可燒錄的韌體映像檔
- 支援多種格式 (HEX、BIN、ELF)

### 4. ⚡ Deploy 部署

**Linux SBC 平台**：使用 `deploy_operations.py` 純 Python 實作

- **AM62X**：Network Deployment (SSH/SCP)
- 網路連接性檢查
- SCP 部署二進制檔案
- SSH 遠端執行（foreground/background）
- 遠端日誌路徑自動記憶

**MCU 平台（v1.0+ 規劃中）**：

- STM32：Direct Flashing (ST-LINK/OpenOCD)
- ESP32：Direct Flashing (esptool)
- nRF52：Direct Flashing (J-Link)

### 5. 📟 EMU 運行

- 目標設備開始執行韌體
- 產生運行時日誌和狀態資訊

### 6. 📈 Log 收集 → FWAuto 分析

- 即時收集設備日誌
- AI 分析錯誤模式和異常
- 識別問題根因
- 生成修復建議

### 7. 🔄 回到步驟 1：自動修改程式碼 ⭐⭐⭐

- 完成閉環：FWAuto 直接修改 Source Code
- 實現完全自動化的問題修復
- 持續優化韌體品質

## 🔧 整合方式

### 平台整合方式

FWAuto 支援兩種整合方式：**Makefile** 和 **純 Python**。

#### 1. Build - Makefile（必須）

- 功能：編譯原始碼為可執行檔
- 標準指令：`make -f .fwauto/build/Makefile build`
- 要求：
  - 輸出檔案格式標準化
  - 支援錯誤訊息回傳
  - 可指定編譯目標路徑

#### 2. Deploy - 純 Python（v0.5.0）

**Linux SBC 平台（已支援）**：

- **AM62X / Raspberry Pi / RISC-V**：透過 `deploy_operations.py` 模組進行 SSH 部署
- 調用平台專用的 `.fwauto/deploy/deploy.py` 腳本
- 無需 Makefile 或 bash 依賴
- 支援網路連接性檢查、SCP 傳輸、SSH 遠端執行
- 支援遠端日誌路徑配置與自動記憶
