我的名片正在运行 Linux

文章翻译自 博客文章 工程师乔治·希利亚德

我的名片正在运行 Linux
点击

我是一名嵌入式系统工程师。 在空闲时间,我经常寻找一些可以用于未来系统设计的东西,或者一些来自我兴趣的东西。

其中一个领域是可以运行 Linux 的廉价计算机,而且越便宜越好。 所以我挖了一个深不见底的处理器兔子洞。

我想,“这些处理器太便宜了,几乎可以免费赠送。” 一段时间后,我产生了以名片的形式为 Linux 制作一张裸卡的想法。

一旦我想到这一点,我就决定这将是一件非常酷的事情。 我已经 看到 电子 商业名片,并且它们具有各种有趣的功能,例如模拟闪存卡、闪烁灯泡,甚至无线数据传输。 不过,我还没有见过支持 Linux 的名片。

所以我就给自己做了一个。

这是产品的成品版本。 一台完整的最小 ARM 计算机,运行我使用 Buildroot 构建的自定义版本的 Linux。

我的名片正在运行 Linux

它的角落有一个 USB 端口。 如果将其连接到计算机,它会在大约 6 秒内启动,并显示为闪存卡和虚拟串行端口,您可以通过该虚拟串行端口登录卡壳。 闪存驱动器上有一个自述文件、一份我的简历和几张我的照片。 该 shell 包含多种游戏,例如 Fortune 和 Rogue 等 Unix 经典游戏、游戏 2048 的小型版本以及 MicroPython 解释器。

所有这一切都是使用非常小的 8 MB 闪存芯片完成的。 引导加载程序大小为 256 KB,内核占用 1,6 MB,整个根文件系统占用 2,4 MB。 因此,还有大量的空间留给虚拟闪存驱动器。 还有一个可写的主目录,以防任何人执行他们想要保存的任何操作。 这也全部保存在闪存芯片上。

整个设备的成本不到 3 美元。 它足够便宜,可以赠送。 如果您从我这里收到了这样的设备,则意味着我很可能是想给您留下深刻的印象。

设计与建造

我自己设计并组装了所有东西。 这是我的工作,我喜欢它,大部分挑战是为这个爱好找到足够便宜的零件。

处理器的选择是影响项目成本和可行性的最重要决策。 经过广泛的研究,我选择了 F1C100s,这是一款来自 Allwinner 的相对鲜为人知的处理器,它经过了成本优化(即非常便宜)。 RAM 和 CPU 位于同一封装中。 我在淘宝上买了处理器。 所有其他组件均购自 LCSC。

我从 JLC 订购了主板。 他们花了 8 美元为我印了 10 份。 他们的质量令人印象深刻,尤其是价格; 不像 OSHPark 那样整洁,但看起来还是不错的。

我做了第一批哑光黑色。 它们看起来很漂亮,但很容易弄脏。

我的名片正在运行 Linux

第一批产品存在一些问题。 首先,USB 连接器不够长,无法牢固地插入任何 USB 端口。 其次,闪存轨道制作不正确,但我通过弯曲触点解决了这个问题。

我的名片正在运行 Linux

检查一切正常后,我订购了一批新的板; 您可以在文章开头看到其中一张照片。

由于所有这些小元件的尺寸都很小,我决定采用回流焊接 便宜的炉子。 我可以使用激光切割机,因此我用它从层压膜上切下焊接模板。 模板效果非常好。 处理器触点的 0,2 毫米直径孔需要特别小心,以确保高质量的制造 - 正确聚焦激光并选择其功率至关重要。

我的名片正在运行 Linux
其他板可以很好地在涂抹浆料时固定板。

我涂上焊膏并用手定位组件。 我确保在此过程中的任何地方都没有使用铅 - 所有电路板、组件和焊膏均符合标准 RoHS -这样当我把它们分发给人们时我的良心就不会折磨我。

我的名片正在运行 Linux
我在这批产品中犯了一个小错误,但是焊膏可以原谅错误,一切都进展顺利

