宝子们,今天我发现了一个超牛的 DIY 项目,有人居然只用 3 个 8 引脚芯片,就拼出了一台能跑 Debian 系统的迷你电脑,关键是硬件原理图和固件代码都开源了,这不得狠狠分享一波!
打造极简电脑的奇思妙想(The Wonderful Idea of Building a Minimalist Computer)
在这个大模型、AI 芯片和多核服务器疯狂 “卷” 性能的时代,还有人在执着于探索最小系统的可能,真的太酷了!博主长期痴迷于用最少的组件组装能跑 Linux 的微型计算机,这次更是挑战升级,打算只用 3 个 8 引脚芯片,组装出一台迷你电脑套件。
现在的计算机又复杂又难搞,各种大型芯片密密麻麻,数据手册还不公开,功耗也大。现代操作系统对硬件要求也特别高,动不动就 GB 级的内存、TB 级的存储和随时在线的网络。但博主觉得,能运行 Debian Linux 系统,能用 vi 编辑器、gcc 编译器,能执行 make 命令,就已经很 “现代” 了。于是,他定下目标:至少 8MB 内存、1 MIPS 的处理能力、SD 卡存储、USB 接口用于串口通信。
硬件设计上,希望新手也能轻松焊接,整机小巧可爱还便宜。考虑到焊接难度,决定只用 8 引脚芯片,这可太有挑战性了!每个芯片最多 6 个引脚实现功能,还要设计成小巧的圆形电路板,顶部边缘设置 USB-C 接口,光想象一下就觉得好厉害!
In terms of hardware design, it is hoped that beginners can also easily weld. The entire machine is compact, cute and inexpensive. Considering the difficulty of soldering, it was decided to use only 8-pin chips, which is really challenging! Each chip can achieve its functions with a maximum of zdzz.douyindaitou.com 6 pins. Moreover, it is necessary to design a small and compact circular circuit board, and set a USB-C interface at the top edge. Just imagining it makes it seem really amazing!
零件选择大揭秘(The Great Secret of Component Selection)
选零件可太讲究了!支持 USB 通信的 8 引脚芯片少之又少,PL2303GL 算是个靠谱选择,它是 USB 转串口桥接芯片,不用额外元器件,还能输出 3.3V 稳压电压,很多操作系统都有驱动支持,不过在 macOS 上要从 App Store 安装驱动,也还算简单。还有个 “半个芯片”,就是 V - USB 项目能让 ATTINYx5 系列芯片实现 USB 通信,但只能低速,还占 CPU 资源,而且和 USB 规范有点冲突,不过主流系统不严格执行规则,勉强能用。
RAM 就选 SOIC - 8 封装的 PSRAM,虽然很多厂家说要出 16MB 的芯片,但一直没实现,8MB 的芯片倒是货源充足又便宜。
微控制器选了 STM32G0 系列的 STM32G031J4M6,虽然 STM 芯片的勘误手册不太靠谱,但这款芯片性能不错,32KB 闪存、8KB RAM,Cortex - M0 + 核心,主频官方标 64MHz,超频能到 80MHz 甚至 150MHz,虽然有风险,但也只能选它啦。
The microcontroller selected is the STM32G031J4M6 from the STM32G0 series. Although the errata manual of STM chips is not very reliable, this chip has good performance. It has 32KB of flash memory, 8KB of RAM, a Cortex-M0+ core, and the bdkm.douyindaitou.com official rated main frequency is 64MHz. It can be overclocked to 80MHz or even 150MHz. Although there are risks, it is the only choice.
硬件设计的巧妙布局(The Ingenious Layout of Hardware Design)
设计过程困难重重,但博主巧妙化解。UART 引脚不能和其他功能复用,一下子就占了 2 个引脚。SPI PSRAM 芯片支持 QSPI 模式能提速,但需要 6 个引脚,现在只剩 4 个,所以只能用双线 SPI 模式,还得软件模拟,不过速度勉强能接受。
SD 卡连接是个大难题,没引脚了!尝试了好多方法,最后发现把 SDIO 的 3 根信号线和 RAM 的引脚复用,能完美解决问题。虽然每次 SD 卡事务得一次性完成,不能多块读写,但在引脚紧张的情况下,已经很不错了。
引脚分配也很有讲究,RAM 和 SD 卡共享引脚,剩下的引脚 7 和 8,原本是 SWD 调试接口,现在用来做串行端口,通过一些设置和手工实现,完成了 UART 发送功能。
初次烧录也有办法,在板子上设计了 4 个可焊接跳线桥,通过跳线配置切换串口连接方式,开发模式下 bootloader 可用,正式模式下项目正常启动。而且项目有自定义 bootloader,烧录一次后就方便多啦。
软件部分也超有料(The Software Part Is Also Full of Surprises)
软件部分同样精彩!博主之前写了能启动 Linux 的 MIPS 模拟器,还写了 MIPS 到 ARMv6M 的 JIT 编译器,不过因为体积太大,这次暂时没用上。
引导加载程序(bootloader)也很重要,它支持 SD 卡、能识别 FAT 文件系统,检测到新版本就自动升级固件。8KB 的大小包含了 SDIO 驱动、FAT 文件系统驱动等好多功能,还能通过扫描 CLOCK 文件调整主程序运行频率,太贴心啦!
SD 卡分区和启动过程也有巧妙设计,借鉴了 PC 启动过程,不同分区有不同作用,FAT 分区既能被 PC 访问,又能被 Linux 系统挂载到 /boot 用于文件传输和更新,调整 CPU 频率也很方便。
性能到底咋样?(How About the Performance?)
STM32G031 官方标称最高运行频率 64MHz,但超频能力超强!通过调整 CPU 核心电压,能超到更高频率。实际测试发现,在 VOS1 模式下能稳定运行在 75MHz 左右,开启 VOS0 模式后,大多数芯片能稳定在 136MHz,个别体质好的能冲到 180MHz。虽然 Flash 访问速度跟不上,但设置好等待周期,整体还是很值得的。在 148MHz 主频下,模拟运行的 MIPS CPU 大致等效于 1.65MHz 的 MIPS R3000,能在大约一分钟内启动,vi、make、objdump 和 gcc 等工具都能正常使用,真的超厉害!
动手组装超简单!(It's Super Easy to Assemble by Yourself!)
想自己动手组装?安排!先去获取零件,可以自己买零件找打板厂打样焊接,也可以等博主找合作厂商出套件。
焊接分两步,先焊 SD 卡座、电容器、电阻器、主控芯片 STM32G031J6 和 USB 转串口芯片 PL2303GL。焊接的时候注意对准位置,主控芯片和 USB 转串口芯片的引脚标识要对齐。
二次焊接的时候,先给 STM32 刷入 bootloader,用 STM 提供的烧录工具,通过 USB - C 线连接电脑。烧录完成后,调整串口引脚配置,最后焊接 RAM 芯片,硬件部分就搞定啦!
最后,用磁盘镜像写入工具把系统镜像写入 SD 卡,再把主固件拷贝进 SD 卡的 FAT 分区(如果没重新编译固件,这步可跳过)。插入 SD 卡,连接 USB - C 数据线,打开串口终端软件,配置好参数,就能看到启动信息啦!第一次启动可能需要重新插拔 USB - C 接口写入熔丝,整个启动过程大约 1 分钟,登录后记得启用交换空间,就可以愉快地运行各种命令和程序啦!