在全志 F1C100s、V3s、T113 板子上点亮 Linux 的实战指南:主线内核还是厂商 BSP、启动链、FEL 恢复、DRAM 与启动介质的坑、设备树和量产烧录。
F1C100s、V3s、T113 这几个系列,让小团队用很少的外围元件、两到四层板,就能得到一颗封装内带 DRAM、能跑 Linux 的处理器。对面板、控制器、网关、音视频设备这类产品,树莓派级别的模块太贵或太大,而单片机又跑不动软件,它们就是自然的选择。它们也不留情面:资料比主流厂商少,启动流程有自己的约定,一块"差不多能用"的板子,会以看起来随机的方式出问题。
下面是我们点亮这类板子的顺序,以及最容易耗掉时间的地方。
全志提供厂商 BSP(Tina Linux SDK 是其中一种形式),内核较老,带厂商驱动,显示、视频和部分外设里有闭源部分。主线 Linux 和 U-Boot 由 sunxi 社区维护,已经支持 F1C100s(suniv 系列)、V3s,以及较新的 T113 系列,外设支持在增加,但并不完整。
这一点要在第一次原理图评审之前定下来,因为它决定了你能依赖哪些外设。两种路线我们都交付过:全志 R528 控制板就是在厂商 Tina Linux 上,围绕它集成了网络服务、GPIO、UART 和 USB 驱动。
所有全志芯片的启动方式都一样:片上 Boot ROM 按固定顺序在支持的介质上找启动镜像,把一个很小的第一级加载器(SPL)装进片上内存,这个加载器初始化 DRAM 并加载 U-Boot,U-Boot 再加载内核。由此有三个后果。
这些芯片的 Boot ROM 里都有 FEL,一种 USB 启动模式。板子进入 FEL 后,sunxi-fel 工具可以通过 USB 加载并运行代码、读内存、烧写 SPI 存储,所以闪存写坏了也不等于板子变砖。请确保你的设计留出了入口:复位时可以拉动 FEL 选择脚,USB OTG 接口接到产线夹具能够接触的连接器上。多数工厂也是用这条路径烧录板子,一举两得。
能启动但一加载就崩溃的板子,通常是内存问题,而不是内核问题。在花几天时间调驱动之前,先在温度变化下、其他外设都在工作时,跑几个小时的内存测试。重点检查三件事:
SD 卡开发时方便,现场里不可靠。做产品时,小系统选 SPI NAND 或 NOR,芯片支持的话选 eMMC,并规划只读的根文件系统加单独的可写数据区。NAND 上要用适合裸闪存的文件系统,并预期要调整分区布局、坏块处理,以及 Boot ROM 期望的 ECC 设置。要专门测试掉电:在系统写数据时拔掉电源,确认之后还能启动,而且要反复做很多次。
从内核树里最接近的参考板开始,复制成你硬件的新文件,每次只改一件事:引脚复用、稳压器、显示时序、以太网 PHY 或 USB 角色。大多数点亮延误,都是没注意到的引脚冲突,或者因为没有任何节点声明使用而被内核关掉的稳压器。外设没出现时,按顺序检查:它的时钟和复位是否打开、引脚是否复用到它、供电是否打开、驱动是否真的匹配上了这个节点。
对这类小系统,Buildroot 通常大小合适:它用一份你放进版本管理的配置文件,构建出工具链、内核、U-Boot 和最小的用户空间。不要手工拼装镜像。产品要在一年后逐位复现,那时做出第一版镜像的人可能已经离开。
设计板子的同时就要设计工厂流程:板子怎样进入 FEL,或从已烧写的器件启动;镜像怎样写入并校验;夹具怎样记录结果;固件首次启动时跑哪些自检(内存、存储、网络、显示、传感器)。一块无法在夹具上三十秒内测完的板子,在工厂里花的钱会比工程上更多。
我们在全志及其他应用处理器上点亮 Linux,从启动链、设备树到驱动和可复现的根文件系统,也设计围绕它们的电路板。请看我们的 Linux BSP 与驱动服务,以及篇幅更长的通用点亮指南。
联系我们获取定制化解决方案和报价