文章翻译自
我是一名嵌入式系统工程师。 在空闲时间,我经常寻找一些可以用于未来系统设计的东西,或者一些来自我兴趣的东西。
其中一个领域是可以运行 Linux 的廉价计算机,而且越便宜越好。 所以我挖了一个深不见底的处理器兔子洞。
我想,“这些处理器太便宜了,几乎可以免费赠送。” 一段时间后,我产生了以名片的形式为 Linux 制作一张裸卡的想法。
一旦我想到这一点,我就决定这将是一件非常酷的事情。 我已经
所以我就给自己做了一个。
这是产品的成品版本。 一台完整的最小 ARM 计算机,运行我使用 Buildroot 构建的自定义版本的 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 那样整洁,但看起来还是不错的。
我做了第一批哑光黑色。 它们看起来很漂亮,但很容易弄脏。
第一批产品存在一些问题。 首先,USB 连接器不够长,无法牢固地插入任何 USB 端口。 其次,闪存轨道制作不正确,但我通过弯曲触点解决了这个问题。
检查一切正常后,我订购了一批新的板; 您可以在文章开头看到其中一张照片。
由于所有这些小元件的尺寸都很小,我决定采用回流焊接
其他板可以很好地在涂抹浆料时固定板。
我涂上焊膏并用手定位组件。 我确保在此过程中的任何地方都没有使用铅 - 所有电路板、组件和焊膏均符合标准
我在这批产品中犯了一个小错误,但是焊膏可以原谅错误,一切都进展顺利
每个组件大约需要 10 秒才能定位,因此我尝试将组件数量保持在最低限度。 有关地图设计的更多详细信息可以阅读另一篇文章
材料清单及费用
我坚持严格的预算。 名片的效果正如预期的那样——我不介意把它送人! 当然,我不会把它发给所有人,因为制作每份都需要时间,而我的时间并没有计入名片的费用中(有点免费)。
部件
价格区间
F1C100s
$1.42
PCB
$0.80
8MB闪存
$0.17
所有其他组件
$0.49
在总
$2.88
当然,还有一些难以计算的成本,例如交付成本(因为它分布在多个项目的组件中)。 不过,对于支持Linux的主板来说,它绝对是相当便宜的。 这种细分还很好地了解了公司在最低价格段制造设备的成本:你可以肯定,公司的成本甚至比我的成本还低!
机会
说什么? 该卡可在 6 秒内启动严重剥离的 Linux。 由于外形尺寸和成本的原因,该卡没有 I/O、网络支持或任何用于运行繁重程序的大量存储空间。 尽管如此,我还是成功地将一些有趣的东西塞进了固件镜像中。
USB
使用 USB 可以完成很多很酷的事情,但我选择了最简单的选项,这样如果人们决定尝试我的名片,他们就更有可能让它工作。 Linux 允许卡像一个“设备”一样运行,并提供支持
壳
以root身份登录后,您可以在串行控制台上运行以下程序:
- rogue:一款经典的 Unix 地牢爬行冒险游戏;
- 2048:控制台模式下的 2048 简单游戏;
- 运势:各种造作说法的输出。 我决定不在这里包含整个引文数据库,以便为其他功能留出空间;
-
微蟒 :一个非常小的Python解释器。
闪存驱动器仿真
在编译过程中,构建工具会生成一个小的 FAT32 映像并将其添加为 UBI 分区之一。 Linux Gadget Subsystem 将他的 PC 呈现为存储设备。
如果您有兴趣查看闪存驱动器上显示的内容,最简单的方法是阅读
资源
来源
我的 Buildroot 树发布在 GitHub 上 -
我用了
我认为我拥有当今世界上用于 F1C100 的最好的 U-Boot 移植,而且它也部分基于 Icenowy 的工作(令人惊讶的是,让 U-Boot 正常工作是一项相当令人沮丧的任务)。 您也可以在 GitHub 上获取它 -
F1C100 的文档
我发现 F1C100 的文档相当稀疏,我将其发布在这里:
-
全志 F1C100s 数据表 – 一般信息和引脚排列。 -
全志F1C600参考手册 – F1C600 的寄存器定义,实际上与 F1C100 相同,但根据声明的 Linux 支持进行了重命名(哈!)。 - 我主动从图表中借用了信息
Sipeed 的 Lichee Nano – 我用来配置软件的开发板。
我上传给那些好奇的人。
结论
在这个项目的开发过程中我学到了很多东西——这是我第一个使用回流焊炉的项目。 我还学习了如何为文档质量较差的组件查找资源。
我利用了我现有的嵌入式 Linux 经验和主板开发经验。 该项目并非没有缺陷,但它很好地展示了我的所有技能。
对于那些对使用嵌入式 Linux 的详细信息感兴趣的人,我建议阅读我的相关文章系列:
来源: habr.com