基于立创泰山派RK3566开发板打造智能小手机:从硬件选型到系统编译全流程实战
基于立创泰山派RK3566开发板打造智能小手机:从硬件选型到系统编译全流程实战
最近有不少朋友问我,能不能用一块开发板自己做个小手机玩玩?正好,我前段时间就用立创的泰山派开发板折腾了一个,从画板子、打外壳,到编译系统、驱动屏幕,整个流程都走了一遍。今天我就把这个项目的完整过程分享出来,给想自己动手的朋友们一个参考。整个过程就像搭积木,咱们一步步来。
1. 项目整体规划与核心硬件选型
做一个小手机,首先得想清楚它需要哪些部分。核心肯定是主板,我选的是立创的泰山派开发板,它用的是瑞芯微的RK3566芯片,性能足够跑一个轻量级的Linux系统。板子自带2GB DDR4内存和16GB eMMC存储,接口也很全,做手机项目的基础是够的。
除了主板,咱们还需要几样关键的东西:
- 屏幕:这是手机的“脸”,我选了一块6寸的MIPI接口屏幕,在二手平台花39块钱淘的,性价比很高。
- 供电系统:手机得能充电、能续航。我设计了一套从12V电源输入,到给主板和屏幕供电的完整方案。
- 外壳:把一堆电路板裸露在外可不行,得有个漂亮结实的外壳把它们保护起来,并且握持感要好。
- 连接线:屏幕、触摸板都需要通过FPC排线连接到主板上,这些线缆的选型和走线布局也得提前规划好。
这个项目最有意思的地方在于,大部分硬件设计都不是从零开始的。立创EDA开源硬件平台(LCEDA)上有很多热心大佬分享的优秀项目,咱们可以站在巨人的肩膀上,根据自己需求进行修改和整合,这能省下大量时间和试错成本。
2. 硬件设计与“白嫖”攻略
硬件部分是整个项目的基础,也是乐趣所在。咱们分模块来看。
2.1 屏幕转接板:让主板和屏幕“对话”
泰山派开发板有MIPI-DSI接口可以输出图像,但它的引脚排列和间距,和我们买来的6寸屏幕的FPC软排线接口对不上。这就需要一块“翻译官”——屏幕转接板。
我直接使用了LCEDA广场上风漠兮大佬开源的【泰山派6寸屏幕转接板】项目。这个设计考虑得很周到,增加了电平转换和阻抗匹配电路,能让信号传输更稳定。
注意:在“抄作业”的时候,我踩过一个坑。原设计用的一个FPC座子封装比较特殊,我想当然地把它换成了一个常见的型号。结果板子打回来完全对不上,只能重新画。所以,对于连接器这类关键器件,如果没有十足把握,最好沿用原设计。
为了方便大家也能“白嫖”到干净的PCB(不显示客编),我在设计时把客编字符藏到了FPC座子下面。你打板时只需要备注“指定位置增加客编,无需确认生产稿”就行。
2.2 供电系统:为小手机注入能量
手机需要稳定的电力。我的思路是,先用一个电源板将外部12V电源分配好,再通过一个PD快充模块,给开发板和可能的外设供电。
1. 电源分配板(供电板)这个想法源于群里一位大佬的启发。我找到了FrostAutumn大佬开源的【插拔服务器电源笼】项目,它的转接板正好有4路12V输出。我在此基础上做了简化,去掉了原板上用不到的接线端子和指示灯,把所有的输出接口都统一成了更粗壮的XT60接口,电流承载能力更强。
后来我觉得还不够用,又设计了“Plus版”,增加了更多DC输出口、电压表、指示灯,开关也换成了手感更好的自锁开关。为了让这块新板和原来的电源笼外壳匹配,我还专门用立创EDA专业版画了一个新的侧挡板。
2. PD快充模块我希望我的小手机能用Type-C口充电,并且支持PD快充协议。于是我在网上找了一个支持12V输入,能诱骗输出5V/9V/12V/20V PD电压的小模块。然后,我尝试着把它“抄”下来,画成自己的板子,目的是把整个项目的供电接口都统一成Type-C。
提示:这里我埋了个“雷”。我目前只成功实现了12V转普通5V,PD诱骗功能还没完全调通。欢迎有兴趣、有经验的朋友继续研究并分享出来。
2.3 结构外壳:给硬件一个“家”
外壳我做了两种方案:彩色亚克力拼接和金属CNC。CNC的图纸也是来自LCEDA广场上23studio大佬的开源项目,我稍微修改了一下就送去加工了。3D打印的尼龙夹层在组装时发现四周有点翘边,可能是打印材料冷却后有点收缩,下次设计时得把尺寸稍微放大0.1%来补偿。
屏幕总成外壳我用立创EDA专业版画了手机的主外壳。这是第一次用EDA软件画结构件,果然遇到了问题。第一版打印出来,发现没给触摸屏驱动IC留位置,也没考虑排线走线的空间,合盖都困难。
于是我又设计了内部的固定夹层。这个夹层非常必要:
- 固定作用:防止转接板在壳子里晃动。
- 绝缘作用:屏幕底壳是金属的,PCB也是金属的,直接接触可能短路,夹层可以隔开。
- 走线规划:可以把屏幕和触摸的排线整齐地收纳、弯折,藏在夹层与外壳的缝隙里。
设计夹层时要精确计算排线的长度和弯折半径。我的排线总长112mm,要考虑从接口到板子、板子长度、到壳边的距离,以及弯折需要的余量。经过反复比划和修改,第二版夹层终于能完美合盖了。
3. 软件开发环境搭建与系统编译
硬件准备就绪,接下来就要让板子“活”起来,这需要编译一个能运行在泰山派上的Linux系统。
3.1 搭建编译环境:准备一台“编译服务器”
编译Linux系统是个资源活,我强烈建议在虚拟机里进行,这样环境干净,也方便管理。
虚拟机与系统选择
- 虚拟机软件:推荐使用VMware Workstation 17 Pro。相比WSL2和VirtualBox,它在Linux下的兼容性和性能表现更稳定,出了问题网上解决方案也多。
- Ubuntu版本:这是个关键点!我一开始用了最新的Ubuntu 22.04,结果编译到最后报
mksquashfs错误,耽误了一天。最后换回Ubuntu 18.04.6,一次编译通过。所以,老老实实用18.04吧,这是经过大量项目验证的稳定版本。
安装必备工具系统装好后,需要安装一些编译和开发必备的工具:
# 1. 安装网络工具(如ifconfig) sudo apt install net-tools -y # 2. 安装vim编辑器(比自带的nano好用) sudo apt install vim -y # 3. 安装Python3并创建软链接(编译脚本需要) sudo apt install python3 -y sudo ln -s /usr/bin/python3 /usr/bin/python # 或者直接安装python-is-python3包 # sudo apt install python-is-python3 -y # 4. 安装Samba,方便和Windows主机共享文件 sudo apt install samba smbclient -y安装Samba后,还需要配置一下才能和Windows共享文件夹:
# 备份原始配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak # 创建共享目录 sudo mkdir -p /home/tspi sudo chmod 777 /home/tspi # 编辑Samba配置 sudo vim /etc/samba/smb.conf在配置文件末尾添加:
[tspi] path = /home/tspi browseable = yes writable = yes comment = smb tspi_linux_sdk test保存后,设置Samba用户密码并重启服务:
sudo smbpasswd -a tspi sudo service smbd restart之后在Windows的文件资源管理器地址栏输入\\你的虚拟机IP,就能看到并映射tspi这个共享文件夹了,传文件非常方便。
3.2 获取SDK与全编译
泰山派的Linux SDK可以从立创的官方文档站获取。编译过程请严格遵循官方文档的步骤。
重要提示:在编译过程中,当出现电源配置选项时,第4和第6项选择“1”,其余全部选择“2”。这个配置对应着开发板上的电源管理芯片。
加速编译技巧编译过程需要下载很多第三方源码包(存放在buildroot/dl目录),这些包很大且下载速度可能很慢。有个小技巧:你可以先通过其他方式(如官方提供的离线包或好的网络环境)提前下载好dl包,解压到SDK的对应目录,再进行编译,这样能节省好几个小时的下载时间。
我的编译环境是i9-10900K处理器,给虚拟机分配了24GB内存,在Ubuntu 18.04下进行全编译,大约只需要30分钟。
3.3 屏幕驱动移植:点亮你的屏幕
系统编译好了,但默认的配置不一定支持我们那块6寸屏。这就需要“移植”屏幕驱动。
幸运的是,风漠兮大佬已经把这块6寸屏的驱动补丁(Patch文件)开源了。我们只需要把补丁打到官方的Linux内核源码上就行。
打补丁步骤
- 将补丁文件
linux-kernel-STL6_0_1_2_A.patch下载到你的SDK同级目录。 - 进入SDK的Linux内核目录打补丁:
# 假设你的SDK目录名为 tspi_linux_sdk patch -p1 -N -d tspi_linux_sdk < linux-kernel-STL6_0_1_2_A.patch - 如果打补丁时提示“Hunk #1 FAILED at xxx (different line endings)”,这是因为Windows和Linux的换行符不同。需要安装转换工具并转换文件格式:
转换后重新打补丁即可。sudo apt install dos2unix dos2unix tspi_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi
触摸驱动配置屏幕能显示还不够,还得能触摸。我们的屏幕用的是GT970触摸芯片。
- 找到内核中的触摸配置文件:
/kernel/drivers/input/touchscreen/gt9xx/gt9xx_cfg.h。 - 将其中的
gtp_dat_9_7数组指向我们屏幕的配置文件:// 在gt9xx_cfg.h中找到类似下面的行,修改它 #include "GT970_Config_20240119_160927.cfg" - 确保
GT970_Config_20240119_160927.cfg这个配置文件存在于同一个目录下(补丁包里通常会提供)。
完成以上步骤后,重新编译内核,把生成的固件烧录到泰山派开发板上,接上我们的屏幕转接板和6寸屏,理论上就能看到画面并进行触控操作了。
整个项目从硬件设计、打板焊接、结构组装,到软件环境搭建、系统编译、驱动适配,是一个完整的闭环。过程中踩了不少坑,比如封装选错、外壳尺寸算错、Ubuntu版本不对等等,但每一个坑填平后,都是实实在在的经验。希望这篇详细的流程能帮你少走些弯路,享受自己动手打造智能设备的乐趣。剩下的,就是基于这个基础系统,去安装应用、开发功能,让你的小手机真正“智能”起来了。
