都說手里只有錘子的人,看什么都像釘子。為正確的工作使用正確的工具對于任何技術職業(yè)的有效性和效率都是至關重要的。嵌入式系統(tǒng)開發(fā)也不例外。也就是說,直到最近,針對嵌入式開發(fā)的工具還缺乏針對桌面、Web 和移動開發(fā)人員的開發(fā)工具中的改進和現(xiàn)代功能集。此外,對微控制器和 FPGA 進行編程歷來需要相當昂貴的硬件編程器/調試器和專有軟件許可證。最近對更多開源生態(tài)系統(tǒng)(例如,RISC-V 微處理器、Arduino IDE 等)的推動,可以說對許多嵌入式開發(fā)工具的穩(wěn)健性和用戶友好性產(chǎn)生了積極影響。
集成開發(fā)環(huán)境 (IDE):許多開發(fā)人員喜歡使用簡單的文本編輯器進行編碼,尤其是 Linux 上的 Vim 或 Nano。它們是輕量級的,默認情況下幾乎可以在每個 Linux 發(fā)行版中找到。然而,現(xiàn)代代碼編輯器和 IDE 提供了更多的功能,這使得它們對嵌入式開發(fā)人員非常有吸引力。此外,許多嵌入式硬件制造商提供特定于其各種微控制器系列的定制 IDE。以制造商為中心的 IDE 提供了許多優(yōu)勢,例如訪問外部組件的支持庫、多個微控制器的模板以及幫助開發(fā)人員開始使用新硬件的示例。
版本控制工具:如果不是連續(xù)的,軟件開發(fā)就什么都不是。此外,很少有單個開發(fā)人員開發(fā)現(xiàn)代嵌入式系統(tǒng)。或者至少,嵌入式開發(fā)人員必須與移動或 Web 開發(fā)人員合作,因為嵌入式系統(tǒng)往往是更大軟件生態(tài)系統(tǒng)的一部分。Git 等版本控制工具提供了在整個開發(fā)周期中管理源代碼迭代的能力。GitHub 和 GitLab 是兩個流行的基于云的源代碼和其他設計文件存儲庫。版本控制、發(fā)布管理和錯誤報告只是使用版本控制工具的部分好處。但是,也有一些缺點。主要是它們已成為網(wǎng)絡安全攻擊鏈的一部分,因為開發(fā)人員有時會不小心留下用戶名、密碼、或他們推送到公開可用存儲庫的提交中的加密密鑰。然后,不良行為者會搜索這些存儲庫以查找該信息并將其整合到他們的惡意軟件攻擊中。
調試器:從歷史上看,調試微控制器意味著昂貴的硬件。在線仿真器 (ICE) 是插入更廣泛系統(tǒng)的微控制器插座的設備。它們允許實時執(zhí)行固件,同時還提供調試功能,例如寄存器和內存訪問、條件斷點和跟蹤緩沖區(qū)。更常見且更便宜的是在線調試器 (ICD)。通常,設備位于開發(fā)人員工作站和目標微控制器之間,并允許通過在線串行編程 (ICSP) 協(xié)議進行調試。某些現(xiàn)代微控制器開發(fā)板甚至內置調試 ICSP 硬件,并通過直接連接目標開發(fā)板和開發(fā)人員工作站的 USB 電纜進行訪問。
Linter:當我們寫文章或報告時,我們通過拼寫和語法檢查工具運行最終草稿。linter 是一個類似的概念,但用于源代碼。linter 靜態(tài)地查看源代碼(即,在編譯之前,而不是在機器代碼在目標設備上運行時),并且可以檢測由風格錯誤、配置錯誤、項目結構錯誤、庫依賴性錯誤引起的問題。這些錯誤會影響從可讀性到阻止成功編譯的任何事情。
GitHub Copilot:幾十年來,自動完成一直是許多代碼編輯器的一個功能。自動完成通過在開發(fā)人員輸入源代碼時為關鍵字和變量名稱提供實時智能建議來幫助開發(fā)人員提高效率。GitHub 的 Copilot 是一種基于 AI 的代碼完成工具(Visual Studio Code 的插件),它將自動完成的理念提升到了一個全新的水平。Copilot 將檢查開發(fā)人員編寫的函數(shù)名稱,并推薦執(zhí)行該函數(shù)所需的全部源代碼。例如,假設您編寫以下內容:
float calculateVolume
Copilot 將完成函數(shù)聲明如下:
float calculateVolume(float radius) {
return (4.0/3.0) * PI * radius * radius * radius;
}
Copilot 本質上是一位 AI 同事,他可以通過至少提供函數(shù)定義的起點來幫助開發(fā)代碼。但是,與任何自動化工具一樣,它并不能取代人工審查并在必要時更正 Copilot 生成的代碼的需要。
HTTP 和 API 檢查工具:嵌入式設備(即物聯(lián)網(wǎng)設備)不通過網(wǎng)絡通信的情況越來越少,即使不是互聯(lián)網(wǎng)本身。不幸的是,Web 應用程序開發(fā)人員很可能正在(與嵌入式開發(fā)工作)并行創(chuàng)建軟件。Postman 等工具允許嵌入式開發(fā)人員獨立檢查和測試 HTTP 請求方法(例如,PUT、POST、GET)和 API 請求并在將它們提交到固件之前。因此,故障排除與嵌入式硬件無關,確保 API 的任何問題都完全是因為 API 本身,而不是固件或嵌入式硬件。
數(shù)據(jù)包檢查工具:雖然面向開發(fā)的 HTTP 和 API 檢查工具非常適合高級調試,但有時需要在數(shù)據(jù)包級別進行檢查,或者可能需要檢查不同的協(xié)議,例如 Zigbee。在這些情況下,有必要使用 Wireshark 等數(shù)據(jù)包檢測工具。Wireshark 可以記錄和檢查許多基于數(shù)據(jù)包的通信協(xié)議。
基于軟件的邏輯分析儀:開發(fā)人員越來越普遍地使用基于軟件的工具來調試他們的設備,而不是擺滿笨重的基于硬件的示波器和邏輯分析儀。通常,基于軟件的工具通過 USB 電纜連接到個人計算機,界面以桌面應用程序的形式提供。流行的入門級/中級邏輯分析儀是 Saleae 邏輯分析儀。這些基于軟件的工具對現(xiàn)場技術人員來說非常有吸引力。通過將傳統(tǒng)上基于實驗室的分析帶到現(xiàn)場,他們可以更有效地檢查和排除已部署設備的故障?;谲浖姆治銎鞯囊粋€重要優(yōu)勢是,除了支持的默認協(xié)議(例如 I2C、SPI、串行)之外,還可以為自定義通信協(xié)議編寫您自己的協(xié)議分析器。
安全外殼 (SSH) 終端客戶端:對于運行操作系統(tǒng)并提供 shell 訪問以進行遠程管理的更強大的嵌入式系統(tǒng),可能需要通過 SSH 連接到設備以執(zhí)行特定的維護任務?;蛘呖赡苄枰h程登錄多個物聯(lián)網(wǎng)設備與之通信的服務器,并對后端服務進行更改。無論如何,遠程訪問系統(tǒng)的能力至關重要,而 Termius 等 SSH 終端客戶端使之成為可能?,F(xiàn)代客戶端中的其他有用功能包括通過單擊鼠標創(chuàng)建、存儲和運行 bash 代碼片段。它們還提供一次訪問多個終端的能力。最后,一些客戶端還提供安全文件傳輸 (SFTP) 功能,用于將文件傳輸?shù)奖镜赜嬎銠C或從遠程設備傳輸文件。
審核編輯黃昊宇
-
嵌入式
+關注
關注
5082文章
19104瀏覽量
304796
發(fā)布評論請先 登錄
相關推薦
評論