欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

我的名片能跑 Linux:一块3美元不到的 ARM 名片电脑

1970/1/1嵌入式系统

本文记录了作者如何设计并制作一张成本不到 3 美元的 Linux 名片,展示了嵌入式系统与极客创意的碰撞。

作为一名嵌入式系统工程师,我花了不少业余时间寻找可用于未来设计或纯粹吸引我的元器件。其中一类就是能运行 Linux 的廉价处理器——越便宜越好。于是,我踏入了晦涩处理器的深坑。我心想:“这些处理器已经便宜到几乎可以免费送人了。”后来,我冒出一个点子:做一块裸机 Linux 板卡,外形做成名片大小。想法一出现,我就觉得这很酷。之前我见过各种电子名片,有的能模拟 USB 闪存盘,有的带 LED 闪烁,有的甚至带无线收发器,但从未见过有人把 Linux 跑在名片上。于是,我决定自己做一个。

下面就是最终成品。它是一台完整的、极简的 ARM 计算机,运行着我用 Buildroot 定制的 Linux 固件。名片角落有一个 USB 端口,插到电脑上后,约 6 秒即可启动,并作为一个 USB 闪存盘和一个虚拟串口出现,你可以通过串口登录到名片上的 shell。闪存盘里放了 README 文件、我的简历副本和一些摄影作品。shell 环境里有几个小游戏和 Unix 经典工具,比如 fortune、rogue、一个简单的 2048,还有一个精简版 MicroPython 解释器。所有这些都塞进了一块 8MB 的闪存芯片里:引导加载程序占 256KB,内核 1.6MB,整个根文件系统 2.4MB——所以还有充足空间来模拟闪存盘。另外,我还配置了一个可写的 home 目录,万一有人想存点东西也行。这部分同样保存在闪存芯片上,并通过 UBI 做好了磨损均衡。整套硬件总成本低于 3 美元,便宜到可以随手送人。如果你从我这里拿到一张,估计是我在设法让你印象深刻。

设计与组装

整个设计、组装流程完全是我自己完成的。这本来就是我日常工作的一部分,而且我很享受这个过程。真正的挑战在于找到一些对爱好者也足够便宜的元器件。处理器选择是控制成本、确保项目可行的最关键决策。经过大量调研,我选了 F1C100s——Allwinner 出品的一款相当冷门、以成本优化(说白了就是贼便宜)为卖点的芯片,它把 RAM 和 CPU 封装在一块。我是从淘宝上买的这批芯片。其他杂项元件都从 LCSC 采购,PCB 则由 JLC 代工。10 块板一共花了 8 美元。我对 JLC 的板子印象很深,虽然不如 OSHPark 的精致,但做工很棒,尤其考虑到这个价格。

首版板子用了哑光黑,看起来还行,但非常容易沾指纹。第一版还有两个问题:第一,USB 端口不够长,很多电脑上接触不良;第二,闪存封装搞错了,我只好手动把引脚弯到芯片下面来凑合(我老婆说这是“死蜘蛛”式操作)。其他部分验证无误后,我重新投板,最终得到文章开头那张版本。

因为元件都很小,我果断决定用一台便宜的回流焊炉来做回流焊。我有激光切割机的使用权,就用层压板自己切了一张锡膏钢网。钢网效果还不错。处理器引脚那种 0.2mm 的开孔需要特别小心,激光功率和焦点都得调好才能切干净。我还会用空白 PCB 做夹具,方便刷锡膏。锡膏和元件的摆放都是手工完成的。为了确保无铅工艺,我特意选了 RoHS 合规的板子、元件和锡膏——这样送人时我也不会有心理负担。有一次印刷位置偏了,但锡膏还算宽容,照样焊好了。每个元件手工放置大约需要 10 秒,所以我把元件数量尽量减到最少。

关于设计和软件的更多内容,可以参考我的详细写作笔记。

物料清单与成本

我严格控制了整体成本。目前算下来,它便宜到我觉得送人都完全没问题——正如设计初衷。但我也不是见人就送,毕竟每个卡片的组装需要时间,而人工成本我还没算进去(我的时间等于白送)。

元件名 单价
F1C100s $1.42
PCB $0.80
8MB 闪存 $0.17
其余元件 $0.49
总价 $2.88

当然,还有一些不好量化的费用,比如运费(分摊到多个项目里了)。但无论如何,这是一块相当便宜的 Linux 板卡。这也为估算厂商生产低端设备的成本提供了一个起点:你可以确信,他们拿货价只会比我更低。

功能详解

这块名片能在约 6 秒内启动一个极度精简的 Linux。由于外形和成本限制,它没有 I/O、网络,也没有足够的存储来跑重量级应用。即便如此,我还是把不少有趣的东西塞进了固件镜像里。

USB

关于 USB 我可以做很多事情,但我选择保持简单,好让大多数人在电脑上插上就能顺利使用。Linux 的 Gadget Framework 让我能模拟成各种“设备”。因为我把前辈们针对这个处理器移植过的驱动做了 forward-port,所以我几乎可以获得整个 USB gadget 框架的全部功能。最后我决定模拟一个预先生成好的闪存盘,并通过虚拟串口提供一个 shell。

Shell 环境

登录(唯一用户 root)后,可以从模拟串口运行以下程序:

  • rogue:经典 Unix 地牢爬行类游戏。
  • 2048:一个简单的命令行版 2048。
  • fortune:一些精炼的格言。为了给其他功能腾空间,我没放入完整的名言库。
  • micropython:一个非常小巧的 Python 解释器。

模拟闪存盘

编译过程中,构建工具会生成一个小的 FAT32 镜像,并把它作为 UBI 分区之一加进来。正如之前所说,Linux gadget 子系统会把它作为大容量存储设备呈现给 PC。想看看这个闪存盘里具体有什么,最直接的办法是去查看源代码。那里有部分我的摄影作品和简历。

开源资源

如果你想要我的 Buildroot 仓库,它已经在 GitHub 开源:thirtythreeforty/businesscard-linux。里面包含生成 NOR 闪存镜像所需的代码,编译好的镜像通过处理器的 USB 下载模式烧录。仓库里还有我为那些游戏和 fortune 等工具写的 Buildroot 包定义。如果你打算在项目里用 F1C100s,这会是个很好的起点(有问题欢迎随时联系我)。

我把 Icenowy 针对 F1C100s 开发的出色工作 rebase 到了 Linux v4.9 上。而目前我正在用的版本是接近主线内核的 v5.2,并应用了我自己 rebase 和调试过的补丁,代码托管在 thirtythreeforty/linux。此外,我认为我现在持有的是世界上移植得最好的 F1C100s 版 U-Boot(同样基于 Icenowy 的部分工作)。坦白说,要把 U-Boot 完全跑通相当折磨人。我正努力把代码提交到上游,在此期间,它也能在 GitHub 找到:thirtythreeforty/u-boot。

相关文档

F1C100s 本身公开资料非常稀少,我在这里分享一些找到的稀疏文档:

  • Allwinner F1C100s Datasheet(提供引脚图和常规信息)
  • Allwinner F1C600 Reference Manual(提供寄存器定义,F1C600 其实就是 F1C100s 换标后的版本,只不过是“能跑 Linux”的版本)

我大量参考了 Sipeed 的 Lichee Nano 开发板的原理图,并基于它来实现整个软件栈。你还可以在我的 KiCAD 零件库里找到 F1C100s 的原理图符号和 PCB 封装。


原文链接:https://www.thirtythreeforty.net/posts/2019/12/my-business-card-runs-linux/

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消