跳到主要内容

Tina Linux v5.0

V853 芯片官方支持 Tina Linux v5.0 系统。

Tina Linux 是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。

Tina Linux v5.0 中包含 Linux 系统开发用到的 boot 源码、内核源码、驱动、工具、系统中间件与应用程序包。可以方便的定制、编译、打包生成Linux固件镜像。

Tina Linux v5.0 可以支持构建 openWrt 和 buildroot 不同构建系统;也支持单独编译 BSP(Board Support Package,板级支持包);能够打包生成固件包,烧录到相应设备中并运行。

(1) 支持多构建系统
完整的SDK可以支持 openWrt 以及 buildroot,部分定制化SDK则可能只保留着 openWrt 或者 buildroot,甚至没有任何构建系统,只支持编译简单的BSP。

(2) BSP高度复用
Tina Linux v5.0 中BSP(boot,kernel代码,编译打包工具等)是独立的存在,可支持单独编译打包,快速生成一个的固件镜像。

(3)openWrt 改造
Tina Linux v5.0 对 openWrt 进行了较多改造,例如与内核编译解耦合,编译产物的目录调整,软件包及方案目录的独立仓库化等等,可以更加友好的单独构建rootfs,裁剪SDK。

openWrt 是一个开源的嵌入式 Linux 系统自动构建框架,是由 Makefile 脚本和 Kconfig 配置文件构成的。使得用户可以通过 menuconfig 灵活配置软件包。

目录结构

Tina Linux v5.0 目录结构主要有构建工具、构建系统、配置工具、工具链、芯片配置目录、内核及boot目录等组成。

Tina Linux v5.0 内置快速跳转指令,可以快速进入相关文件夹进行编辑修改。

下面按照目录顺序与快速跳转指令做简单介绍。

TinaLinux/
├── brandy # 存放boot0,uboot等代码。
├── build # 存放Tina Linux的系统构建脚本
├── buildroot # 存放buildroot相关的配置文件以及原生builroot代码
├── build.sh -> build/top_build.sh # 超链接至build/top_build.sh
├── device # 存放芯片方案的配置文件
├── kernel # 存放不同版本的内核代码
├── openwrt # 存放openWrt原生代码,及软件包、芯片方案目录
├── out # 存放编译相关的临时文件和最终镜像文件
├── platform # 存放着一些软件包源码
├── prebuilt # 存放一些预编译好的工具
└── tools # 存放一些host端工具,下载打包工具

brandy

brandy目录下主要存放boot0,uboot等代码。

brandy
└── brandy-2.0
├── build.sh -> tools/build.sh # 超链接
├── spl-pub # boot0仓库
├── tools # 一些工具
└── u-boot-2018 # u-boot 源码

快捷跳转命令:cboot cboot0

build

build目录存放Tina Linux的系统构建脚本,主要功能有:

  1. 提供编译需要的环境变量、函数、规则。
  2. 提供各目标模块的编译方法、规则。
  3. 对接 openWrt, buildroot 等不同构建系统。
  4. 打包生成系统固件的脚本

快捷跳转命令:cbuild

buildroot

buildroot 相关的配置文件以及原生 builroot 代码。

device

device目录用于存放芯片方案的配置文件,包括内核配置,env配置,分区表配置,sys_config.fex, board.dts等。

device
├── config
│   ├── chips
│   ├── common
│   └── rootfs_tar
└── product -> ./config/chips/v853

快捷跳转命令:cchips, cconfigs

kernel

kernel目录主要存放不同版本的内核代码。

kernel
├── linux-4.9
└── linux-5.4

openwrt

openwrt目录存放着openWrt原生代码,及软件包、芯片方案目录。

openwrt
├── build # openWrt构建系统相关hook脚本
├── dl # 软件压缩包
├── openwrt # openWrt原生代码目录
├── package # 额外添加的软件包,包括AW软件包、第三方软件包,feeds引入的软件包
└── target # 各个芯片方案目录,用于保存差异化配置信息

out

out目录用于保存编译相关的临时文件和最终镜像文件 ,编译后自动生成此目录,例如编译方案v853-vision。

out
├── v853
│   ├── vision
│ │ ├── buildroot
│ │ ├── openwrt
│ │ └── pack_out
│   └── kernel
└── toolchain
   └── gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi

根据配置选择,最终的编译产物会在openwrt或者buildroot目录下,而打包生成固件的准备文件都存放在pack_out下,kernel是内核编译产物(仅限linux-5.4及以上版本), toolchain目录是存放着解压后的工具链,用于编译内核。

快捷跳转命令:cout

out/openwrt

out/openwrt
├── boot.img
├── rootfs.img
├── build_dir
├── staging_dir
├── tmp
├── extra
├── v853_linux_vision_uart0.img
├── uImage
├── vmlinux
└── zImage
  • boot.img为最终烧写到系统boot分区的数据,可能为boot.img格式也可能为uImage格式。
  • rootfs.img为最终烧写到系统rootfs分区的数据,该分区默认为squashfs格式。
  • build_dir为sdk编译host,target和toolchain的临时文件目录,存有各个软件包的源码。
  • staging_dir为sdk编译过程中保存各个目录结果的目录。
  • extra目录下会保存的是最终生成的ipk软件包。
  • tmp目录下会保存着本方案软件包相关的信息
  • v853_linux_vision.img为最终固件包(系统镜像),串口信息通过串口输出
  • 若使用pack -d,则生成的固件包为xxx_card0.img,串口信息转递到tf卡座输出。

快捷跳转命令:ctarget, crootfs

platform

platform目录存放着一些软件包源码,这些软件包的编译方式是通用的,分别可以用在openWrt或者buildroot等不同构建系统中。这个目录的存在是为了不同构建系统共用软件包提供可能性。

目前platform目录结构如下,主要根据是否为全志自研改动,以及类别区分:

platform
├── allwinner
│   ├── power
│   ├── system
│   ├── usb
│   ├── utils
│   └── wireless
└── thirdparty
└── gui

prebuilt

prebuilt目录存放着一些预编译好的工具:

├── hostbuilt
│   ├── make4.1
│   └── python3.8
├── kernelbuilt
│   ├── aarch64
│   ├── arm
│   └── riscv
└── rootfsbuilt
├── aarch64
├── arm
└── riscv
  • hostbuilt目录下存放着make以及python3.8工具,为了解决个别Host端工具版本过低导致编译失败的问题
  • kernelbuilt目录存放着编译内核的工具链压缩包,它会被解压到 out/toolchain 目录下
  • rootfsbuilt目录存放着编译rootfs的工具链

tools

tools目录用于存放一些host端工具, 例如打包工具。

相关链接

编译环境配置

详见: 编译环境配置

源码下载

详见: 源码下载

编译和烧写

详见: 编译Tina 烧写Tina