首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谷歌开源面向设备开发人员的微控制器模块集Pigweed

近日,谷歌开源了Pigweed,这是一个为使用32位设备的开发人员设计的一个微控制器模块集。其目的是使人们可以更快、更可靠的开发微控制器 — 即嵌入在单个电路芯片中的小型计算机。假设它能像宣传的那样,那么Pigweed可以在智能家居、制造业、机器人、汽车、甚至电信等一系列行业中加速硬件的发展。

图片来源:Khari Johnson / VentureBeat

1月下旬,谷歌向美国专利商标局申请了Pigweed的商标,文件显示,该项目将涉及“计算机操作软件”。有些人将其理解为类似于谷歌Fuchsia的新操作系统,但在一篇博文中,谷歌明确表示,Pigweed只是一个微控制器库的集合。

Pigweed附带的工具通过虚拟环境提供了简化的设置。Pigweed pw_env_setup模块中的引导脚本设置了当前的shell,使其能够访问一组标准化的实用程序——包括Python 3.8、clang-format和ARM编译器——所有这些都不需要修改系统的默认环境。

Pigweed支持分布式测试,以及预配置的代码格式化,并集成了预提交检查。在代码编辑器中,pw_watch模块提供了一个监视程序,该程序在保存文件时会自动调用构建,并运行受代码更改影响的测试,缩短更改的编辑-编译-刷写-测试周期。例如,pw_watch可以在构建受影响的库和二进制文件、将测试刷写到目标设备并运行特定的单元测试之前检测文件更改。

Pigweed的pw_target_runner模块在多个设备上并行运行测试,而它的pw_pressubmit模块基于预先配置好的、供微控制器开发人员使用的工具,提供了现成的linter套件(用于分析源代码以标记错误和bug的工具)。Pw_tokenizer在编译时将字符串转换为二进制标记,从而使日志记录在闪存、RAM和CPU使用方面的开销更少。Pw_bloat为输出二进制文件生成内存报告,从而向开发人员提供有关更改对内存影响的信息。

以下是在最初的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/

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/R5IsZEr4CJ5jA84JRxAP
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券