23

全志科技 · 2021年03月18日

Tina Linux 系统介绍—R329智能语音开发板入门

R329 evb5开发板默认自带Tina Linux系统。

Tina Logo 8月版本 定稿_画板 1.jpg

Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。Tina Linux基于openwrt-14.07 版本的软件开发包,包含了 Linux 系统开发用到的内核源码、驱动、工具、系统中间件与应用程序包。

*openwrt 是知名的开源嵌入式 Linux 系统自动构建框架,是由 Makefile 脚本和 Kconfig 配置文件构成的。使得用户可以通过 menuconfig配置,编译出一个完整的可以直接烧写到机器上运行的 Linux 系统软件。

系统框图

5.png

Tina系统软件架构如图所示。从下至上分别为Kernel && Driver、Libraries、System Services、Applications 四层。

Kernel && Driver

Kernel&&Driver 层主要提供 Linux Kernel 的标准实现。Tina 平台的 Linux Kernel 采用 Linux3.4、Linux3.10、Linux4.4、Linux4.9、Linux5.4 等内核,不同硬件平台使用不同内核版本,提供安全性、内存管理、进程管理、网络协议栈等基础支持,并通过 Linux 内核管理设备硬件资源,如 CPU 调度、缓存、内存、I/O 等。 其中R329主要使用Linux 4.9。

Libraries

Libraries 层对应一般嵌入式系统,相当于中间件层次。其包含了各种系统基础库、第三方开源程序库支持,为应用层提供 API 接口,系统定制者和应用开发者可以基于 Libraries 层的API 开发新的系统服务和应用程序。

System Services

System Services 层对应系统服务层,包含系统启动管理、配置管理、热插拔管理、存储管理、多媒体中间件等。

Applications

Applications 层主要是实现具体的产品功能及交互逻辑,开发者可以开发实现自己的应用程序,提供系统各种能力给到终端用户。

开发环境

目前Tina Linux SDK基于Ubuntu14.04系统进行开发和调试,因此我们推荐使用该版本系统进行开发,其它版本系统可能存在兼容问题,需开发者自己针对系统进行适配。

编译环境需要的工具

编译Tina Linux SDK需要的Ubuntu包有:

gcc,binutils,bzip2,flex,python,perl,make,ia32-libs,find,grep,diff,unzip,gawk,getopt,subversion,libz-dev,libc headers

因为Ubuntu包的下载服务器在非中国大量地区,所有下载速度会很慢,甚至可能下载不了,所以建议下载前先将apt的下载源改为国内的地址,国内有多家组织提供开源镜像站,如清华、阿里等。

*由衷感谢这些组织为我们提供的便利!

修改方式:

将 Ubuntu下/etc/apt/sources.list 的内容全部替换成如下内容:(修改需sudo)

<span class="highlight" style="background-color:rgb(245, 245, 245)"><span class="colour" style="color:rgb(54, 70, 78)"><span class="font" style="font-family:_, SFMono-Regular, Consolas, Menlo, monospace"><span class="size" style="font-size:13.6px">deb <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty main restricted universe multiverse
# deb-src <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty main restricted universe multiverse
deb <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-updates main restricted universe multiverse
# deb-src <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-updates main restricted universe multiverse
deb <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-backports main restricted 
# deb-src <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-backports main restricted universe multiverse
deb <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-security main restricted universe multiverse
# deb-src <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-proposed main restricted universe multiverse
# deb-src <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu/">https://mirrors.tuna.tsinghua.edu.cn/ubuntu/</a> trusty-proposed main restricted universe multiverse</span></span></span></span>

ubuntu可直接执行以下两个命令安装:

命令一:
sudo apt-get update

命令二:
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y

对于 Ubuntu 16.04 以上版本,部分软件包已不再提供或者采用了其他的包,执行上述命令时, 安装失败的包可先忽略,进一步执行以下命令:

sudo apt-get install libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z1

Tina SDK获取

详见SDK源码获取

SDK结构

Tina Linux SDK 主要由构建系统、配置工具、工具链、host 工具包、目标设备应用程序、文档、脚本、linux 内核、bootloader 部分组成,下面是Tina主目录包含的文件和目录。

Tina-SDK/
├── build
├── config
├── Config.in
├── device
├── dl
├── lichee
├── Makefile
├── out
├── package
├── prebuilt
├── rules.mk
├── scripts
├── target
├── tmp
├── toolchain
└── tools

