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等版本信息
~/.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卡启动适合快速验证,制作步骤如下:
- 使用
fdisk或parted对TF卡分区,通常分为boot与rootfs两个分区。 - 将U-Boot、Kernel、dtb写入boot分区,根文件系统解压到rootfs分区。
- 插入开发板,设置启动模式为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替代。
六、环境搭建流程总览
七、常见误区与复盘
| 误区 | 现象 | 正确做法 |
|---|---|---|
| 工具链版本混用 | 内核编译报错或运行崩溃 | 统一使用SDK自带工具链,固定PATH |
| 串口TX/RX未交叉 | 无任何输出 | TX接RX、RX接TX、GND共地 |
| 未加dialout组 | Permission denied | usermod -aG dialout,重新登录 |
| dd写错磁盘 | 主机数据被覆盖 | 先用lsblk确认设备名,再执行dd |
| ADB未配udev | adb devices为空 | 添加51-android.rules并重载 |
dd与mkfs具有破坏性,写错目标盘会导致主机数据丢失。建议在虚拟机中操作,并提前备份重要数据。完成本章环境搭建后,你应当能够在Ubuntu主机上成功编译T507的U-Boot与Kernel,通过串口看到完整启动日志,使用ADB登录系统,并能独立制作TF卡启动盘或使用PhoenixSuit完成烧录。这套环境是后续驱动开发、系统裁剪与量产固件制作的基础,建议在正式开发前反复验证一遍,确保每个环节都可复现。