每个组件大约需要 10 秒才能定位,因此我尝试将组件数量保持在最低限度。 有关地图设计的更多详细信息可以阅读另一篇文章 我的详细文章.

材料清单及费用

我坚持严格的预算。 名片的效果正如预期的那样——我不介意把它送人! 当然,我不会把它发给所有人,因为制作每份都需要时间,而我的时间并没有计入名片的费用中(有点免费)。

部件
价格区间

F1C100s
$1.42

PCB
$0.80

8MB闪存
$0.17

所有其他组件
$0.49

在总
$2.88

当然,还有一些难以计算的成本,例如交付成本(因为它分布在多个项目的组件中)。 不过,对于支持Linux的主板来说,它绝对是相当便宜的。 这种细分还很好地了解了公司在最低价格段制造设备的成本:你可以肯定,公司的成本甚至比我的成本还低!

机会

说什么? 该卡可在 6 秒内启动严重剥离的 Linux。 由于外形尺寸和成本的原因,该卡没有 I/O、网络支持或任何用于运行繁重程序的大量存储空间。 尽管如此,我还是成功地将一些有趣的东西塞进了固件镜像中。

USB

使用 USB 可以完成很多很酷的事情,但我选择了最简单的选项,这样如果人们决定尝试我的名片,他们就更有可能让它工作。 Linux 允许卡像一个“设备”一样运行,并提供支持 小工具框架。 我从之前包含该处理器的项目中获取了一些驱动程序,因此我可以访问 USB 小工具框架的所有功能。 我决定模拟预先生成的闪存驱动器并通过虚拟串行端口提供 shell 访问权限。

以root身份登录后,您可以在串行控制台上运行以下程序:

  • rogue:一款经典的 Unix 地牢爬行冒险游戏;
  • 2048:控制台模式下的 2048 简单游戏;
  • 运势:各种造作说法的输出。 我决定不在这里包含整个引文数据库,以便为其他功能留出空间;
  • 微蟒:一个非常小的Python解释器。

闪存驱动器仿真

在编译过程中,构建工具会生成一个小的 FAT32 映像并将其添加为 UBI 分区之一。 Linux Gadget Subsystem 将他的 PC 呈现为存储设备。

如果您有兴趣查看闪存驱动器上显示的内容,最简单的方法是阅读 来源。 还有几张照片和我的简历。

资源

来源

我的 Buildroot 树发布在 GitHub 上 - 三十三四十/名片-linux。 有用于生成 NOR 闪存映像的代码,该代码是使用处理器的 USB 下载模式安装的。 它还包含游戏和其他程序的所有包定义,我在一切正常后将其推送到 Buildroot 中。 如果您有兴趣在您的项目中使用 F1C100,这将是一个很好的起点(随意 问我问题).
我用了 精美执行的项目 Icenowy 的 F4.9C1s Linux v100,稍作重新设计。 我的卡运行几乎标准的 v5.2。 它在 GitHub 上 - 三三四十/Linux.
我认为我拥有当今世界上用于 F1C100 的最好的 U-Boot 移植,而且它也部分基于 Icenowy 的工作(令人惊讶的是,让 U-Boot 正常工作是一项相当令人沮丧的任务)。 您也可以在 GitHub 上获取它 - 三三四十/u-boot.

F1C100 的文档

我发现 F1C100 的文档相当稀疏,我将其发布在这里:

我上传给那些好奇的人。 我的项目图.

我的名片正在运行 Linux

结论

在这个项目的开发过程中我学到了很多东西——这是我第一个使用回流焊炉的项目。 我还学习了如何为文档质量较差的组件查找资源。

我利用了我现有的嵌入式 Linux 经验和主板开发经验。 该项目并非没有缺陷,但它很好地展示了我的所有技能。

对于那些对使用嵌入式 Linux 的详细信息感兴趣的人,我建议阅读我的相关文章系列: 掌握嵌入式Linux。 在那里,我详细讨论了如何从头开始为小型且廉价的 Linux 系统创建软件和硬件,类似于我的名片。

来源: habr.com

添加评论