Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4
2243 字
11 分钟
小白自制Linux开发板(一)—— 原理图设计与PCB绘制

本文转载改写自博客园 淡墨青云 的系列文章《小白自制Linux开发板》,原文链接:https://www.cnblogs.com/twzy/p/14714651.html

前言#

说实话,我一直觉得能自己从零做出一块能跑Linux的开发板是一件很酷的事情。虽然之前玩过树莓派、ESP8266之类的开发板,但那些终究是别人设计好的成品,我只是个”使用者”而非”创造者”。

真正让我下定决心动手的,是看了两位大佬的作品:

看完之后心里直痒痒,于是给自己定了个小目标:

设计一个没啥实际作用,但能成功运行Linux的小板子。

大概长这样:

目标板子效果图

目标板子效果图


一、工具与芯片选型#

开发工具#

整个硬件设计部分全部使用 立创EDA 完成。立创EDA是国产的在线电路设计工具,对于初学者来说非常友好,而且和嘉立创的PCB打样服务无缝衔接,下单极其方便。

核心芯片#

芯片型号说明
主控SoCF1C100s全志基于ARM的小型SoC,自带32MB内存,可运行Linux
USB转串口CH340E体积小、外围电路少,用于串口调试通信

关于F1C100s:

这颗芯片可以说是”穷人版Linux SoC”的典型代表。它的升级版F1C200s自带64MB内存。最经典的基于该芯片的开发板就是荔枝派(LicheePi)

芯片本身非常便宜(虽然最近受芯片涨价影响有所波动),而且可以运行完整的Linux系统,性价比极高。

参考资料#

原理图设计先后参考了以下开源项目:


二、原理图设计#

2.1 电源管理#

电源部分使用USB供电,输入电压为5V。这里供电和串口电路共用同一个USB端口。

通过查阅F1C100s的数据手册:

F1C100s数据手册中的电源要求

综合分析后,可以把电源分为4类:

电源域电压说明
Vdd-Core1.1V核心电压
Vcc-Dram2.5VDRAM供电
AVCC3.0V模拟电源
UVCC/VCC-IO/TV-AVCC/TTL3.3VIO及外设电压

电源分类示意图

DC-DC降压电路(1.1V / 2.5V / 3.3V):

主要使用 SY8088AAC 同步降压DC-DC稳压器,SOT23-5封装,通过外部电阻调整输出电压。公式为:

Vout=0.6×(1+RaRb)V_{out} = 0.6 \times \left(1 + \frac{R_a}{R_b}\right)

模拟电源AVCC(3.0V):

使用 XC6206P302MR(SOT23封装),输入5V,输出3.0V。

[!tip] 为什么要单独给AVCC供电? AVCC是模拟电源电压,为了避免引入电源干扰,通常需要把模拟电路与数字电路分开隔离。虽然这个解释可能不够严谨,但实际设计中确实是这么做的。

完整的电源部分原理图如下:

电源管理原理图

电压输入输出端都使用了滤波电容进行处理,还需要接入 2.2μH的功率电感

[!warning] 功率电感的选择 注意一定要用功率电感,电流要求至少达到1A以上。本板使用0805封装的功率电感,建议最好使用CD32类型的绕线功率电感。


2.2 核心电路#

核心部分的原理图如下,因为本次设计主要以验证为主,所以没有做太多外设电路。

F1C100s核心原理图

除了常规的核心、外围、DRAM引脚,核心部分还引出了以下模块:

1. TF卡接口 —— 作为唯一的系统启动源,这是必须的

2. 晶振 —— 使用24MHz的有源晶振,搭配两个15pF的负载电容

3. 串口调试 —— 板子与外界唯一交互的通道(后来在这里给自己挖了个坑)

4. LED灯 —— 唯一的外设,也是学习驱动开发的第一步

5. 外围引脚 —— dram_vrefVar1Var2 这些是必须接的外围电路,具体作用……我也不太清楚 >_>

6. USB OTG —— 可通过此接口为板载Flash下载程序,但本板没有做Flash,目前唯一用途是验证FEL模式是否可用

7. 复位按钮

挖坑记:LED灯的接线错误#

这里记录一个非常”奇妙”的错误。一直以来以为发光二极管也是普通二极管,于是有了下面的设计:

