Categories
程式開發

谷歌開源面向設備開發人員的微控制器模塊集Pigweed


近日,谷歌開源了Pigweed,這是一個為使用32位設備的開發人員設計的一個微控制器模塊集。其目的是使人們可以更快、更可靠的開發微控制器 — 即嵌入在單個電路芯片中的小型計算機。假設它能像宣傳的那樣,那麼Pigweed可以在智能家居、製造業、機器人、汽車、甚至電信等一系列行業中加速硬件的發展。

谷歌開源面向設備開發人員的微控制器模塊集Pigweed 1

圖片來源:Khari Johnson / VentureBeat

1月下旬,谷歌向美國專利商標局申請了Pigweed的商標,文件顯示,該項目將涉及“計算機操作軟件”。有些人將其理解為類似於谷歌Fuchsia的新操作系統,但在一篇博文中,谷歌明確表示,Pigweed只是一個微控制器庫的集合。

Pigweed附帶的工具通過虛擬環境提供了簡化的設置。 Pigweed pw_env_setup模塊中的引導腳本設置了當前的shell,使其能夠訪問一組標準化的實用程序——包括Python 3.8、clang-format和ARM編譯器——所有這些都不需要修改系統的默認環境。

谷歌開源面向設備開發人員的微控制器模塊集Pigweed 2

Pigweed支持分佈式測試,以及預配置的代碼格式化,並集成了預提交檢查。在代碼編輯器中,pw_watch模塊提供了一個監視程序,該程序在保存文件時會自動調用構建,並運行受代碼更改影響的測試,縮短更改的編輯-編譯-刷寫-測試週期。例如,pw_watch可以在構建受影響的庫和二進製文件、將測試刷寫到目標設備並運行特定的單元測試之前檢測文件更改。

Pigweed的pw_target_runner模塊在多個設備上並行運行測試,而它的pw_pressubmit模塊基於預先配置好的、供微控制器開發人員使用的工具,提供了現成的linter套件(用於分析源代碼以標記錯誤和bug的工具)。Pw_tokenizer在編譯時將字符串轉換為二進制標記,從而使日誌記錄在閃存、RAM和CPU使用方面的開銷更少。Pw_bloat為輸出二進製文件生成內存報告,從而向開發人員提供有關更改對內存影響的信息。

谷歌開源面向設備開發人員的微控制器模塊集Pigweed 3

以下是在最初的Pigweed版本中包含的其他模塊列表:

  • Pw_string:這個模塊提供了C++風格字符串操作的靈活性和安全性,但沒有動態內存分配,對二進制大小的影響更小。

  • Pw_unit_test:一個建立在嵌入式友好的原語之上的模塊,它不使用動態內存分配。它可以通過實現測試事件處理程序接口來用於移植到新的目標平台。

  • Pw_kvs:一種集成了損耗平衡的閃回持久化存儲的鍵值存儲實現;一個面向嵌入式設備文件系統的輕量級替代品。

  • Pw_cpu_exception_armv7m:ARM Cortex-M的底層硬件故障處理程序;處理程序用彙編語言編寫單元測試,以驗證嵌套硬件故障處理。

  • Pw_protobuf:面向wire格式的協議緩衝區實現的早期預覽。

到目前為止,Pigweed源碼是在Apache 2.0許可下提供的。谷歌警告說,它仍處於早期開發階段,目前不建議用於生產。

那麼,“Pigweed”這個名字的起源是什麼呢?谷歌指出,這是一種營養豐富的穀物和綠葉沙拉,也是一種快速生長的雜草。在開發最終成為Pigweed的項目時,這家科技巨頭想要找一個有趣、好玩且能反映Pigweed生長過程的名字。

谷歌寫道:“團隊一開始會使用一個吸引他們眼球的模塊,如果一切順利,他們很快就會開始使用更多的模塊。我們正在繼續改進並添加新的模塊。我們希望嵌入式社區的其他人能夠發現這些模塊對他們的項目有幫助。”

本文最初發佈於VentureBeat博客,經原作者授權由InfoQ中文站翻譯並分享。

延伸閱讀:

https://venturebeat.com/2020/03/19/google-open-sources-pigweed-microcontroller-modules-for-32-bit-devices/