1. Tina Linux 开发环境搭建

做嵌入式Linux开发,第一步就是搭环境。这事儿看着简单,但坑不少。我见过太多新手卡在环境搭建上,一卡就是好几天。今天咱们就把这事儿捋清楚。

1.1 虚拟机安装与Ubuntu配置

我个人习惯用VMware Workstation。当然VirtualBox也行,但VMware对USB设备、网络桥接的支持更稳定。我在项目中遇到过好几次VirtualBox下USB烧录器识别不了的情况,换了VMware就解决了。

我的建议: 虚拟机硬盘至少给80GB,内存8GB起步。Tina SDK编译起来很吃资源,给少了编译到一半就卡死了。

Ubuntu版本我推荐18.04或20.04 LTS。为什么?Tina SDK官方测试环境就是这两个版本。你用22.04也能跑,但有些依赖包版本不对,得手动折腾。

安装完Ubuntu后,有几件事必须做:

  1. 换源 — 把apt源换成国内镜像,不然下载慢到你怀疑人生
  2. 安装基础工具 — build-essential、git、repo、python、libncurses5-dev这些一个都不能少
  3. 配置SSH — 方便从宿主机连虚拟机操作

核心依赖包安装命令:

sudo apt-get update
sudo apt-get install -y build-essential git repo python3 python3-pip
sudo apt-get install -y libncurses5-dev libssl-dev u-boot-tools
sudo apt-get install -y device-tree-compiler swig

1.2 Tina SDK下载

Tina SDK的获取方式有两种:

方式 适用场景 说明
全志官方Git仓库 有授权的合作伙伴 通过repo拉取完整源码树
开发板厂商提供 个人开发者、学生 通常是打包好的SDK压缩包

我用的是官方Git仓库方式。repo init的时候要指定manifest分支,不同芯片平台对应不同分支。比如V系列用v1.x,R系列用r1.x。这个别搞错了,否则编译会报一堆莫名其妙的错误。

注意: 下载SDK前,先确认你的网络能访问全志的Git服务器。有些公司内网有限制,得配代理。我曾经因为这个问题折腾了一下午,最后发现是公司防火墙把git端口封了。

下载命令示例:

mkdir tina-sdk
cd tina-sdk
repo init -u https://sdk.allwinnertech.com/gerrit/manifest.git -b master -m tina-v3.0.xml
repo sync -j4

repo sync的时间取决于网速,一般30分钟到2小时不等。你可以趁这个时间泡杯咖啡,或者看看芯片手册。

1.3 首次编译

SDK下载完成后,先别急着编译。先看看目录结构:

tina-sdk/
├── build/          # 编译脚本
├── device/         # 板级配置
├── kernel/         # Linux内核源码
├── package/        # 应用包
├── target/         # 目标系统配置
├── toolchain/      # 交叉编译工具链
└── uboot/          # U-Boot源码

编译前要做的第一件事:source环境变量。这个步骤很多人会忘,然后直接make,结果报错说找不到命令。

标准编译流程:

source build/envsetup.sh
lunch              # 选择目标平台
make -j8           # 开始编译

lunch之后会列出所有支持的板级配置。你选对应的数字就行。比如我手头是R329开发板,就选对应的那个。

第一次编译时间比较长,我的机器(i7-8700K,16GB内存)大概需要40分钟。如果编译过程中断,重新执行make就行,它会接着上次的进度继续。

小技巧: 编译时加V=s可以显示详细日志。遇到错误时,用这个参数重新编译一次,能看到具体是哪个文件报错。

1.4 首次烧录体验

编译完成后,生成的镜像文件在 out/<板型>/ 目录下。主要有这几个:

  • boot.img — 内核+设备树+ramdisk
  • rootfs.img — 根文件系统
  • system.img — 系统分区镜像
  • tina_<板型>_<版本>.img — 完整烧录包

烧录工具我推荐PhoenixCard或者PhoenixSuit。全志的芯片基本都用这两个工具。PhoenixCard用于制作SD卡启动盘,PhoenixSuit用于USB烧录。

烧录步骤:

  1. 把开发板通过USB连接到电脑
  2. 按住烧录键(一般是FEL键或BOOT键)再上电
  3. 电脑识别到设备后,打开烧录工具选择镜像
  4. 点击开始烧录,等待进度条走完
避坑指南: 我曾经遇到过烧录到一半提示"设备断开"。后来发现是USB线的问题。开发板对USB线质量很敏感,尤其是供电不足的时候。建议用带屏蔽的粗线,长度不超过1米。

烧录成功后,接上串口(一般是115200波特率,8N1),上电就能看到启动日志了。看到内核启动的打印信息,说明环境搭建成功了。

1.5 知识体系总览

下面这张图把整个环境搭建的流程串起来了。你跟着这个流程走,基本不会出大问题。

Tina Linux 开发环境搭建流程 虚拟机 + Ubuntu 18.04 repo sync 下载SDK source + lunch + make PhoenixSuit 烧录 串口查看启动日志 关键点:换源 → 安装依赖 → 选对manifest分支 → 烧录用好线

嗯,到这里环境搭建就完成了。你可能会问:为什么这么强调环境?因为后面所有驱动开发、外设适配的工作,都依赖这个基础环境。环境没搭好,后面寸步难行。

我建议你把编译好的镜像文件备份一份。万一后面改坏了,还能快速恢复。我自己就吃过这个亏,改内核配置改到系统起不来,又得重新编译,白白浪费一个小时。