写点什么

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

  • 2020-03-27
  • 本文字数:1356 字

    阅读完需:约 4 分钟

谷歌开源面向设备开发人员的微控制器模块集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/


2020-03-27 07:001356
用户头像
刘燕 InfoQ高级技术编辑

发布了 1123 篇内容, 共 609.6 次阅读, 收获喜欢 1982 次。

关注

评论

发布
暂无评论
发现更多内容

Serverless 架构就不要服务器了?

华为云开发者联盟

云计算 Serverless 架构

详解企业管理系统工作流配置

Marilyn

敏捷开发 工作流 软件架构

Java程序员说:世界上有三个伟大的发明【火、轮子、kafka】

Java架构师迁哥

除了类 Excel, SpreadJS 表格控件还能为系统开发带来什么价值?

葡萄城技术团队

迁移到 Atlassian Data Center 并没有您想象的那么可怕

Atlassian

负载均衡 高可用 Atlassian Jira

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

小Q

Java MySQL 学习 面试 算法

阿里云原生中间件首次实现自研、开源、商用“三位一体”,技术飞轮效应显现

阿里巴巴云原生

阿里云 云原生 中间件

软件测试系统学习流程和常见面试题

测试人生路

软件测试

区块链加持,鉴定溯源双保险,科技赋能茅台老酒成零售数字化标杆

CECBC

区块链 大数据 防伪溯源

架构训练营 - 第9周课后作业 - 学习总结

Pudding

一个隐藏在方法集和方法调用中且易被忽略的小细节

Gopher指北

后端 Go 语言

为什么你的“开发速度”和“产品性能”,都比不过竞品?丨开发者必读

葡萄城技术团队

iOS AOP 方案的对比与思考

GrowingIO技术专栏

ios aop

第九周 性能优化(三)总结

蓝黑

极客大学架构师训练营

排序与二分

落曦

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

阿里巴巴云原生

阿里云 开源 云原生

上线操作规范——基础版本

程序员架构进阶

团队管理 开发流程 发布流程 规范

数字货币将使货币政策实施更精准有效

CECBC

数字货币

数字货币步伐加快,苏州将于双十二推出数字人民币红包测试

CECBC

数字人民币

云原生趋势下的迁移与容灾思考

阿里巴巴云原生

云原生 迁移 容灾

解读下一代网络:算力网络正从理想照进现实

华为云开发者联盟

AI 5G 网络 云技术

披星戴月地辛苦割胶或成历史,海南胶园迎来这一“神器”!

华为云开发者联盟

云计算 大数据 IoT

开发霸总:我要让所有人知道,这个扫码组件,被你承包了

蚂蚁集团移动开发平台 mPaaS

支付宝 uniapp mPaaS

Minikube-运行在笔记本上的Kubernetes集群

网管

学习 Kubernetes k8s minikube k8s入门

架构师训练营第 1 期 第 9 周作业

李循律

极客大学架构师训练营

LeetCode069-x的平方根-easy

书旅

数据结构 算法 Go 语言

0到1产品需求整理分析模型参考

燕陈华

产品设计 产品需求

“人上人”大专学历,通过系统的六个学习步骤,艰难4面终砍offer,“跳进”字节跳动

Java架构追梦

Java 架构 字节跳动 面试 微服务

字节跳动内部授课课件:附图讲解MySQL底层索引结构算法实现

小Q

Java MySQL 学习 编程 面试

第九周作业

Geek_4c1353

极客大学架构师训练营

华为云MVP付健权:从机械工程师到AI开发者的华丽转身

华为云开发者联盟

AI 转型 工程师

谷歌开源面向设备开发人员的微控制器模块集Pigweed_AI&大模型_KYLE WIGGERS_InfoQ精选文章