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