错误的LED接线方式

板子做出来后感觉没问题,但串口死活不显示数据。在众多大佬的帮助下,才发现这个”脑残”的接线方法——竟然把发光二极管当普通二极管用了!

最终的解决方案:把两个发光二极管的位置换成了两个 0欧电阻,一下子就成功调通了。

[!caution] 经验教训 发光二极管和普通二极管的特性完全不同!发光二极管的正向压降远高于普通二极管(通常在1.8V-3.3V),用在电源通路上会导致供电不足,整个系统无法正常工作。

滤波电容#

对于芯片电源输入端的滤波电容:

滤波电容接法

简单来说,供电端的电压因为电路设计或外界干扰,并不是完美的直流电压,总会存在高频或低频的噪声。使用小容量的电容可以滤除这些干扰。

常用的容值:10μF1μF100nF


2.3 串口通信电路#

在核心原理图中引出了串口线路,串口接口如下:

串口接口定义

然而,翻遍你的超薄笔记本,大概率找不到这个接口。偶尔在一些老笔记本上能看到类似的——对不起,那大概率是VGA显示接口。

所以我们需要一个 USB转串口芯片,这里选用 CH340E,因为它体积小、接线方便。

CH340E串口电路原理图

[!info] 电源与串口共用USB 这个板子的电源和TTL串口共用一套USB接口设计,也就是说USB线插上就可以启动小板,同时开始串口调试。

原理图中的U5是一个自恢复保险丝

[!warning] CH340E的V3引脚 根据CH340E官方原理图,当VCC接入5V时,V3需要接一个100nF电容。但此处V3直接接入5V也可以工作。实际使用时最好不要这样做


2.4 TF卡接口#

和电脑在BIOS选择启动方式一样,F1C100s支持多种系统加载机制,比如通过SPI接口加载Flash芯片中的镜像,或者通过TF卡加载镜像。

这里使用TF卡作为启动源,原因有两个:

  1. TF卡容量可以自己控制
  2. 系统烧写调试方便

TF卡接口原理图

这部分电路相对简单。


2.5 USB OTG与LED灯#

OTG与LED灯电路

USB OTG接口用于下载程序到板载Flash(本板未做Flash,暂时用于FEL验证)。LED灯作为唯一的外设,是驱动开发的第一步。


三、PCB绘制#

PCB尺寸为 42mm × 29mm,可以说非常小了。为了便于手工焊接,所有容阻元件都使用 0805封装

PCB布局图

走线规则:

  • 电源走线:14mil
  • 信号线:8mil

四、PCB焊接#

焊接PCB是一项手艺活,尤其是 QFN封装的F1C100s 更是难到令人发指。还好借助焊台和热风枪,最终完成了焊接。放大镜和洗板水是必不可少的工具。

因为板子经常需要在手上把玩(盘PCB),所以选择了 无铅锡浆 进行焊接。

焊接完成的效果:

焊接完成的PCB


五、成功运行Linux#

因为还没开始着手做Linux移植,暂时使用 LicheePi 的镜像 进行验证。

成功启动的截图:

Linux成功启动

看到串口终端输出Linux启动信息的那一刻,真的有一种”创造生命”的感觉。


六、后记#

世界上从来没有轻易的成功,对于初次玩PCB的小白更是如此。这块小板能成功运行,经历了 三四个月、五六次打板 才最终成功。

以下是早期的”趟雷”场景和”先烈”们(右下角为最终成功的小板):

历次失败的PCB

失败的板子1

失败的板子2

最终成功的小板


总结#

这篇文章记录了从零开始设计一块Linux开发板的全过程。虽然过程中踩了不少坑(尤其是LED那个经典错误),但最终成功跑起了Linux,那种成就感是无法形容的。

下一节计划开始做 Linux系统的移植,从U-Boot编译到内核配置,敬请期待。

[!note] 参考资料

  • 原文作者:淡墨青云(冯天文)
  • F1C100s 数据手册
  • CH340E 数据手册
  • 荔枝派 Nano 开源资料
小白自制Linux开发板(一)—— 原理图设计与PCB绘制
https://qiandaos.top/posts/diy-linux-board/
作者
千岛寒流
发布于
2025-05-12
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00