工程师George Hilliard 博客文章的翻译
可点击我是嵌入式系统工程师。 在闲暇时间,我经常寻找可以用于未来系统设计的东西,或者我感兴趣的东西。
这样的领域之一就是可以支持Linux的廉价计算机,而且越便宜越好。 因此,我把自己埋在鲜为人知的处理器的深坑里。
我以为:“这些处理器非常便宜,几乎可以免费分发。” 不久之后,我想到了以名片形式为Linux制作裸卡的想法。
一想到,我就决定做起来很酷。 我以前已经
看过 电子 名片 ,它们具有各种有趣的功能,例如模拟闪存卡,指示灯闪烁甚至是无线数据传输。 但是,我还没有看到支持Linux的名片。
所以我使自己成为一个。
这是产品的完整版本。 使用Buildroot创建的功能完善的ARM最低计算机,该计算机运行我的特殊版本的Linux。

在角落里,她有一个USB端口。 如果将其连接到计算机,它将在大约6秒钟内加载,可以看作是闪存卡和虚拟串行端口,通过它可以进入卡的外壳。 闪存驱动器上有一个README文件,我的简历副本和一些照片。 外壳中有几款游戏,是Unix上的经典游戏,例如Fortune和Rogue,还有2048游戏的小版本和MicroPython解释器。
所有这些都是通过8 MB的非常小的闪存芯片完成的。 引导加载程序的大小为256 KB,内核大小为1.6 MB,整个根文件系统为2.4 MB。 因此,虚拟闪存驱动器还有很多空间。 它也有一个可写的主目录-如果有人做某事要保存。 这也存储在闪存芯片上。
整个设备的成本不到3美元。 它足够便宜,可以分发。 如果您从我这里收到了这样的设备,则意味着我很可能想打动您。
设计组装
我自己设计和组装了所有东西。 这是我的工作,我很喜欢,大多数困难在于找到足够便宜的零件来满足这种爱好。
选择处理器是影响项目成本和可行性的最重要决定。 经过积极的研究,我选择了F1C100,这是一种鲜为人知的Allwinner处理器,并且进行了成本优化(即便宜)。 一种情况是RAM和CPU。 我在淘宝上购买了处理器。 在LCSC购买的所有其他组件。
我从JLC订购了板。 我花了8美元做了10份。 它们的质量令人印象深刻,尤其是价格方面。 不像OSHPark那样整洁,但是看起来仍然不错。
我把第一批磨砂黑了。 它们看起来很漂亮,但很容易弄脏。

第一批有两个问题。 首先,USB连接器的长度不足以牢固地插入任何USB端口。 其次,闪光轨迹制作不正确,但是我通过弯曲触点来绕开它。

检查完所有工作后,我订购了一批新的电路板。 您可以在本文开头看到其中一个的照片。
由于所有这些小部件的尺寸很小,我决定使用
便宜的炉子来进行回流焊。 我可以使用激光切割机,因此可以从薄膜上切割出焊接模板,以便在其上进行层压。 模具效果很好。 直径为0.2毫米的处理器触点孔需要特别注意以进行高质量制造-正确聚焦激光器并选择其功率至关重要。
其他板在粘贴时可以很好地固定板。我涂了焊膏并手动布置了组件。 我确保过程中的任何地方都不会使用铅-所有的电路板,组件和焊膏都
符合RoHS-这样,当我将铅分发给人们时,我不会被良心折磨。
我在这批产品上错过了一点,但是焊锡膏可以避免错误,一切都很好每个组件的定位大约需要10秒钟,因此我尝试使它们的数量最小。 有关设计地图的更多详细信息,请参见
我的其他
详细文章 。
材料清单和成本
我严格遵守预算。 而且名片原本是预定的-我不介意将其赠送! 当然,我不会将它分发给所有人,因为时间是花在制作每份副本上的,并且我的时间没有计入名片的成本中(这是免费的)。
自然,仍然存在一些难以计算的费用,例如交付费用(因为费用是在计划用于多个项目的组件之间分配的)。 但是,对于具有Linux支持的主板,这绝对是便宜的。 同样,这种细分可以很好地说明制造最低价格段设备的公司要花多少钱:您可以确定,公司的成本甚至比我便宜!
可能性
说什么 该地图在6秒内加载了裁剪严重的Linux。 由于尺寸和成本的原因,该卡没有I / O,网络支持或用于启动繁重程序的大量存储。 尽管如此,我还是设法将很多有趣的东西添加到固件映像中。
USB接口
使用USB,您可能会想到很多有趣的事情,但是我选择了最简单的选项,因此,如果人们决定尝试使用我的名片,则很有可能会工作。 Linux允许该卡在支持
Gadget Framework的情况下充当“设备”。 我从以前的项目(包括该处理器)中提取了一些驱动程序,因此可以访问USB小工具框架的所有功能。 我决定模拟一个预先生成的闪存驱动器,并通过虚拟串行端口访问该外壳。
壳牌
以root用户身份登录后,可以在串行控制台上运行以下程序:
- 流氓:经典的Unix地牢冒险游戏;
- 2048:在控制台模式下以2048进行的简单游戏;
- 财富:各种悲观谚语的结论。 我决定不将整个报价单包括在此处,以留出其他功能的空间。
- micropython :一个非常小的Python解释器。
闪存驱动器仿真
在编译时,构建工具会生成一个小的FAT32映像,并将其添加为UBI分区之一。 Linux小工具子系统将其PC展示为存储设备。
如果您有兴趣查看闪存驱动器上显示的内容,那么最简单的方法是熟悉
源代码 。 也有一些照片和我的简历。
资源资源
源代码
我的Buildroot树已上传到
GitHub-三十三十四/ businesscard-linux 。 有一个用于生成NOR闪存映像的代码,该代码是使用处理器的USB下载模式设置的。 它也包含我在Buildroot中工作后填充的游戏和其他程序的所有程序包定义。 如果要在项目中使用F1C100,这将是一个很好的起点(请随时
向我提问 )。
我使用Icenowy为F1C100使用了
执行精美的 Linux v4.9
项目 ,并做了一些重做。 我的卡几乎可以使用标准v5.2。 她躺在
GitHub-三十三十三/ linux上 。
我认为,今天我拥有世界上最适合F1C100的U-Boot端口,它部分基于Icenowy的工作(没想到,要使U-Boot正常工作,因为事实证明这是一件非常不愉快的任务)。 您还可以使用
GitHub-三十三十四/ u-boot 。
F1C100s的文档
我发现了F1C100的稀缺文档,并将其发布在这里:
出于好奇,我上传了
项目大纲 。

结论
在这个项目的开发过程中,我学到了很多东西-这是我的第一个项目,在这里我使用了回流焊炉。 我还学习了如何查找文档不足的组件资源。
我使用了嵌入式Linux的经验以及开发板的经验。 该项目并非没有缺陷,但是很好地展示了我的所有技能。
对于那些对使用嵌入式Linux的细节感兴趣的人,我建议阅读我有关这方面的系列文章:
Mastering Embedded Linux 。 在这里,我详细讨论了如何为小型廉价的Linux系统从头开始创建软件和硬件,类似于我的这张名片。