1. 项目概述
最近在调试盈鹏飞嵌入式的T536主板,需要基于全志Tina5 SDK进行系统配置和镜像编译。这个板子采用Allwinner T5系列芯片,主要面向工业控制、智能终端等场景。作为一款性价比不错的国产嵌入式平台,在实际部署中经常需要根据项目需求定制系统镜像。
这次记录的是从SDK环境搭建到最终生成可烧写镜像的全过程。不同于标准Linux发行版编译,全志这套Tina5开发套件有些特殊的地方需要注意,特别是在工具链配置和分区表修改环节。下面就把整个流程拆解开来,结合踩过的坑给大家做个详细说明。
2. 开发环境准备
2.1 硬件设备清单
- 盈鹏飞T536开发板(Allwinner T5四核Cortex-A7)
- 12V/2A电源适配器
- USB转串口调试器(推荐CP2102或CH340)
- 8GB以上SD卡(用于系统烧录)
- 网线(用于NFS挂载调试)
2.2 软件工具准备
- Ubuntu 18.04 LTS(官方推荐环境)
- Tina5 SDK(需向盈鹏飞或全志申请获取)
- 全志PhoenixSuit烧录工具
- 串口终端工具(Minicom/Putty)
注意:务必使用Ubuntu 18.04物理机或原生虚拟机,WSL可能遇到权限问题。SDK压缩包约8GB,解压需要预留25GB磁盘空间。
2.3 基础环境配置
先安装必要的依赖包:
bash复制sudo apt update
sudo apt install -y build-essential subversion git-core libncurses5-dev \
zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl \
mercurial bzr ecj cvs unzip lzop u-boot-tools
特别要注意的是,必须使用Python 2.7环境:
bash复制sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --config python # 选择python2.7
3. SDK解压与初始化
3.1 获取SDK包
Tina5 SDK通常以压缩包形式提供,文件名类似tina_t536_xxx.tar.gz。解压时要用特定参数:
bash复制mkdir tina_t536
tar -xvf tina_t536_v1.0.tar.gz -C tina_t536 --strip-components=1
3.2 环境变量设置
SDK根目录下的envsetup.sh必须首先执行:
bash复制cd tina_t536
source build/envsetup.sh
lunch # 选择t536_evb方案
这个步骤会配置以下关键环境变量:
TARGET_PRODUCT:设置为t536_evbTARGET_BOARD:对应板级配置OUT_DIR:指定输出目录
3.3 工具链验证
执行以下命令检查交叉编译器是否就绪:
bash复制arm-openwrt-linux-gcc -v
正常应显示gcc version 5.3.1,如果报错可能需要手动修复toolchain目录权限。
4. 系统配置修改
4.1 内核配置调整
进入内核配置界面:
bash复制make kernel_menuconfig
关键配置项修改:
- Device Drivers → GPIO Support → 勾选"/sys/class/gpio接口"
- File systems → 启用"squashFS"和"ubifs"
- 根据实际外设启用对应的驱动模块(如CAN、SPI等)
4.2 文件系统定制
修改target/allwinner/t536_evb/base-files目录:
- 添加自定义启动脚本到
/etc/init.d - 预置配置文件到
/etc/config - 静态IP设置在
/etc/network
经验:修改etc目录内容后,需要执行make clean才能生效,这是Tina5的一个特殊机制。
4.3 分区表配置
关键文件device/config/chips/t536/configs/evb/sys_partition.fex:
code复制[partition]
name = rootfs
size = 51200
downloadfile = rootfs.fex
user_type = 0x8000
常见调整项:
- rootfs分区大小(根据应用需求调整)
- 增加data分区用于用户数据存储
- 修改bootargs中的console参数
5. 系统镜像编译
5.1 完整编译流程
执行完整构建命令:
bash复制make -j8
这个过程会依次执行:
- 工具链检查
- 内核编译(约15分钟)
- 根文件系统打包(约10分钟)
- 生成固件镜像(约5分钟)
5.2 输出文件说明
编译完成后在out/t536_evb目录生成:
tina_t536_evb_uart0.img:完整烧写镜像boot.img:单独boot分区镜像rootfs.squashfs:根文件系统sunxi_mbr.fex:分区表信息
5.3 增量编译技巧
修改配置后可以针对性地编译:
bash复制make kernel_menuconfig # 修改内核配置后
make kernel -j8 # 仅编译内核
make menuconfig # 修改根文件系统后
make target -j8 # 仅打包根文件系统
6. 烧录与调试
6.1 烧录工具配置
使用PhoenixSuit工具烧录:
- 开发板拨码开关设为FEL模式
- 通过USB OTG连接电脑
- 选择生成的.img文件
- 勾选"强制格式化"选项
6.2 串口调试技巧
串口配置参数:
- 波特率:115200
- 数据位:8
- 停止位:1
- 无校验
开机时快速按任意键可进入uboot命令行,常用命令:
code复制printenv # 查看环境变量
setenv bootargs console=ttyS0,115200 # 修改启动参数
saveenv # 保存配置
6.3 常见问题排查
-
启动卡在uboot:
- 检查boot.img是否正常生成
- 确认分区表与实际flash匹配
-
文件系统挂载失败:
- 检查rootfs分区大小是否足够
- 确认文件系统类型(squashfs/ubifs)
-
外设无法使用:
- 内核配置是否启用对应驱动
- dmesg查看设备树加载情况
7. 进阶配置技巧
7.1 添加自定义软件包
在package目录新建自定义包:
code复制package/mypkg/
├── Makefile
└── src/
├── myapp.c
└── Config.in
Makefile关键内容示例:
makefile复制define Package/mypkg
SECTION:=utils
CATEGORY:=Utilities
TITLE:=My custom application
DEPENDS:=+libopenssl
endef
7.2 设备树修改
设备树源文件位于:
code复制kernel/linux-4.9/arch/arm/boot/dts/sun8i-t536-evb.dts
典型修改场景:
- 调整GPIO引脚功能
- 修改I2C设备地址
- 配置LCD屏幕参数
修改后需要重新编译dtb:
bash复制make kernel dtbs
7.3 性能优化建议
-
内核裁剪:
- 通过make kernel_menuconfig移除不需要的驱动
- 关闭调试符号(CONFIG_DEBUG_INFO=n)
-
根文件系统精简:
- 删除不必要的语言包
- 使用busybox替代完整版工具
-
启动加速:
- 禁用不必要的服务
- 使用prelink优化动态库
8. 实际项目经验
在工业控制器项目中,我们针对T536做了这些定制:
-
将默认的DHCP改为静态IP配置,修改
/etc/network/interfaces:code复制auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 -
增加看门狗守护进程,在
/etc/init.d添加:bash复制#!/bin/sh /etc/rc.common START=99 start() { echo 30 > /sys/class/watchdog/timeout (while true; do echo 1 > /dev/watchdog; sleep 10; done) & } -
针对高温环境优化:
- 内核配置中调高温度监控阈值
- 添加风扇控制脚本
这套配置在实际现场运行稳定,连续工作180天无异常重启。有个特别要注意的地方:全志芯片的GPIO编号计算方式比较特殊,在设备树中要使用端口组字母+编号的格式,比如PC5要写成port@050。