备注1:FOSDEM = Free and Open source Software Developers’ European Meeting 欧洲开源开发者会议,一个完全由志愿者自发组织非商业化的开源开发者会议。
备注2:以太网PHY,PHY是一个操作OSI模型物理层的设备,一个以太网PHY是一个芯片,可以发送和接收以太网的数据帧(frame)。它通常缺乏NIC(网络接口控制器)芯片所提供的Wake-on-LAN或支持Boot ROM的先进功能。此外,不同于NIC,PHY没有自己的MAC地址。
备注3:Sunxi是一系列用于嵌入式设备的ARM架构系统芯片(System on Chip),由全志科技股份有限公司设计生产,该芯片主要用于手机。
备注4:社区型芯片创建平台Efabless今天宣布推出其新的chipIgnite计划,将芯片设计和制造带给大众,并与SkyWater Technology(纳斯达克:SKYT)合作开发该计划支持的第一个工艺节点。chipIgnite计划扩展了由谷歌赞助的基于SKY130的开源芯片制造计划,并支持包括非开源IP在内的私人商业设计。
备注5:Fabless是SIC(半导体集成电路)行业中无生产线设计公司的简称,是只搞设计的无晶圆厂半导体公司,他们的生产一般交给像台积电这样的代工厂去做。通常说的IC design house(IC设计公司)就是Fablesse。
一般来说,FOSDEM(欧洲开源开发者会议)通常会在比利时的布鲁塞尔举行,但今年由于新冠疫情的影响,FOSDEM 2022将会像 FOSDEM 2021一样,还是在线举行。不过这也算是一个好消息了,因为这意味着在世界的任何地方大家都可以参加现场直播,这样看来就更像是“FOSDIM(自由和开源开发者国际会议)”了,也就是国际(International)代替了欧洲(European)。
FOSDEM 2022目前已经结束了,它是在 2 月 5 日至 6 日举行的。一共有 637 位演讲者、718 场活动和 103 个线路(即按主题组织的系列讲座)。我自己根据需要制作了自己的虚拟日程安排,我主要看的是嵌入式、移动和汽车开发相关的会议。另外,还很多其他的开发会议,包括“计算机辅助建模和设计”、“移动设备上的FOSS”、“Libre-Open VLSI和FPGA”等等。
2022年2月5日 星期六
- 12:30 – 13:00,嵌入式 Linux的五个奥秘,演讲者Josef Holzmayr
一旦你开始使用嵌入式 Linux,你会发现有很多事情要做。有些事情比较容易做,有些则没有那么容易。首先,你肯定可以充分利用在桌面端使用 Linux 的知识,对吧?这种方法看起来就像是一种自然的规律。不过,它也有其弊端。此次演讲的目的就是为了帮助你理解并最终避免其中的一些弊端。
构建和开发嵌入式 Linux 系统有时感觉就像魔术一样。这都是开源的,对吧?所以,你只需获取代码并让它按照你的要求进行操作就可以了!
但就像诗中形容的“巫师学徒”一样,你可能会发现自己在与我们刚才所说的精神作斗争,比如什么是“分发”。不过,重要的是你要知道为什么包管理在不同配置的地方是不同的。还要知道在哪里以及何时进行更新。
本演讲涵盖了初学者在第一次使用嵌入式 Linux 时最常见的五个“误解”,这个讲解不仅是为了能避免这些误解致于适得其反,而且也是为了能真正驾驭它。
- 13:00 – 13:30,回到 DirectFB!用DirectFB2复兴了DirectFB,演讲者Nicolas Caramelli
DirectFB2是 DirectFB 的一个分支,而 DirectFB 则是一个为嵌入式系统而设计的图形库,广泛用于 GNU/Linux 嵌入式世界。DirectFB2 带来了诸如 Meson 构建系统、纯 C 实现和源代码模块化等变化。(备注:纯C指的是标准C,也就是没经过扩展的C语言。)
对底层显示的访问主要是基于 DRM/KMS 系统模块(也有可能基于旧版 Framebuffer 系统模块)。另外,根据平台,还可以使用 GFX 驱动程序模块的架构来实现硬件加速的图形渲染。对了,其核心库是轻量级的(没有外部依赖项),而且提供基本的字体、图像、视频的渲染支持,也可以通过 DirectFB 示例进行演示。
借助 DirectFB-media 包,还可以使用基于外部库的其他 DirectFB 提供程序,例如使用 FreeType 库渲染字体、使用 libpng 或 jpeg 库渲染图像、使用 FFmpeg 或 GS treamer 库渲染视频。对于 3D 图形,还可以使用 DirectFB 图形后端完成 OpenGL 或 Vulkan 渲染。例如,Mesa 3D 实现使用 DirectFBGL 模块或使用 DirectFB 平台的 EGL 实现 OpenGL 渲染,而 SwiftShader 实现使用 DirectFB WSI 实现 Vulkan 渲染。
此次的演讲主要是为了演示如何开始使用 DirectFB2,当然它在某些设备上的应用与否也值得考虑。
- 13:30 – 14:30,汽车以太网 PHY 启动的经验教训和调试技巧,演讲者Jean-Louis Thekekara
我想分享一下我在 iMX8 平台上开发各种汽车以太网千兆 PHY 的经验。
议程:
- PHY 配置检查表(= 我需要了解哪些关于我的 PHY的信息,开始启动之前我的原理图)
- 软件实现(= 逐步的软件集成 + 要避免的常见陷阱,主要集中在 Linux,但我也谈论 U-Boot)
- 调试提示(= 软件和硬件提示)
以上的议程,是我基于世界领先的全球汽车零部件供应商法雷奥集团(Valeo Group 集团)内部培训材料进行的一些补充。这些内容促成了一些我希望在 U-boot 和 Linux 版本推出的补丁。
- 14:30 – 15:00,为更多Linux设备带来RAUC A/B更新,演讲者Leon ANAVI
RAUC 是一种安全可靠的开源软件解决方案,用于嵌入式 Linux 设备的 A/B 更新。RAUC 支持的行业领先构建系统有:Yocto Project 和 OpenEmbedded、Buildroot 和 PTXdist。要想将 RAUC 移植到新设备中需要几个高级的技术步骤。Layer meta-rauc-community 通过为树莓派、Allwinner(Sunxi)、NVIDIA Tegra 和 QEMU 等流行设备提供示例来加速和简化Yocto和OpenEmbedded 的集成过程。
要将 RAUC 移植到新设备,我们需要经过以下几个步骤:设置适当的引导加载程序(如 U-Boot)、在 Linux 内核配置中启用 SquashFS、使用 ext4 文件系统、创建分区并配置 RAUC 插槽、生成证书和设置引导加载程序使用脚本在升级时切换 RAUC 插槽的环境配置。为了简化开发人员在 2020 年将 RAUC 与 Yocto 和 OpenEmbedded 结合使用的入门过程,Leon Anavi 创建了Layer meta-rauc-community。2021 年,该 Layer 移至了 GitHub 中的 RAUC 组织。最初,它只提供树莓派支持,随着时间的推移、社区的诸多贡献,他们的支持扩展到了更多机器当中。
这部分的演讲将会简要介绍 RAUC,着重介绍 meta-rauc 和meta-rauc-community Layer。演讲当中,我们会详细介绍如何使用 bitbake 构建、烧录和更新镜像到当前支持的平台当中。此外,我们也将讨论移植 RAUC 的一般指南,以及将来向 meta-rauc-community 添加新支持的机器。
- 15:00 – 15:30,使用KiCAD突破开源硬件限制,演讲者Tsvetan Usunov
该演讲将涵盖非常复杂且功能强大的 OSHW Linux 板的设计,该板基于新的 NXP iMX8 和 ST STMP1 SOC 以及 FLOSS KiCAD 工具,然后运行用于云、物联网和健康的 FLOSS 软件,不仅仅是在软件层面,同时也是在硬件层面为重视隐私的人提供了完全的透明性。
- 15:20 – 16:00 – 在电子书阅读器上使用常规Linux的道路(Kobo/Tolino阅读器的经验和进步),演讲者Andreas Kemnade
大多数的 Kobo/Tolino 读卡器都提供一个标记明确的控制台端口,通常还有第二个 UART。如果它们不防水,产品就会提供一个包含整个操作系统和引导加载程序的内部 µSD 卡插槽,这样听起来就像是在邀请用户拿该产品去做一些有趣的事情,而不仅仅是用来阅读书籍。尤其是在长时间的户外活动中,显示器和低功耗都是有其自身优点的。他们的硬件也非常相似,因此用户是有机会进行更换的。一些设备树和一些驱动程序现在也进入主线 Linux 了,其他的工作目前也正在进行中。对Linux 发行版的支持现在也已经开始了,比如 postmarketOS 和图形开始使用标准 API。在这次演讲中,我们将谈谈我们的经验,尤其是目前在主线 Linux 中的支持状态,比如缺少的是什么,挑战的是什么?我也会讨论图形用户空间的要求,并简要介绍我最喜欢的用例:显示地图。
- 16:00 – 16:30,Build Systems,演讲者Eilís Ní Fhlannagáin
在本次演讲中,pidge 将批判性地评测 meta-zephyr 在其最初目标中成功和失败的地方、背后的原因,以及为解决这些问题而采取的步骤。OpenEmbedded、Zephyr 和 meta-zephyr 是很强大的工具,可以让物联网开发人员能够快速开发嵌入式解决方案。然而,将它们全部集成起来还是很具有挑战性的,通过将多个构建系统、机器配置和构建语言包装到一个连贯的解决方案中也会变得更加困难。在本次演讲中,pidge 将通过展示其在 Eclipse Oniro 项目上对 meta-zephyr layer更改的实现工作,该layer将大多数 zephyr 支持的机器配置带入了 meta-zephyr,但也消除了对 OE 机器配置等任何需要核心zephyr模块的知识。本次会议也将会讨论在 zephyr 整合这些变化时遇到的问题。
- 16:30 – 17:30,一站式商店:嵌入式FPGA编程的最佳实践,演讲者Babar Khan
FPGA 越来越多地用于当今的嵌入式系统中了。但众所周知,它们具有复杂的编程模型。为了应对这种复杂性,人们越来越关注使用新语言和编译器在更高抽象级别设计的 FPGA 硬件中。本次演讲将涉及诸多内容,就像是一个与这些发展相关主题的“一站式商店”。
你是嵌入式开发人员吗?你喜欢 FPGA 吗?你想了解部署 FPGA 的嵌入式系统的最佳编程实践吗?你喜欢性价比高的硬件吗?你喜欢开源项目吗?如果你对上述任何一个问题的回答都是肯定的,那么本次演讲就是特意为你准备的。正如标题所示,本次演讲及其内容实际就是与 FPGA 编程相关的最佳实践“一站式商店”。考虑到基于 C 的语言仍然在嵌入式系统中占主导地位,本次演讲将重点介绍在 FPGA 上实现你的设计时可以在使用所有基于 C (C/C++/C#) 的语言时广泛实现的新方法。也会更进一步地讨论将把焦点转移到 C++ 上,因为与以前的 C++ 标准相比,现在的 C++ 加快了步伐,更接近底层硬件了。最后四个 C++ 标准在使 C++ 语言与嵌入式系统更加兼容方面也取得了进步。许多开源 FPGA 库都基于现代 C++。最终,你会了解现代嵌入式开发人员是如何采用某些编码实践来充分利用 FPGA 硬件底层空间的并行性。此外,通过该演讲你还将了解到开源编译器、开源项目和性价比高的 FPGA 硬件,以及实现这些的最佳实践。
- 17:30 – 18:00,跨Linux和Zephyr内核的GPIO(最大化代码重用),演讲者Bernhard Rosenkränzer
有时跨多个内核共享代码其实是很有用的,我们会避免做很多重复的工作。但是,当一个版本在 Cortex-M 上使用 Zephyr,而在 Cortex-A 上使用另一个 Linux 时,这可能又会很复杂。我们将会使用 Eclipse Oniro 项目中的门锁蓝图示例来探讨这个问题,这是一个基本门锁功能的实现。对于典型的用例来说,带有 Zephyr 的 Cortex-M 其实则绰绰有余,但我们可能还是希望在 Cortex-A 上使用 Linux,并将相同的应用程序集成到更大的应用程序中。我们会不会找到一种方法吗?
2022年2月6日 星期日
- 10:15 – 10:45,在骁龙410 上运行 Mainline Linux(我们如何在 postmarketOS 中支持超过 25 种设备)
高通骁龙410 (msm8916) 是 2015 年左右在许多智能手机和平板电脑中都使用的 SoC。它是 postmarketOS 在撰写本文时可以提供的最成熟的“售后”平台。许多受支持的设备也都非常实用,并且具有大多数预期的功能,例如电话和移动数据工作。
这次的演讲会回顾我们在支持这些设备时面临的一些最重要的挑战,并描述我们解决这些问题的方法。除了 Linux 内核之外,我们还专注于各种其他工具和项目,例如lk2nd,lk2nd是一个 shim 引导的加载程序,它是为安装 Linux 环境做准备并从内核中隐藏一些特定于设备的业务。它还统一了所有设备上的引导和安装过程。我们还有其他工具和资源可以使移植更容易一些,其中包括各种文档,甚至是全自动显示驱动程序的生成器,它有助于解决每个显示器都需要的唯一初始化这一事实。
- 11:20 – 11:50,以超低成本将openwifi带到PYNQ-Z1,演讲者Yimin Gu
软件定义无线电和 FPGA 都很有趣。尤其是AD936X RF收发器与ZYNQ 7020级FPGA SoC的组合,他们都能够运行openwifi。由于 ADI 和 Xilinx 的评估板都非常昂贵,因此它的价格一直让普通的 DIY 爱好者们望而却步,转而去选择诸如 ANTSDR 之类更便宜的产品,但似乎它们都将 RF 和 ZYNQ 芯片捆绑在一起,因此这些就不再适合于通用的 ZYNQ 开发了。
在本次演讲中,我想介绍一款支持 openwifi 的低成本 AD936X 扩展板设计和实现,其主要用于 Digilent 广泛可用的PYNQ-Z1 板。这提供了 openwifi 和 PlutoSDR 功能,同时保留了 PYNQ-Z1 的主要功能(应该不是全部),但其总价格可能低于所有目前可用且支持 openwifi 的平台。类似的设计也可能适用于其他 ZYNQ 板,如 ZYBO Z7-20 或 Arty Z7-20。这样的话,就可以让更多人使用 openwifi,尤其是那些已经拥有 ZYNQ 板的人。除了这个扩展板之外,我们还会介绍“现代”电路板 DIY 的工具和工作流程,这使我能够在家中舒适地构建这个带有 BGA 芯片的 4 层开发板。
- 12:00 – 12:40,Frank Delporte在树莓派上更新Java,演讲者Frank Delporte
在树莓派上运行 Java 项目的概述。
2021 年,Pi4J 项目发布了全新第二版,面向对象(是90年代开始软件开发的一种方法)是GPIO API和树莓派实现库。这次我们一起看一下新的文档站点和示例项目,从而来帮助你们开始在树莓派上进行 Java 开发。
- 12:40 – 13:20,MQTT对IoT应用程序及其他应用程序的好处,作者Mary Grygleski
快速研究几个流行的 MQTT 代理!
物联网应用程序在物联网设备上运行,几乎可以针对所有行业和垂直领域进行创建,从小型设备到大型设备,包括医疗保健、工业自动化、智能家居和建筑、汽车和可穿戴技术等。这些可能性都是无限的。物联网应用越来越多地使用人工智能和机器学习来为设备增加智能。在物联网生态系统的所有变量中,一个共同的主题是需要能够处理受限操作环境的,例如不可靠的网络连接、有限的带宽、低电池电量等。我们之后也将会研究 MQTT 协议,它是如何从早期用于通过卫星连接石油管道的发展到现在对物联网和 M2M 应用的不断增长的需求、该协议将如何发展来满足现代的需求,尤其是在当前云计算时代的表现。在此次演讲中,我们也会研究市场上一些优秀的 MQTT 库,例如基于 Java 的 HiveMQ,以及 Eclipse Mosquitto 和 Apache许可的VerneMQ(VerneMQ 是一个高性能、分布式的 MQTT 消息代理)等开源库。
- 13:45 – 14:25,关于Efabless开放式ASIC,演讲者Mohamed Kassem
运行成本,以及Google赞助的Skywater 130nm计划。
- 15:00 – 15:30,使用Linu和Zephyr运行OpenThread Mesh网络,演讲者Stefan Schmidt
Thread协议指定了一个低功耗的 IoT Mesh网络。它提供自我修复、低延迟和 IPv6 连接,没有单点故障。除了较底层的Mesh网络功能外,它还提供Mesh网络管理以及无头设备(无头设备可以理解为是一个自带GPU等硬件配置的Docker)的安全载入。
OpenThread 是一个实现 Thread 协议及其组件的开源项目。本次演讲的重点是演示基于 Linux 的 OpenThread 边缘路由器和基于 Zephyr 的Mesh节点。该演讲通过基于 Yocto 的构建系统紧密结合在一起,展示了在低功耗无线链路上拥有支持 IPv6 微处理器所需的所有组件。在这种情况下,使用的功率足够小,可以让小型传感器在纽扣电池上运行数月甚至数年。所有这些都由基于 Linux 的边缘路由器提供服务,从而允许互联网访问和端到端的 IPv6 连接。
以上所有内容都会捆绑在一个透明的物联网网关Eclipse Oniro项目的蓝图中。
- 15:30 – 16:00,实现UN R155与开源堆栈的合规性,演讲者José Bollo
UNECE WP.29 法规 R155 网络安全管理和 R156 软件更新已经在 2021 年被联合国欧洲经济委员会世界车辆法规协调论坛(UNECE’s World Forum for Harmonization of Vehicle Regulations)采用了。这就意味着从 2022 年 7 月开始,网络安全已经进入世界 60 多个国家和地区的市场了。
设计安全的开源堆栈redpesk,通过提供以下功能可以帮助满足监管要求:
- 支持 MAC 的 Linux 发行版 (SMACK/SELinux)
- 安全的微服务架构
- 与 RTOS 集成以确保安全
- 适用于嵌入式的创新容器引擎
- 整车寿命的 LTS(约 20 年)
- SOTA 支持
- 16:00 – 16:30,Phosh贡献者齐聚一堂
结识其他 Phosh 贡献者,作为设计者、翻译者、分发打包者、测试者或开发者(或者你正打算这样做),你有正在为 Phosh 或其更广泛的生态系统做出过贡献吗?如果有,那就加入这次的聚会吧。没有正式的日程安排,只是与其他人线上见面,因为我们不能举行线下实际会议。
- 16:30 – 17:00,为什么嵌入式Linux需要用C语言编写的容器管理器,演讲者Ricardo Mendoza
容器技术一直是云领域的一部分,它的路线图通常根据用户的要求和应用领域的需求而决定。而在服务器域中,资源利用率远不如在嵌入式域中那么重要。他们支持在裸机服务器和云世界中,利用容器工具和机制不同的语言工具和技术不符合嵌入式的要求。
尽管如此,在过去的几年里,以云为中心的公司仍然在积极地推动嵌入式 Linux 生态系统及其开发社区,我们也应该使用诸如 Golang、NodeJS 和类似的解决方案和工具。当你将云工具塞进资源受限的嵌入式系统中时,大多数人都没有意识到这些挑战。其实当中一些框架的架构其实是具有正确意图的,大多数人只是缺乏了解嵌入式特定需求的兴趣。
在本次演讲中,我们将探讨使用容器进行嵌入式系统建模如何通过启用模块化软件架构来帮助促进开发周期。我们将深入探讨嵌入式系统的真正需求是什么,以及现代容器技术如何帮助我们满足这个世界的实际需求。最后,我们将通过一个Pantavisor的示例进行演示,这是一个为嵌入式系统实现的开源容器框架。
- 17:00 – 17:30,使用NVIDIA Jetson进行无线(OTA)软件更新,演讲者Luis Ramirez Vargas
NVIDIA Jetson 在全球拥有超过 50 万名开发人员,是最受欢迎的嵌入式计算平台之一,它将 AI 性能提升到了极致,且拥有一个节能和紧凑的外形尺寸。
在本次演讲中,我们将详细介绍一种将强大且安全的无线软件 (OTA) 更新和适用于所有 Jetson 系统级模块 (SoM) 的 NVIDIA JetPack 4.6 生产版本所集成的独特方法,并支持官方 L4T(基于 Ubuntu)操作系统,能运行 JetPack 4.6 或更高版本。由于它构建在最新的 JetPack SDK 版本之上,因此在不同的 Jetson SoM 上构建和部署应用程序时无需单独集成。这样做的好处是可以大大缩短 OTA 解决方案的启动时间,从而进行所有类型的 OTA 更新。它的维护成本很低,因为它不涉及修改启动过程,而是要依赖于 NVIDIA 官方支持的工具,这些工具更不会因为新的 L4T 版本或电路板更改而“中断”。
- 从 NVIDIA 下载 L4T 镜像
- 使用 NVIDIA 工具通过 L4T 镜像刷新 A/B 设置
- 安装 Mender 作为 deb 包,加上集成层
- 运行 Mender 快照以创建工件
- 将 Artifact 快照部署到队列
目前,FOSDEM(欧洲开源开发者会议)已经结束了,不过,你们还是可以在他们的网站上按天、线路或开发室等方式查看FOSDEM 2022的具体情况,都是可以免费参加的。
文章翻译者:Nicholas,技术支持工程师、瑞科慧联(RAK)高级工程师,深耕嵌入式开发技术、物联网行业多年,拥有丰富的行业经验和新颖独到的眼光!