当前位置: 首页 > 科技观察

真正的工程师:20块钱做一张可以运行Linux和Python的“名片”

时间:2023-03-19 10:02:25 科技观察

对于一个工程师,如何在名片上宣示自己的实力?在其上构建整台计算机可能是个好主意。近日,美国嵌入式系统工程师GeorgeHilliard的名片引起了大家的关注。他以自己的名片为“主板”,在狭小的空间内印制了计算机系统所需的所有部件,使其成为一台可以运行Linux的计算机。上面还有一个简化版的Python解释器。这个极客的想法在社交网络上引起了广泛的钦佩。他的文章出现在HackerNews上不到一天,点赞数就超过了2000。要做这样一张名片,除了要有足够的理论知识外,需要的零件可以在淘宝上买到(没错,这个美国小伙就是这样做的),一张名片的成本大概在20元左右。让我们看看他是怎么做到的。作为一名嵌入式系统工程师,GeorgeHilliard一直在追求完美的设计,其中之一就是最简单的基于Linux的计算机。他一直在大量的处理器型号中寻找最优解,终于发现了一片新大陆。“这些处理器便宜得要命,”他自言自语,很快就萌生了用它们制作一张可以运行Linux的名片的想法。此前,很多极客先锋在名片上都有自己的创意,包括U盘名片、带有闪光灯的名片,甚至还有带有无线电发射功能的名片。但是从来没有一张名片可以运行Linux系统。所以George自己建造了一个:这是成品的样子,一台完整的基于ARM的计算机,运行由Buildroot构建的定制Linux固件。那么如何让它运行呢?卡的左下角是一个USB口,插到电脑上6秒开机,显示为U盘,还有一个虚拟串口,可以用卡壳登录。闪存驱动器内有一个README文件、一份我的简历和一些照片。shell上有很多游戏,比如Unix上的经典fortune和rogue,2048,还有一个小的MicroPython解释器。这一切都是在一张容量仅为8MB的闪存卡上实现的。bootloader的大小为256KB,内核为1.6MB,整个根文件系统占用2.4MB。所以装个系统绰绰有余。它还包含一个可写的主目录,以防有人想在那里存放一些东西。最终,一张名片的成本保持在20元左右,这对于电脑来说似乎已经足够便宜了。名片设计是一项“技术活”。GeorgeHilliard亲自设计并制作了整张名片。虽然这是作者的工作,但要找到足够便宜的元器件还是很麻烦的。处理器选择是最重要的部分,它将控制成本并确保整个项目的可行性。经过一系列的考察,George选择了F1C100s,这是Allwinner出品的一款廉价芯片,在成本优化上下了功夫。这个芯片集成了RAM和CPU,至少在功能上满足要求。没想到George小哥在淘宝上买了F1C100s,其他元器件都是在LCSC上买的。George使用JLC制作PCB板,10份约56美元。George说他对JCL的板子印象深刻,不如OSHPark的板子好,但质量还是不错的,重点是价格。第一次出来的板子是磨砂黑,有点指纹的磁性。第一次做板子的时候也遇到了一点小麻烦:第一,USB口不够长,很难接更多的USB口;其次,闪存封装错误,George手动将引脚压到组件背面。在我们验证了每个部分之后,我们可以通过重新制作板来获得文章的强度。由于电路板尺寸较小,George决定使用廉价的回流焊机一次回流所有组件。由于他可以使用激光切割机,因此他可以激光切割压模压制的焊锡模板。模板工作得很好,芯片的0.2mm引脚需要特别注意保持清洁:激光功率和聚焦非常重要。其他空白PCB板是固定板以处理引脚的好夹具,固定可以用透明胶水完成。George使用焊料手动焊接组件,他确保电路板和组件处理无铅且无害,因此用作名片没有问题。上图显示的过程结果有点偏差,但焊料实际上很容易处理,而且组装起来也很容易。每个组件的组装时间约为10秒,因此作者尽量减少了组件数量。这样的名片多少钱?此前,乔治已经尽可能地降低了成本。他觉得现在已经够便宜了,就算把名片寄给别人也不会心疼。当然,只有重要的熟人才会收到这样的名片,毕竟所有的部件都得一个一个组装起来。以下所有费用均不考虑组装时间,动手能力强的读者可以考虑自己制作。当然,笔者也表示,还有很多成本是无法量化的,比如运费、试错等等。但是20块钱已经很低了,尤其是对于一块可以跑linux系统的板子来说。这其实反映了企业生产端设备的成本,元器件的成本比我们想象的要低很多。名片性能如何嗯,6秒启动超级精简的Linux系统。由于格式和成本等因素,名片上没有I/O、网络模块等占用资源比较大的程序。不管怎样,George已经将一些有趣的应用程序复制到固件映像中。USB我们可以通过USB做很多有趣的事情,但是作者有意将名片保持得很精简,我们可以在电脑上尝试一些事情。Linux允许我们使用一些像设备这样的小工具。作者还将芯片之前的一些开发工作转移到了名片上,因此可以拥有USBgadgetframework的全部功能。George决定模拟一个预先构建的闪存驱动器,并通过虚拟串行端口提供shell服务。以root用户登录shell后,我们就可以运行所有的模拟串口控制台了:rogue:经典Unix游戏《地牢爬虫》;2048:2048游戏主机版;fortune:各种名言,为其他应用节省空间,不包含完整的数据库;micropython:一个非常轻量级的Python解释器。在编译仿真闪存驱动器期间,构建工具可以生成一个小的FAT32映像并将其添加到UBI分区。如前所述,LinuxGadget子系统将其作为存储设备提供给PC。如果你想看看闪存驱动器是怎么回事,最简单的方法就是查看源代码,其中有一些作者的传记和介绍。优盘源码地址:https://github.com/thirtythreeforty/businesscard-linux/tree/master/package/businesscard-flashdrive/files制作这种名片需要什么资源?在制作主板名片的过程中,George使用了一颗F1C100s芯片,上面运行着Linux5.2的主流版本。此外,他还提供了一些关于F1C100s芯片的文档,供读者学习。源码George在GitHub上开源了Buildroot树,读者可以自行查看。Buildroot树包含生成NOR闪存映像的代码,然后通过处理器的USB下载模式安装该映像。此外,Buildroot树还包含游戏和其他有用的包,例如将财富软件添加到Buildroot。如果您想在项目中使用F1C100s芯片,这是一个很好的起点(如有任何问题,请随时联系)。Buildroot树项目地址:https://github.com/thirtythreeforty/businesscard-linux另外George重新安排了Icenowy发布的F1C100s的开发,可以运行Linux4.9版本。George的卡片运行在接近主流的5.2版本上,带有补丁和调试。Icenowy/linux项目地址:https://github.com/Icenowy/linux/tree/f1c100sthirtythreeforty/linux项目地址:https://github.com/thirtythreeforty/linux/tree/f1c100s-v5.2.4对于F1C100s芯片,George相信他拥有迄今为止最好的U-Boot配置编译端口,同样部分基于Icenowy的工作。U-Boo项目地址:https://github.com/thirtythreeforty/u-boot/tree/f1c100s-v2019.04F1C100sDocumentationGeorge找到了以下关于F1C100s的文档:AllwinnerF1C100sDatasheet(提供pinouts和generalinformation):https://www.thirtythreeforty.net/media/F1C100s_Datasheet_V1.0.pdf;AllwinnerF1C600ReferenceManual(提供F1C600的寄存器定义,是F1C100s改版的改进版,支持Linux):https://www.AllwinnerF1C600ReferenceManualthirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf;Sipeed的LicheeNano(乔治用来让他的软件顺利运行的开发板)的示意图:http://dl.sipeed.com/LICHEE/Nano/。最后,如下图所示,George上传了制作电路板名片的原理图。有网友评论电路板名片原理图:“让我难以置信的是,这么一块售价1.42美元(约合人民币10元)的芯片,几乎包含了驱动Linux所需的所有硬件:500MHzCPU、32MBSDRAM、2DGPU,SD/MMCsupport,USBcontroller。它们都被封装在一个10mm×10mm的微型芯片中。这让我很想进入嵌入式开发的坑。”项目感悟George说他从这个名片项目中学到了对很多人来说,这是他第一个使用回流焊接来回流元器件的项目。另外,对于一些缺乏文档的元器件,George不得不学会寻找必要的资源。在项目过程中,George借鉴了他在嵌入式Linux和设计PCB方面的经验。该项目并非完全没有缺陷,但它体现了他的能力。此外,乔治说他正在研究如何从头开始构建硬件和软件,用于小型、廉价的Linux系统,如电路板商业名片。