跳到主要内容

检查 Avaota A1 板载设备

主线系统已经从 eMMC 进入登录终端,接下来不能只看“有没有设备节点”,还要判断驱动已经工作到哪一步。本页的命令与输出均来自 Avaota A1 实物,使用 CH340 串口在 115200 8N1 下记录。

实测环境

Linux 7.2.0-avaota-a1-mainline、Buildroot 2026.05.1、4 GiB 内存、64 GB eMMC。页面只把串口中实际观察到的结果写成结论;需要插入网线、USB 设备或显示器的项目会保留到对应的实物测试。

下载本页整理后的串口检查记录

从设备树检查到实物功能

驱动创建接口只是中间结果。以网口为例,设备树节点被内核读取后,驱动还要取得时钟、复位、引脚和 PHY,最后才会出现可以建立链路的网络接口。

因此,eth0/dev/dri/card0/dev/rtc0 出现时,可以确认内核已经走到“创建设备接口”;能否通信、显示或保持时间,还要继续观察实物现象。

确认正在运行的系统

登录串口后先读取内核身份:

uname -a

实机输出如下:

Linux avaota-a1 7.2.0-avaota-a1-mainline #3 SMP PREEMPT \
Wed Aug 26 07:40:32 EDT 2026 aarch64 GNU/Linux

avaota-a1 是主机名,7.2.0-avaota-a1-mainline 是正在运行的内核版本,aarch64 表明当前进入了 64 位 Linux 用户空间。后面的设备记录都应与这三个身份字段一起保存,避免混用不同构建的结果。

检查内存容量与 eMMC 挂载

Linux 可用内存

free -h
              total        used        free      shared  buff/cache   available
Mem: 3.8G 52.4M 3.7G 200.0K 35.3M 3.7G
Swap: 0 0 0

SPL 启动阶段识别到 4096 MiB DRAM,Linux 中显示约 3.8 GiB 可用内存。两者并不矛盾:内核显示的是扣除固件、内核和保留区域后可交给系统使用的容量。

eMMC 分区与根文件系统

当前 Buildroot 使用 BusyBox,直接读取 /proc/partitions 比桌面发行版常见的 lsblk -o ... 更可靠:

cat /proc/partitions
mount | grep ' on / '
major minor  #blocks  name
179 0 61071360 mmcblk1
179 1 245760 mmcblk1p1
179 2 524288 mmcblk1p2
179 32 4096 mmcblk1boot0
179 64 4096 mmcblk1boot1

/dev/root on / type ext4 (rw,relatime)

mmcblk1 是 58.2 GiB eMMC 的 User Area,p1p2 是镜像建立的两个分区;mmcblk1boot0mmcblk1boot1 是 eMMC 自带的硬件启动分区,不是分区表中的第三、第四个分区。

再从内核日志查看控制器识别与根文件系统挂载:

dmesg | grep -E 'mmcblk1|mmc1:|EXT4-fs'
[    2.222131] mmc1: new high speed DDR MMC card at address 0001
[ 2.228778] mmcblk1: mmc1:0001 CJNB4R 58.2 GiB
[ 2.235834] mmcblk1: p1 p2
[ 2.239516] mmcblk1boot0: mmc1:0001 CJNB4R 4.00 MiB
[ 2.247122] mmcblk1boot1: mmc1:0001 CJNB4R 4.00 MiB
[ 2.324013] EXT4-fs (mmcblk1p2): recovery complete
[ 2.329942] EXT4-fs (mmcblk1p2): mounted filesystem r/w with ordered data mode

这组记录同时证明了三件事:eMMC 控制器完成初始化、User Area 的两个分区被识别、第二分区上的 ext4 已经以读写方式挂载。只看到 mmcblk1 还不足以证明根文件系统已经可用。

网络接口已经创建,链路还要实测

BusyBox 的 ip 不支持 -br,这里使用实际可执行的命令:

ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 12:10:9c:6a:fd:c9 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 02:10:9c:6a:fd:c9 brd ff:ff:ff:ff:ff:ff
4: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 02:00:00:52:70:01 brd ff:ff:ff:ff:ff:ff

eth0eth1usb0 已经由内核注册为网络设备,但三个接口都没有 UPLOWER_UP 标志。这只能证明网络设备对象已经创建,不能证明外部 PHY 已建立链路。

启动脚本的真实输出也对应这一状态:

Starting network: Waiting for interface eth0,eth1 to appear............... timeout!
run-parts: /etc/network/if-pre-up.d/wait_iface: exit status 1
FAIL

插入网线后,应继续执行 ip link set eth0 up、查看 PHY 日志并进行局域网通信测试。只有出现 LOWER_UP、取得地址并能与另一台主机通信,才能把板载以太网记为通过。

USB 主控制器已经枚举

在没有插入外部 USB 设备时执行:

lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

四个 root hub 说明 USB Host 控制器已经注册;因为记录时没有插入 U 盘、键盘或其他设备,这段输出不包含外设枚举结果。下一步插入一个已知正常的 USB 设备,再比较 lsusb 前后的新增行,并用 dmesg 确认它绑定到哪个驱动。

显示、音频与 RTC 的接口状态

以下命令只读取系统已经创建的接口:

ls -l /dev/dri
cat /proc/asound/cards
ls -l /dev/rtc*
cat /sys/class/rtc/rtc0/name
hwclock -r

串口记录中的关键结果为:

/dev/dri/card0
/dev/dri/card1
/dev/dri/renderD128
/dev/dri/renderD129

cat: can't open '/proc/asound/cards': No such file or directory

/dev/rtc -> rtc0
/dev/rtc0
sun6i-rtc 7090000.rtc
Fri Jan 2 01:09:40 1970 0.000000 seconds

DRM 节点存在,说明显示相关驱动已经创建字符设备;记录中没有 DRM connector,也没有显示器画面,因此不能据此宣布 HDMI 已通过。音频子系统没有建立 /proc/asound/cards,说明当前内核还没有可供 ALSA 使用的声卡。RTC 驱动和 /dev/rtc0 已出现,但时间仍为 1970 年;设置时间、断电再上电并重新读取,才能验证 RTC 是否能够保持时间。

汇总板载设备检查结果

检查对象串口中观察到的结果当前能够确认还需要的实物测试
内存free -h 显示 3.8 GiB 可用4 GiB DRAM 已进入 Linux 内存管理长时间压力与稳定性
eMMC58.2 GiB、p1/p2、ext4 根分区已挂载控制器、分区和根文件系统可用多次断电冷启动
以太网eth0eth1 已创建但未 UP网络设备已注册PHY 链路、DHCP/静态地址、通信
USB Host四个 root hub主控制器已注册插入设备后的枚举与传输
DRMcard0card1 和两个 render 节点DRM 字符设备已创建接口状态与实际画面
音频没有 /proc/asound/cards当前没有可用 ALSA 声卡完成驱动后播放与录音
RTCsun6i-rtc/dev/rtc0RTC 驱动已绑定校时后的断电保持

这张表不是功能清单,而是继续移植时的定位入口。设备树节点、驱动绑定、Linux 接口和外设现象必须逐层对应;缺在哪一层,就回到那一层检查,不能用一个设备节点替代完整验证。