ESP32(3) Visual Studio Code + PlatformIO開發環境
這篇介紹ESP32-C開發環境,我打算使用Espressif SDK搭配Visual Studio Code + PlatformIO開發。軟體開發本質超級複雜,努力踩坑撐過去吧
[書籍]
我用以下這本參考書,他用Visual Studio Code + PlatformIO搭配ESP32 SDK開發,這本書非常合乎我的預期:省略大量細節。把書本當成地圖,大概知道哪裡可以怎麼做,然後努力享受被折磨的樂趣吧!
[相關文件和網站]
一般開發會準備這些文件,以下是我踩坑後的筆記
開發板相關
CPU核心相關
PlatformIO相關頁面(開發環境)
- PlatformIO選這片開發版,他每片都有網站,也有vendor的頁面,我一個一個找出來的。選錯真的會出問題,為了減少麻煩,建議買板子要挑人家認證過的,或是找個老司機帶路
- 在Windows安裝driver
- platformio.ini設定,debug_tool/ upload_protoccol設定成esp-builtin才會動;然後env的設定改成下面這樣能讓debug/release build放在不同目錄,可以節省很多時間
- PlatformIO, ESP32一般性資訊
[PlatformIO相關路徑]
這種IDE隱藏的細節,全部要自己挖出來,尤其是廠商的範例程式碼
- Development Tools
- /c/user/name/.platformio/platforms/espressif32/
- Board definition, boards/airm2m_core_esp32c3.json
- 這個檔案最大的坑是Flash_mode如果設錯就掛了(其他板子用qio)
- Tool folders
- /c/user/name/.platformio/packages/
- Compiler for ESP32-C, toolchain-riscv32-esp/
- Tool for debugger, tool-openocd-esp32/
- ESP32 SDK, framework-espidf
- 這裡面有ESP32-SDK的程式碼,以及範例
[開發環境驗收清單]
上手嵌入式開發,我會把這些事做一輪,東摸西摸確定自己掌握整個環境
- 編譯軟體, debug build。既然SDK用FreeRTOS,呼叫一些RTOS Call應景一下
- 啟動debugger,設定斷點,檢視記憶體,使用expression功能看特定變數
- 啟動serial port,看到COM port內容
- 編譯軟體, release build
- 燒錄到板子上,確認Serial port有輸出;斷電後,確認程式有正常執行
- Visual Studio Code有github整合,創建一個版本控制倉庫,嘗試submit code
- 板子還在運作軟體中,啟動debugger,能用來分析系統最後狀態(attach mode,還沒測試成功)
- 確認build result如預期,找到底下這些檔案
- ELF file
- MAP file
- DISASM file
命令比較長,我把它存到某個text file,然後submit進去git,需要能隨時複製貼上跑,之後應該研究怎麼整到build flow
C:\Users\lihgo\.platformio\packages\toolchain-riscv32-esp\bin\riscv32-esp-elf-objdump.exe -d C:\Users\lihgo\Documents\PlatformIO\Projects\esp32-c3-trial\.pio\build\airm2m_core_esp32c3_debug\firmware.elf > .pio\build\airm2m_core_esp32c3_debug\firmware.disasm - 到另外一台電腦,從github抓code,確定可以重現開發環境
最後我得到一個工程模板,之後開ESP32-C的專案可以用
[其他有用的參考資料]
留言