以下将对主要目录中包含的内容进行简单介绍。

build 目录

build 目录存放 Tina Linux 的构建系统文件,此目录结构下主要是一系列基于 Makefile 规格编写的 .mk 文件,主要的功能有:

(1)检测当前的编译环境是否满足 Tina Linux 的构建需求;
(2)生成 host 包编译规则;
(3)生成工具链的编译规则;
(4)生成 target 包的编译规则;
(5)生成 linux kernel 的编译规则;
(6)生成系统固件的生成规则。

config 目录

config 目录主要存放 Tina Linux 中配置菜单的界面以及一些固定的配置项,该配置菜单基于内核的 mconf 规格编写。

device 目标

devices 目录用于存放方案的配置文件,包括内核配置、env 配置、分区表配置、sys_config.fex(全志定制板级配置文件)、

board.dts(linux标准设备树文件) 等。

*这些配置在旧版本Tina(Tina3.0以前)上是保存于 target 目录下,现新版本均移到了 device 目录下,但defconfig仍保存在 target 目录下

lichee 目录

lichee 目录主要存放 bootloader、linux内核、DSP等代码,其中DSP代码及编译环境因涉及DSP供应商科声讯版权,需单独申请。lichee目录下结构如下:

Tina-SDK
├── brandy-2.0
    │   ├── build.sh
    │   ├── tools
    │   └── u-boot-2018
    └── linux-4.9

package 目录

package 目录存放Tina系统支持的软件包源码和编译规则,目录按照目标软件包的功能进行分类,该目录包含了Tina系统全平台(包括全志R/H/F/V/T系列)的软件包,但是并不是所有软件包都适配了R329方案,部分软件包需要开发者自行适配。

prebuild 目录

prebuild 目录存放预编译用的交叉编译器,主要包括aarch64的glibc和musl以及arm的glibc和musl。prebuild目录下结构如下:

Tina-SDK
└── linux-x86
    ├── aarch64
    │   ├── aarch64-toolchain.txt
    │   ├── toolchain-sunxi-glibc
    │   └── toolchain-sunxi-musl
    ├── arm
    │   ├── arm-toolchain.txt
    │   ├── toolchain-sunxi-glibc
    │   └── toolchain-sunxi-musl
    └── host
        └── host-toolchain.txt

scripts 目录

scripts 目录用于存放设备开发中用到的一些脚本。

target 目录

target目录用于存放开发板相关的配置以及sdk和toolchain生产的规格。

toolchain 目录

toolchain 目录用于存放交叉工具链构建配置、规则。

tools 目录

tools 目录用于存放 host 端工具的编译规则。

out 目录

out 目录用于保存编译相关的临时文件和最终镜像文件,编译后自动生成此目录,并生成对应的方案out目录,如开发板对应的R329-evb5方案目录结构如下:

Tina-SDK/out
├── host
└── r329-evb5
    ├── boot.img
    ├── compile_dir
    ├── image
    ├── md5sums
    ├── packages
    ├── r329-evb5-boot.img
    ├── r329-evb5-Image.gz
    ├── r329-evb5-uImage
    ├── rootfs.img
    ├── sha256sums
    ├── staging_dir
    └── tina_r329-evb5_uart0.img

其中 :

(1)tina_r329-evb5_uart0.img 就是编译打包后生成的最终烧写到开发板上的固件;
(2)boot.img 为最终烧写到系统 boot 分区的数据;
(3)rootfs.img 为最终烧写到系统 rootfs 分区的数据;
(4)r329-evb5-uImage为内核的 uImage 格式镜像,若配置为 uImage 格式,则会拷贝成 boot.img;
(5)r329-evb5-boot.img为内核的 boot.img 格式镜像,若配置为 boot.img 格式,则会拷贝成 boot.img
(6)compile_dir 为 sdk 编译 host、target 和 toolchain 的临时文件目录,存有各个软件包的源码;
(7)packages 目录保存的是最终生成的 ipk 软件包。

另外 out 目录下的 host 目录用于存放 host 端的工具以及一些开发相关的文件。

编译和烧写

详见 编译和烧写

温馨tips:如想了解更多R329相关开发信息,点击查看  全志科技R329智能语音开发板详细资料

推荐阅读
关注数
2118
内容数
20
全志科技芯片方案学习专栏,欢迎关注。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息