任何嵌入式軟件開發人員面臨的首要挑戰之一是安裝和配置他們的開發環境和工具鏈。工具鏈版本、芯片供應商庫、Windows 與 Linux、調試配置、IDE 設置和環境變量只是現代嵌入式開發人員工作區的幾個組成部分。所有這些復雜性的結果是一個脆弱的、難以復制的工作空間,用于關鍵系統中經常使用的軟件。我們認為這種開發者體驗等同于折磨,并認為這是從進入市場中獲取價值。
如果開發環境可以完全打包并從開發人員那里抽象出來,他們將能夠更快地開始應用程序開發。遠程管理的工具鏈還有助于提高團隊合作的效率。
既定的方式
消除工具鏈難題的傳統方法通常是通過使用集成開發環境 (IDE)。 然而,這些包通常被鎖定到特定的芯片供應商或編譯器,可能有付費墻來公開高級功能,并且在功能可用性方面可能受到限制。多年來,我們的“黃金標準”如下:
Ubuntu 虛擬機
Eclipse
GNU MCU Eclipse 工具
來自 VM 的 USB Passthrough 用于調試板
現代網絡選項
VS Code、容器化、Microsoft 的調試協議和語言服務器協議等技術結合在一起,實現了變革性的開發人員體驗。當前將這些技術結合到市場上的大多數方法都是建立在 VS Code 的一些變體之上的。每個解決方案都在爭相利用 VS Code 在瀏覽器中運行的能力,就像它在本地機器上運行一樣無縫。
一種選擇是 Github 代碼空間。哪個選項要求用戶使用付費計劃,不專注于嵌入式開發,并且使用閉源的閉源服務器。另一種選擇是 Keil Studio。 Keil Studio 針對基于 ARM 的微控制器的嵌入式開發進行了優化,定價和路線圖尚未確定。它不提供終端訪問,并提供有限數量的嵌入式目標來使用。
為什么選擇 Gitpod
值得注意的是 Gitpod 的全功能免費套餐。他們每月提供 50 小時的運行工作空間,無需付款詳情。五十小時足以讓您了解 Zephyr 和 Golioth 生態系統。最后,Gitpod 是開源的,使開發人員能夠根據他們的需求優化他們的工作區。
我們的目標嵌入式云開發人員體驗將是開發人員實例化云開發環境并且具有零本地工具依賴性的體驗。 然后,他們可以將他們的調試硬件從任何可以訪問互聯網的地方插入任何機器并進行開發。 我們當前的實現需要三個本地工具來促進使用 Gitpod 軟件和 VS Code 的當前狀態進行調試的功能。 Gitpod 提供了一個 Gitpod Local Companion,它允許本地主機訪問遠程工作區中的任何 TCP 端口。本地所需的第二個軟件是 SSH。SSH 是在 Gitpod 實例和本地機器之間建立 ssh 隧道所必需的。在本地機器上運行的最終軟件是 JLinkGDBServerCL。
目前技術水平
促進基于云的開發的技術已經到來,它將顯著提高生產力和開發人員體驗。不幸的是,我們仍然有本地依賴項,并且在當前狀態下,還沒有針對通過 Internet 使用進行優化。步驟調試已完成,但嵌入式云開發與本地開發環境競爭仍有一些工作要做。
為了正確執行此操作,我們將向嵌入式開發人員瀏覽器提供兼容 MS DAP 的調試服務器(例如 Probe.rs),并使用 webUSB 將其連接到目標板。存在的一個挑戰是缺乏用 JavaScript 或 WebAssembly 編寫的開源微控制器調試器。從 C 代碼到 WebAssembly 的轉換并不簡單,而且容易出錯。但是,確實存在 Rust 到 WebAssembly 的有效翻譯器,Probe.rs 是一個用 Rust 編寫的開源調試器。