4. 开发环境搭建

全志T507的BSP开发属于典型的“宿主机—目标机”模式:Ubuntu主机负责代码编辑、交叉编译与镜像打包,T507开发板负责运行与验证。环境搭建是否规范,直接决定后续内核编译、驱动调试与量产烧录能否顺利进行。本章围绕主机配置、交叉编译工具链、串口与ADB调试、TF卡与烧录工具四条主线展开,形成一条从“装好环境”到“点亮板子”的完整链路。

一、核心原理:为什么需要交叉编译环境

T507采用ARM Cortex-A53架构,而Ubuntu主机通常是x86_64架构。宿主机上的gcc只能生成x86指令,无法在T507上运行。因此必须使用交叉编译工具链,让x86主机生成ARM64可执行文件。工具链本质是一组“前缀不同”的编译器、链接器与库集合,例如aarch64-linux-gnu-gcc。BSP中的U-Boot、Kernel、根文件系统都依赖同一套工具链,版本不一致会导致链接错误或运行异常。

环境搭建的核心目标:主机可编译、板子可启动、调试可连接、镜像可烧录。四者缺一不可,且顺序不能颠倒。

二、Ubuntu主机配置与依赖安装

推荐使用Ubuntu 20.04 LTS或22.04 LTS,磁盘预留至少200GB,内存建议16GB以上。首先更新源并安装BSP编译所需的基础依赖:

sudo apt update
sudo apt install -y build-essential git bc bison flex libssl-dev \
  libncurses5-dev libncursesw5-dev python3 python3-pip \
  device-tree-compiler u-boot-tools android-tools-adb \
  android-tools-fastboot minicom picocom unzip dosfstools \
  mtools parted kpartx

# 将当前用户加入dialout组,避免串口权限问题
sudo usermod -aG dialout $USER
# 重新登录后生效

若使用ADB调试,还需配置udev规则,否则普通用户无法识别设备:

sudo tee /etc/udev/rules.d/51-android.rules <<'EOF'
SUBSYSTEM=="usb", ATTR{idVendor}=="1f3a", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger

三、交叉编译工具链安装与验证

全志T507官方SDK通常自带预编译工具链,位于lichee/out/sun50iw9p1/linux/common/buildroot/host/opt/ext-toolchain/或prebuilt/linux-x86/toolchain/目录。推荐优先使用SDK自带工具链,避免版本错配。若需独立安装,可下载Linaro或ARM官方aarch64工具链:

# 以SDK自带工具链为例,加入环境变量
export PATH=$PATH:/home/user/t507_sdk/prebuilt/linux-x86/toolchain/gcc-linaro-7.4.1/bin
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64

# 验证
aarch64-linux-gnu-gcc -v
# 应输出gcc version 7.4.1等版本信息
建议将上述export写入~/.bashrc,并在每次编译前执行source ~/.bashrc,避免“换终端后工具链找不到”的常见问题。

四、串口与ADB调试

串口是T507最可靠的调试通道,用于查看U-Boot日志、内核启动信息与登录控制台。使用USB转TTL模块连接开发板DEBUG口,注意TX/RX交叉、GND共地,电平为3.3V。常用参数为115200-8-N-1。连接命令如下:

# 查看串口设备
ls /dev/ttyUSB*
# 使用minicom连接
sudo minicom -D /dev/ttyUSB0 -b 115200
# 或使用picocom
sudo picocom -b 115200 /dev/ttyUSB0

ADB用于系统启动后的文件传输、日志抓取与shell登录。T507 Android/Linux系统需在配置中使能ADB功能,并通过USB OTG口连接主机。常用命令:

adb devices          # 查看设备是否识别
adb shell            # 进入目标机shell
adb push app /tmp/   # 推送文件
adb pull /var/log/messages ./  # 拉取日志
adb logcat           # Android日志

五、TF卡制作与烧录工具使用

T507支持TF卡启动与PhoenixSuit/USB烧录两种方式。TF卡启动适合快速验证,制作步骤如下:

  1. 使用fdisk或parted对TF卡分区,通常分为boot与rootfs两个分区。
  2. 将U-Boot、Kernel、dtb写入boot分区,根文件系统解压到rootfs分区。
  3. 插入开发板,设置启动模式为TF卡启动,上电观察串口输出。
# 查看TF卡设备名,务必确认不要写错磁盘
lsblk
# 假设为/dev/sdb
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
sudo mkfs.vfat /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
sudo mount /dev/sdb1 /mnt/boot
sudo cp Image sun50iw9p1.dtb /mnt/boot/
sudo umount /mnt/boot

PhoenixSuit是Windows下的USB烧录工具,适合量产与救砖。使用时需安装驱动,选择固件包,按住FEL键上电进入FEL模式,点击“一键刷机”。Linux下可使用sunxi-fel或LiveSuit替代。

六、环境搭建流程总览

T507 BSP 开发环境搭建链路 Ubuntu 主机配置 20.04 / 22.04 LTS 依赖包 + dialout 权限 udev 规则 交叉编译工具链 aarch64-linux-gnu- ARCH=arm64 gcc -v 验证 串口 / ADB 调试 ttyUSB0 115200-8-N-1 adb devices / shell logcat / push / pull TF卡 / 烧录 dd + mkfs PhoenixSuit FEL 模式 全志 T507 开发板 ARM Cortex-A53 ×4 | 串口控制台 | USB OTG | TF 卡槽 U-Boot → Kernel → Rootfs 验证结果 串口有启动日志 · adb devices 可见设备 · 系统正常登录

七、常见误区与复盘

误区现象正确做法
工具链版本混用内核编译报错或运行崩溃统一使用SDK自带工具链,固定PATH
串口TX/RX未交叉无任何输出TX接RX、RX接TX、GND共地
未加dialout组Permission deniedusermod -aG dialout,重新登录
dd写错磁盘主机数据被覆盖先用lsblk确认设备名,再执行dd
ADB未配udevadb devices为空添加51-android.rules并重载
烧录前务必确认TF卡或USB设备名,dd与mkfs具有破坏性,写错目标盘会导致主机数据丢失。建议在虚拟机中操作,并提前备份重要数据。

完成本章环境搭建后,你应当能够在Ubuntu主机上成功编译T507的U-Boot与Kernel,通过串口看到完整启动日志,使用ADB登录系统,并能独立制作TF卡启动盘或使用PhoenixSuit完成烧录。这套环境是后续驱动开发、系统裁剪与量产固件制作的基础,建议在正式开发前反复验证一遍,确保每个环节都可复现。