system76
当您打开计算机电源时,发生的事情比您想象的要多得多。 涉及的最重要的元素之一是嵌入式控制器(EC)。 这是负责为电池,充电系统,键盘,触摸板,悬挂/恢复和热控制等提供抽象的原因。 这些控制器通常是专有的,并且通常运行专有的固件。
System76即将改变这一范例。 最近,该公司为其Galago Pro和Darter Pro笔记本电脑型号采用了coreboot 。 现在,他们打算将开源方法扩展到EC。 有一个与Chrome操作系统设备相关联的名为Chromium EC的项目是开源的。 但是,仅适用于Chromebook和特定的EC芯片。 System76也希望为其客户提供开源的嵌入式控制器固件。
他们必须从头开始设计一个可以为笔记本电脑中的EC体系结构进行编译的项目Intel 8051 。 他们针对开源EC System76 EC的项目是针对System76笔记本电脑的GPLv3许可的嵌入式控制器固件。 它被设计为可移植到使用多个8位微控制器的板上。 这个项目已经发展到现在可以启动System76 Galago Pro并具有前面提到的电池,键盘,触摸板,悬挂/恢复和热控制的程度。
渴望了解更多信息,我给System76的首席工程师Jeremy Soller发了电子邮件,以进行更深入的探讨。 以下是我们对话中的一些要点。
问:英特尔8051的重要性是什么? 所有笔记本电脑都使用该芯片组吗?
答:我们笔记本电脑中的嵌入式控制器ITE IT8587E使用Intel 8051指令集。 并非所有笔记本电脑都使用此指令集,但很多笔记本电脑都使用。 这很重要,因为我们需要一个可以编译8051指令集固件的工具链,以及为该工具链编写的固件。
问:编写开放代码以利用英特尔8051涉及什么?
答:通常,我们必须定义寄存器以利用嵌入式控制器上的硬件。 有像SMBus和PECI这样的协议是在硬件中实现的,需要它们的驱动程序。 通常必须为每个嵌入式控制器编写这些驱动程序以抽象化其硬件,因此存在一个通用接口。 我们的EC固件具有某些Arduino和笔记本电脑中的EC的抽象,因此我们可以编写可移植的固件。
问:Google开发了开放式EC。 为什么不分叉那个项目呢?
答:我们最初的想法是将Chromium EC用于我们的开放式EC固件,但这是不可能的。 与Google小组成员讨论后,很明显该固件无法移植到8位微控制器,例如我们EC中使用的8051或许多Arduino中使用的AVR。 它主要针对ARM微控制器。 我们相互得出结论,最好启动一个针对8位微控制器的新项目,该项目是GPLv3的新代码库,而不是Chromium EC使用的BSD许可证。
问:System76开放源代码有多重要?
答:仅有的其他带有开源EC固件的x86_64笔记本电脑是某些使用Chromium EC的Chromebook。 但是,这些笔记本电脑对完整桌面Linux发行版(例如Ubuntu)的支持不佳。 我们为笔记本电脑的用户提供了强大的功能,可以在运行完整的台式机操作系统的同时查看和修改笔记本电脑的行为以适应他们的需求。 当它与我们的开放系统固件配对时,用户几乎无法使用这些笔记本电脑之一。
问:开放代码对固件和其他开发人员有什么影响?
答:我坚信开放式EC固件对于硬件定制与开放式系统固件同样重要。 用户可以调整键盘映射,更改风扇曲线,修改电池充电设置等。 关于此的最令人兴奋的事情是,我无法预测此更改可能带来的一切。 系统中的许多组件都与EC固件绑定在一起。 具有更改EC和系统固件的能力意味着可以用大量不同的,不可预测的方式来修改这些组件。
问:为该EC开发软件真正重要的是什么?
答:特别重要的是我们使用的EC是IT8587E,其指令集体系结构是Intel8051。ChromiumEC无法针对8051进行编译,因为它针对的是32位微控制器。 我们的项目旨在支持许多供应商提供的无处不在的8位微控制器以及Arduino的简易原型。 此外,这将我们在Thelio Io上所做的工作与我们在笔记本电脑固件上所做的工作结合在一起。
翻译自: https://opensource.com/article/20/1/system76-open-source-firmware
system76