admin 管理员组

文章数量: 1184232


2024年12月25日发(作者:用友msde2000数据库免费下载地址)

TinaLinux系统软件

开发指南

版本号:1.5

发布日期:2021.04.17

文档密级:秘密

版本历史

版本号

0.1

1.0

1.1

1.2

1.3

1.4

1.5

日期

2019.02.20

2019.02.27

2019.06.16

2019.06.19

2020.12.31

2021.02.06

2021.04.17

制/修订人

AWA1225

AWA1225

AWA1046

AWA1046

AWA1610

AWA1610

AWA0985

内容描述

创建

正式发布

补充软件包安装,烧录工具及分区说明

更新文档说明和目录结构说明,补充细

增加arisc代码编译描述

arisc代码编译策略变更

完善部分章节描述

版权所有©珠海全志科技股份有限公司。保留一切权利i

文档密级:秘密

1概述

1

1

1

1

2

2

2

3

3

3

4

6

6

6

6

6

8

8

8

8

8

9

9

10

10

10

11

11

11

12

12

12

13

13

15

15

15

15

1.1编写目的........................................

1.2适用范围........................................

1.3相关人员........................................

2Tina系统资料

2.1概述..........................................

2.2文档列表........................................

3Tina系统概述

3.1概述..........................................

3.2系统框图........................................

3.3开发流程........................................

4Tina开发环境

4.1概述..........................................

4.2编译环境搭建......................................

4.2.1开发主机配置..................................

4.2.2软件包配置...................................

5Tina系统获取

5.1概述..........................................

5.2SDK获取.......................................

5.3SDK结构.......................................

5.3.1build目录...................................

5.3.2config目录..................................

5.3.3devices目录.................................

5.3.4docs目录...................................

5.3.5lichee目录..................................

5.3.6package目录.................................

5.3.7prebuilt目录.................................

5.3.8scripts目录..................................

5.3.9target目录..................................

5.3.10toolchain目录................................

5.3.11tools目录...................................

5.3.12out目录....................................

5.4SDK更新.......................................

5.5问题反馈........................................

6Tina编译打包

6.1概述..........................................

6.2编译系统........................................

6.3编译

版权所有©珠海全志科技股份有限公司。保留一切权利ii

文档密级:秘密

6.4编译内核........................................

6.5编译

6.6重编应用........................................

6.6.1方法一.....................................

6.6.2方法二.....................................

6.7其他命令........................................

7Tina系统烧写

7.1概述..........................................

7.2烧录工具........................................

7.3进入烧录模式......................................

8Tinauboot定制开发

8.1概述..........................................

8.2代码路径........................................

8.3uboot功能

8.4uboot配置

......................................

......................................

15

16

17

17

17

18

19

19

19

19

21

21

21

21

22

22

22

22

23

24

24

25

25

25

25

25

26

26

27

27

28

28

29

29

29

29

29

31

31

31

8.4.1defconfig方式................................

8.4.1.1defconfig配置步骤.........................

8.4.1.2defconfig配置宏介绍........................

8.4.2menuconfig方式...............................

8.5uboot编译......................................

8.5.1方法一.....................................

8.5.2方法二.....................................

8.6uboot的配置.....................................

8.6.1sys_config配置................................

8.6.1.1sys_结构介绍......................

8.6.1.2sys_配置实例......................

8.6.1.3sys_解析流程......................

8.6.2环境变量配置..................................

8.6.2.1环境变量作用.............................

8.6.2.2环境变量配置示例介绍........................

8.6.3sys_分区配置.........................

8.6.3.1sys_分区配置介绍..................

9Tinakernel定制开发

9.1概述..........................................

9.2代码路径........................................

9.3模块开发文档......................................

9.4内核配置........................................

10Tina系统定制开发

10.1应用移植.......................................

10.1.1Makefile范例................................

版权所有©珠海全志科技股份有限公司。保留一切权利iii

文档密级:秘密

10.1.2自启动设置..................................

10.1.2.1调用自启动脚本...........................

10.1.2.2sysV格式脚本...........................

10.1.2.3procd格式脚本

10.2应用调试

10.3应用编译

10.4应用安装

..........................

.......................................

.......................................

.......................................

33

33

33

34

35

36

36

3710.5分区与挂载......................................

版权所有©珠海全志科技股份有限公司。保留一切权利iv

文档密级:秘密

插图

3

4

22

23

24

25

26

26

26

27

28

30

35

36

3-1TinaLinux系统框图.................................

3-2TinaLinux系统开发流程...............................

8-1defconfig配置图...................................

8-2defconfig基本宏定义介绍图.............................

8-3menuconfig配置菜单图...............................

基本结构图..............................

8-5platform配置图...................................

8-6target配置图.....................................

8-7uart_para配置图...................................

8-8uboot启动调用环境变量方式图...........................

8-9kernelcmdline图..................................

9-1TinaLinux内核配置菜单...............................

10-1应用配置主界面....................................

10-2软件包所在界面....................................

版权所有©珠海全志科技股份有限公司。保留一切权利v

文档密级:秘密

1

概述

1.1编写目的

本文档作为AllwinnerTinaLinux系统平台开发指南,旨在帮助软件开发工程师、技术支持工

程师快速上手,熟悉TinaLinux系统的开发及调试流程。

1.2适用范围

TinaLinuxv3.5及以上版本。

Allwinner硬件平台R6,R7s,R11,R16,R18,R30,R58,R328,R332,R333,R311,

MR133,T7,R329,MR813,R818,R528,D1。

1.3相关人员

本开发指南适用于Tina系统软件开发工程师、Tina系统技术支持工程师。

版权所有©珠海全志科技股份有限公司。保留一切权利1

文档密级:秘密

2

Tina系统资料

2.1概述

TinaSDK发布的文档旨在帮助开发者快速上手开发及调试,文档中涉及的内容并不能涵盖所有

的开发知识和问题。文档列表也正在不断更新。

如有文档上的疑问及需求,请联系AllwinnerFAE窗口或访问全志客户服务平台open.

获取支持。

TinaSDK提供丰富的文档资料,包括硬件参考设计文档、Flash等基础器件支持列表、量产工

具使用说明、软件开发与制定介绍文档、芯片研发手册等资料。

2.2文档列表

请以全志科技全志客户服务平台最新列表为准。

版权所有©珠海全志科技股份有限公司。保留一切权利2

文档密级:秘密

3

Tina系统概述

3.1概述

TinaLinux系统是基于openwrt-14.07的版本的软件开发包,包含了Linux系统开发用到的

内核源码,驱动,工具、系统中间件与应用程序包。openwrt是一个开源的嵌入式Linux系统自

动构建框架,是由Makefile脚本和Kconfig配置文件构成的。使得用户可以通过menuconfig

配置,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件。

3.2系统框图

图3-1:TinaLinux系统框图

Tina系统软件框图如图所示,从下至上分为Kernel&&Driver、Libraries、SystemSer-

vices、Applications四个层次。各层次内容如下:

版权所有©珠海全志科技股份有限公司。保留一切权利3

文档密级:秘密

&&Driver主要提供LinuxKernel的标准实现。Tina平台的LinuxKernel采

用Linux3.4、linux3.10、linux4.4、linux4.9等内核(不同硬件平台可能使用不同内核版

本)。提供安全性,内存管理,进程管理,网络协议栈等基础支持;主要是通过Linux内核管

理设备硬件资源,如CPU调度、缓存、内存、I/O等。

ies层对应一般嵌入式系统,相当于中间件层次。包含了各种系统基础库,及第三方开

源程序库支持,对应用层提供API接口,系统定制者和应用开发者可以基于Libraries层的

API开发新的应用。

Services层对应系统服务层,包含系统启动管理、配置管理、热插拔管理、存储管

理、多媒体中间件等。

ations层主要是实现具体的产品功能及交互逻辑,需要一些系统基础库及第三方程序

库支持,开发者可以开发实现自己的应用程序,提供系统各种能力给到最终用户。

3.3开发流程

TinaLinux系统是基于LinuxKernel,针对多种不同产品形态开发的SDK。可以基于本

SDK,有效地实现系统定制和应用移植开发。

图3-2:TinaLinux系统开发流程

如上图所示,开发者可以遵循上述开发流程,在本地快速构建TinaLinux系统的开发环境和编译

代码。下面将简单介绍下该流程:

1.检查系统需求:在下载代码和编译前,需确保本地的开发设备能够满足需求,包括机器的硬件

能力,软件系统,工具链等。目前TinaLinux系统只支持Ubuntu操作系统环境下编译,并

仅提供Linux环境下的工具链支持,其他如MacOS,Windows等系统暂不支持。

2.搭建编译环境:开发机器需要安装的各种软件包和工具,详见开发环境章节,获知TinaLinux

已经验证过的操作系统版本,编译时依赖的库文件等。

3.选择设备:在编译源码前,开发者需要先导出预定义环境变量,然后根据开发者根据的需求,

选择对应的硬件板型,详见编译章节。

4.系统定制:开发者可以根据使用的硬件板子、产品定义,定制U-Boot、Kernel及Open-

wrt,请参考后续章节中相关开发指南和配置的描述。

5.编译与打包:完成设备选择、系统定制之后执行编译命令,包括整体或模块编译以及编译清

理等工作,进一步的,将生成的boot/内核二进制文件、根文件系统、按照一定格式打包成固

件。详见编译打包章节。

版权所有©珠海全志科技股份有限公司。保留一切权利4

文档密级:秘密

6.烧录并运行:继生成镜像文件后,将介绍如何烧录镜像并运行在硬件设备,进一步内容详见系

统烧写章节。

版权所有©珠海全志科技股份有限公司。保留一切权利5

文档密级:秘密

4

Tina开发环境

4.1概述

嵌入式产品开发流程中,通常有两个关键的步骤,编译源码与烧写固件。源码编译需要先准备好

编译环境,而固件烧写则需要厂家提供专用烧写工具。本章主要讲述这如何搭建环境来实现Tina

sdk的编译、烧写。

4.2编译环境搭建

一个典型的嵌入式开发环境包括本地开发主机和目标硬件板。

•本地开发主机作为编译服务器,需要提供linux操作环境,建立交叉编译环境,为软件开发提

供代码更新下载,代码交叉编译服务。

•本地开发主机通过串口或USB与目标硬件板连接,可将编译后的镜像文件烧写到目标硬件板,

并调试系统或应用程序。

4.2.1开发主机配置

TinaLinuxSDK是在ubuntu14.04开发测试的,因此我们推荐使用Ubuntu14.04主机环

境进行源码编译,其他版本没有具体测试,可能需要对软件包做相应调整。

4.2.2软件包配置

编译TinaLinuxSDK之前,需要先确定编译服务器安装了gcc,binutils,bzip2,flex,

python,perl,make,ia32-libs,find,grep,diff,unzip,gawk,getopt,subver-

sion,libz-dev,libcheaders。

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

sudoapt-getinstallbuild-essentialsubversiongit-corelibncurses5-devzlib1g-devgawk

flexquiltlibssl-devxsltproclibxml-parser-perlmercurialbzrecjcvsunzipia32-libs

lib32z1lib32z1-devlib32stdc++6libstdc++6-y

版权所有©珠海全志科技股份有限公司。保留一切权利6

文档密级:秘密

对于Ubuntu16.04以上版本,部分软件包已不再提供或者采用了其他的包,执行上述命令时,

安装失败的包可先忽略,进一步执行以下命令

sudoapt-getinstalllibc6:i386libstdc++6:i386lib32ncurses5lib32z1

版权所有©珠海全志科技股份有限公司。保留一切权利7

文档密级:秘密

5

Tina系统获取

5.1概述

5.2SDK获取

AllwinnerTinaLinuxSDK通过全志代码服务器对外发布。客户需要向业务/技术支持窗口申请

SDK下载权限。申请需同步提供SSH公钥进行服务器认证授权,获得授权后即可同步代码。

5.3SDK结构

TinaLinuxSDK主要由构建系统、配置工具、工具链、host工具包、目标设备应用程序、文

档、脚本、linux内核、bootloader部分组成,下文按照目录顺序介绍相关的组成组件。

Tina-SDK/

├──build

├──config

├──

├──device

├──dl

├──docs

├──lichee

├──Makefile

├──out

├──package

├──prebuilt

├──

├──scripts

├──target

├──tmp

├──toolchain

└──tools

5.3.1build目录

build目录存放TinaLinux的构建系统文件,此目录结构下主要是一系列基于Makefile规格编

写的mk文件。主要的功能是:

1.检测当前的编译环境是否满足TinaLinux的构建需求。

版权所有©珠海全志科技股份有限公司。保留一切权利8

文档密级:秘密

2.生成host包编译规则。

3.生成工具链的编译规则。

4.生成target包的编译规则。

5.生成linuxkernel的编译规则。

6.生成系统固件的生成规则。

build/

├──

├──

├──

├──

├──

├──

├──

├──

├──device_

├──

├──

├──

.....

5.3.2config目录

config目录主要存放TinaLinux中配置菜单的界面以及一些固定的配置项,该配置菜单基于内

核的mconf规格书写。

config/

├──

├──

├──

├──

└──

top_

5.3.3devices目录

devices目录用于存放方案的配置文件,包括内核配置,env配置,分区表配置,sys_,

等。

这些配置在旧版本上是保存于target目录下,新版本挪到device目录。

注意defconfig仍保存在target目录。

device/

└──config

├──chips

├──common

└──rootfs_tar

版权所有©珠海全志科技股份有限公司。保留一切权利9

文档密级:秘密

快捷跳转命令:cconfigs

5.3.4docs目录

docs目录主要存放用于开发的文档,以markdown格式书写。

本目录不再更新,请以全志客户服务平台系统文档为准。

docs/

├──

├──

├──

├──

├──

├──

├──

└──

Makefile

5.3.5lichee目录

lichee目录主要存放bootloader,内核,arisc,dsp等代码。

lichee/

├──

├──

├──

├──

├──

├──

├──

├──

└──

bootloader

├──uboot_2011_sunxi_spl

└──uboot_2014_sunxi_spl

brandy

├──u-boot-2011.09

└──u-boot-2014.07

brandy-2.0

├──spl

├──tools

└──u-boot-2018

linux-3.4

linux-3.10

linux-4.4

linux-4.9

arisc

dsp

快捷跳转命令:ckernel,cboot,cboot0,carisc。

5.3.6package目录

package目录存放target机器上的软件包源码和编译规则,目录按照目标软件包的功能进行分

类。

版权所有©珠海全志科技股份有限公司。保留一切权利10

文档密级:秘密

package/

├──allwinner

├──base-files

├──devel

├──dragonst

├──firmware

├──kernel

├──......

└──utils

5.3.7prebuilt目录

prebuild目录存放预编译交叉编译器,目录结构如下。

prebuilt/

└──gcc

└──linux-x86

├──aarch64

│ ├──toolchain-sunxi-musl

│ └──toolchain-sunxi-glibc

├──arm

│ ├──toolchain-sunxi-arm9-glibc

│ ├──toolchain-sunxi-arm9-musl

│ ├──toolchain-sunxi-glibc

│ ├──toolchain-sunxi-musl

└──host

└──

5.3.8scripts目录

scripts目录用于存放一些构建编译相关的脚本。

scripts/

├──

├──

├──

├──

├──clang-gcc-wrapper

├──cleanfile

├──

├──cleanpatch

├──......

5.3.9target目录

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

版权所有©珠海全志科技股份有限公司。保留一切权利11

文档密级:秘密

target/

├──

├──

├──

├──

├──

└──

allwinner

imagebuilder

Makefile

sdk

toolchain

快捷跳转命令:cdevice。

5.3.10toolchain目录

toolchain目录包含交叉工具链构建配置、规则。

toolchain/

├──binutils

├──

├──fortify-headers

├──gcc

├──gdb

├──glibc

├──

├──insight

├──kernel-headers

├──Makefile

├──musl

└──wrapper

5.3.11tools目录

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

tools/

├──

├──

├──

├──

├──

autoconf

automake

aw_tools

b43-tools

......

5.3.12out目录

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

r328s2-perf1。

out/

├──r328s2-perf1

└──host

版权所有©珠海全志科技股份有限公司。保留一切权利12

文档密级:秘密

其中host目录用于存放host端的工具以及一些开发相关的文件。

r328s2-perf1目录为方案对应的目录。方案目录下的结构如下:

out/r328s2-perf1

├──

├──compile_dir

├──image

├──md5sums

├──packages

├──

├──r328s2-perf1-uImage

├──r328s2-perf1-zImage

├──

├──sha256sums

├──staging_dir

└──tina_r328s2-perf1_

•为最终烧写到系统boot分区的数据,可能为格式也可能为uImage格

式。

•为最终烧写到系统rootfs分区的数据,该分区默认为squashfs格式。

•r328s2-perf1-zImage

为内核的

zImage

格式镜像,用于进一步生成

uImage

•r328s2-perf1-uImage为内核的uImage格式镜像,若配置为uImage格式,则会拷贝成

•为内核的格式镜像,若配置为格式,则会拷贝

•compile_dir为sdk编译host,target和toolchain的临时文件目录,存有各个软件包的源

码。

•staging_dir为sdk编译过程中保存各个目录结果的目录。

•packages目录保存的是最终生成的ipk软件包。

•tina_r328s2-perf1_为最终固件包(系统镜像),串口信息通过串口输出

•若使用pack-d,则生成的固件包为xxx_,串口信息转递到tf卡座输出。

快捷跳转命令:cout。

5.4SDK更新

开发者可根据

FAE

窗口定期发布的更新说明,通过

reposync

命令更新。

5.5问题反馈

Allwinner提供全志客户服务平台(),用来登记客户遇到的

问题以及解决状态。方便双方追踪,使问题处理更加高效。后续SDK问题、技术问题、技术咨询

等都可以提交到此系统上,Allwinner技术服务会及时将问题进行分发、处理和跟踪。

版权所有©珠海全志科技股份有限公司。保留一切权利13

文档密级:秘密

注:系统登录帐号需要与Allwinner开通确认。

版权所有©珠海全志科技股份有限公司。保留一切权利14

文档密级:秘密

6

Tina编译打包

6.1概述

6.2编译系统

(1)

(2)

(3)

(4)

sourcebuild/

lunch

make[-jN]

pack[-d]

其中,

步骤(1)建立编译环境,导出编译变量。

步骤(2)提示需要选择你想要编译的方案。

步骤(3)参数N为并行编译进程数量,依赖编译服务器CPU核心数,如4核PC,可"make-j4"

步骤(4)打包固件,-d参数使生成固件包串口信息转到tf卡座输出。

编译完成后系统镜像会打包在out//目录下

6.3编译boot

命令

mboot

mboot0

muboot

命令有效目录

tina下任意目录

tina下任意目录

tina下任意目录

作用

编译boot0和uboot

编译boot0

编译uboot

6.4编译内核

命令

mkernel

命令有效目录

tina下任意目录

作用

编译内核

版权所有©珠海全志科技股份有限公司。保留一切权利15

文档密级:秘密

6.5编译arisc

arisc是AW平台对cpus代码环境的代称,主要功能是负责休眠,关机等底层操作。它包含

cpus运行所需的驱动,库及工具链等,编译产生,然后打包在Tina镜像中,有boot-

loader在启动时加载到cpus域运行。

Tina中提供了如下与arisc相关的跳转、编译命令

命令

carisc

mkarisc

命令有效目录

tina下任意目录

tina下任意目录

作用

跳转到cpus代码工程目录

编译cpus代码

在Tina中,编译arisc代码有两种方式,如下:

第一种方式,跳转到arisc代码路径下,使用make编译

arisc代码库具有独立的工具链和构建体系,因此对arisc代码的编译,也可以cd到对应的路径

下,执行make命令。但需注意,此时需要手动将生成的文件拷贝到SDK的bin文件

路径下,覆盖对应的文件(一般路径是tina/device/config/chips/${平台名}/bin)。

操作如下,

step1

使用carisc或cd命令跳转到arisc代码环境下,一般为tina/lichee/arisc/ar100s。

step2

生成必要的配置。在arch/configs/下,存在许多defconfig默认配置文件,可根据AXP型号选择使用,例如make

sun50iw10p1_axp803_defconfig。此操作将会在arisc根目录生成.config。

step3

修改默认配置,可使用makemenuconfig。此操作会生成配置菜单,按需选择配置即可,该操作会修改.config。如需重新

使用默认配置,重新执行step2即可。

step4

使用make命令编译

step5

将拷贝到Tina的bin目录,即cbin可跳转的目录即可。如/tina/device/config/chips/r818/bin

step6

若需清理工程,可使用makeclean

step7

如需提交defconfig配置修改,可使用makesavedefconfig命令。此命令会根据.config在arisc根目录生成

defconfig。将defconfig拷贝到arch/configs/下,覆盖对应配置文件即可。

注意:

一般来说,arisc执行的功能较为底层,多与休眠,关机等操作相关,对稳定性要求较高。我们不

建议客户自己修改任何相关配置和代码,如必须,请与我司联系或执行足够的稳定性测试。

第二种方式,使用mkarisc命令

如上述方法所述,Tina为了解决arisc编译后还需手动拷贝的问题,Tina提供了这个快捷命令

mkarisc。需要指出的是:目前只支持R818、MR813的arisc代码编译。

版权所有©珠海全志科技股份有限公司。保留一切权利16

文档密级:秘密

操作如下,较为简单

step1

配置tina环境,如sourebuild/,lunch等操作。

step2

使用mkarisc编译即可或直接编译Tina,在编译Tina时,也会自动调用mkarisc命令。

注意:

使用mkarisc命令编译时,会自动读取获取AXP型号,然后使用对应的默认配置文

件编译。如中指定使用“x-powers,axp803”时,mkarsic命令会使用arisc工程环

境下的sun50iw10p1_axp803_defconfig配置文件编译。此时,若您需要修改该arisc配置,

只能先修改该配置文件后编译,除此外不接受其他配置修改的方式。

6.6重编应用

请确保进行过一次固件的编译,确保SDK基础已经编译,才能单独重编应用包。重编应用包应用

场景一般为:只修改了应用,不想重新烧写固件,只需要安装应用安装包即可。请确保在编译前

已加载tina环境:

$sourcebuild/

$lunch

6.6.1方法一

当在应用包的目录(包括其子目录)中,可执行

$mm[-B]

=>B参数则先clean此应用临时文件再编译

示例:假设软件包路径为:tina/package/utils/rwcheck,则:

$cdtina/package/utils/rwcheck

$mm-B

编译出应用安装包保存路径为:

tina/out/<方案>/packages/base

6.6.2方法二

当在tina的根目录,可执行:

版权所有©珠海全志科技股份有限公司。保留一切权利17

文档密级:秘密

$make<应用包的路径>/clean,==>清空应用包临时文件

$make<应用包的路径>/install,==>编译软件包

或者

$make<应用包的路径>/{clean,install},==>先清空临时文件再编译

示例:假设软件包的路径为:tina/package/utils/rwcheck,则:

$cdtina

$makepackage/utils/rwcheck/{clean,install}

6.7其他命令

命令

make

makemenuconfig

makekernel_menuconfig

mkarisc

printfconfig

croot

cconfigs

cdevice

carisc

cgeneric

cout

cboot

cgrep

minstallpath/to/package/

mcleanpath/to/package/

mm[-B]

pack

m

p

命令有效目录

tina根目录

tina根目录

tina根目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina下任意目录

tina根目录

tina根目录

软件包目录

tina根目录

tina

下任意目录

tina下任意目录

作用

编译整个sdk

启动软件包配置界面

启动内核配置界面

编译cpus源码,根据AXP型号选择对应的默认配置

打印当前SDK的配置

快速切换到tina根目录

快速切换到方案的bsp配置目录

快速切换到方案配置目录

快速切换到cpus代码目录

快速切换到方案generic目录

快速切换到方案的输出目录

快速切换到bootloader目录

在c/c++/h文件中查找字符串

编译并安装软件包

clean软件包

编译软件包,-B指编译前先clean

打包固件

make

的快捷命令,编译整个

sdk

pack的快捷命令,打包固件

版权所有©珠海全志科技股份有限公司。保留一切权利18

文档密级:秘密

7

Tina系统烧写

7.1概述

本章节主要介绍如何将构建完成的镜像文件(image)烧写并运行在硬件设备上的流程。

SDK中的烧录工具不再更新,后续会删除,请优先选择从全志客户服务平台下载最新烧录工具。

windows工具均集成在APST中,下载安装APST即可,APST的工具均自带文档。

7.2烧录工具

Tina提供的几种镜像烧写工具介绍如表所示,用户可以选择合适的烧写方式进行烧写。

工具

PhoenixSuit

PhoenixCard

PhoenixUSBpro

LiveSuit

运行系统

windows

windows

windows

ubuntu

描述

分分区升级及整个固件升级工具

卡固件制作工具

量产升级工具,支持USB一拖8烧录

固件升级工具

对于ubuntu:

•64bit主机使用LiveSuitV306_For_。

•32bit主机使用LiveSuitV306_For_。

具体烧录工具和使用说明,请到全志客户服务平台下载。

7.3进入烧录模式

设备需进入烧录模式,以下几种情况会进入烧录模式:

无法读取到boot0,例如新换的flash不包含数据,或者上电时短路flash阻断通

信。

版权所有©珠海全志科技股份有限公司。保留一切权利19

文档密级:秘密

2.在串口中按2进入烧录。即,在串口工具输出框中,按住键盘的’2’,不停输出字符’2’,上电

启动。boot0检测到此字符,会跳到烧录模式。

3.在uboot控制台,执行efex。

4.在linux控制台,执行rebootefex。

可用的情况下,可使用adbshellrebootefex,或点击烧录工具上的“立即烧录”按钮。

6.当完整配置[fel_key]下fel_key_max和fel_key_min时,按下键值在范围内按键,之后上

电。

7.当板子有FEL按键时,按住FEL按键上电。

8.制作特殊的启动卡,从卡启动再进入烧录模式。

版权所有©珠海全志科技股份有限公司。保留一切权利20

文档密级:秘密

8

Tinauboot定制开发

8.1概述

本章节简单介绍uboot基本配置、功能裁剪、编译打包、常用命令的使用,帮助客户了解Tina

平台uboot框架,为boot定制开发提供基础。

目前TinaSDK共有三版uboot,分别是uboot-2011、uboot-2014、uboot-2018,分别在不

同硬件平台上使用,客户拿到SDK需要根据开发的硬件平台核对版本信息。

8.2代码路径

TinaSDK/

├──brandy

│ ├──...

│ ├──u-boot-2011

│ └──u-boot-2014

├──brandy-2.0

│ ├──...

│ └──u-boot-2018

8.3uboot功能

TinaSDK中,bootloader/uboot在内核运行之前运行,可以初始化硬件设备、建立内存空间映

射图,从而将系统的软硬件环境带到一个合适状态,为最终调用linux内核准备好正确的环境。

在Tina系统平台中,除了必须的引导系统启动功能外,uboot还提供烧写、升级等其它功能。

•引导内核能从存储介质(nand/mmc/spinor)上加载内核镜像到DRAM指定位置并运行。

•量产&升级包括卡量产,USB量产,私有数据烧录,固件升级。

•电源管理包括进入充电模式时的控制逻辑和充电时的显示画面。

•开机提示信息开机能显示启动logo图片(BMP格式)。

•Fastboot功能实现fastboot的标准命令,能使用fastboot刷机。

版权所有©珠海全志科技股份有限公司。保留一切权利21

文档密级:秘密

8.4uboot配置

以uboot-2018为例,各项功能可以通过defconfig或配置菜单menuconfig进行开启或关闭,

具体配置方法如下:

8.4.1defconfig方式

8.4.1.1defconfig配置步骤

/TinaSDK/lichee/brandy2.0/u-boot-2018/configs/sun8iw18p1_defconfig(若是spinor方案则打

开sun8iw18p1_nor_defconfig)

2.打开sun8iw18p1_defconfig或sun8iw18p1_nor_defconfig后,在相应的宏定义前去掉或添加"#"即可将相应功能

开启或关闭。

图8-1:defconfig配置图

如上图,只要将CONFIG_SUNXI_NAND前的#去掉即可支持NAND相关功能,其他宏定义

的开启关闭也类似。

8.4.1.2defconfig配置宏介绍

如下图是sun8iw18p1_defconfig/sun8iw18p1_nor_defconfig中的基本宏定义的介绍:

版权所有©珠海全志科技股份有限公司。保留一切权利22

文档密级:秘密

8-2:defconfig

基本宏定义介绍图

8.4.2menuconfig方式

通过menuconfig方式配置的方法步骤如下:

版权所有©珠海全志科技股份有限公司。保留一切权利23

文档密级:秘密

cd/TinaSDK/lichee/brandy2.0/u-boot-2018/

makeARCH=armmenuconfig或makeARCH=arm64menuconfig

注意:arm针对32位平台,arm64针对64位平台。

执行上述命令会弹出menuconfig配置菜单,如下图所示,此时即可对各模块功能进行配置,配

置方法menuconfig配置菜单窗口中有说明。

图8-3:menuconfig配置菜单图

8.5uboot编译

8.5.1方法一

在tina目录下即可编译uboot。

sourcebuild/(见详注1)

lunch(见详注2)

muboot(见详注3)

详注:

1加载环境变量及tina提供的命令。

2输入编号,选择方案。

3编译uboot,编译完成后自动更新ubootbinary到TinaSDK/target/allwinner/$(BOARD)-common/bin/。

版权所有©珠海全志科技股份有限公司。保留一切权利24

文档密级:秘密

8.5.2方法二

sourcebuild/(见详注1)

lunch(见详注2)

cboot(见详注3)

makeXXX_config(见详注4)

make-j

详注:

3跳转到Uboot源码目录。

4选择方案配置,如果是使用norflash,运行makeXXX_nor_config。

5执行编译uboot的动作。

8.6uboot的配置

8.6.1sys_config配置

sys_是对不同模块参数进行配置的重要文件,对各模块重要参数的更改及更新提供了

极大的方便。其文档存放路径:

TinaSDK/target/allwinner/$(BOARD)/configs/sys_

TinaSDK/device/config/chips/$(CHIP)/configs/$(BOARD)/sys_

8.6.1.1sys_结构介绍

sys_主要由主键和子键构成,主键是某项功能或模块的主标识,由[]括起,子键是对

该功能或模块中各个参数的配置项,如下图所示,dram_para是主键,dram_clk、dram_type

和dram_zp是子键。

图8-4:基本结构图

8.6.1.2sys_配置实例

[platform]:平台相关配置项。

版权所有©珠海全志科技股份有限公司。保留一切权利25

文档密级:秘密

图8-5:platform配置图

例如,debug_mode=1表示开启uboot的调试模式,开启后会在log中打印出对应的调试信

息。next_work=2表示烧录完成后系统的下一步执行动作(0x1表示正常启动、0x2表示重启、

0x3表示关),其他配置可以查看[platform]前的提示说明。

[target]:目标平台相关功能配置项

图8-6:target配置图

上图中的可以通过配置boot_clock配置cpu的频率大小。

[uart_para]:串口配置项,uart_para配置项是uboot串口打印调试时用到的重要配置

图8-7:uart_para配置图

上图中的uart_debug_port=0表示使用的是uart0,uart_debug_tx/uart_debug_rx配置的

gpio口(PA04/PA05)需要根据对应的GPIODATASHEET进行配置。

8.6.1.3sys_解析流程

在uboot2014/2018中sys_最终会被转化为dtb(devicetreebinary,linux内

核配置方式),dtb最终会被打包烧录至flash中,启动过程中会将该文件加载至内存,之前在

sys_中配置的参数已转化为dtb节点,最终会调用fdt_getprop_32()函数对dtb中

的节点进行解析。

8.6.2环境变量配置

uboot的环境变量就是一个个的键值对,操作接口为:getenv(),setenv(),saveenv()。环境

变量的形式:

版权所有©珠海全志科技股份有限公司。保留一切权利26

文档密级:秘密

boot_normal=sunxi_flashread40007800boot;boota4000780

boot_recovery=sunxi_flashread40007800recovery;boota40007800

boot_fastboot=fastboot

8.6.2.1环境变量作用

可以把一些参数信息或者命令序列定义在该环境变量中。在环境变量中定义UBOOT命令序列,

可以把UBOOT各个功能模块按顺序组合在一起执行,从而完成某个重要功能。

例如,如果执行了上述提到的boot_normal环境变量对应的命令,Uboot则会先调用

sunxi_flash命令从存储介质的boot分区上加载内核到DRAM的0x40007800位置;然后调

用boota命令完成内核的引导。

uboot启动时调用环境变量方式下如图所示:

图8-8:uboot启动调用环境变量方式图

8.6.2.2环境变量配置示例介绍

TinaSDK中,环境变量配置文件保存在TinaSDK/target/allwinner/$(BOARD)/configs/

文件,用户使用的时候,可能会看到、等文件,env-xxx后缀数字表示

在不同内核版本上的配置。打开后其内容示例如下,

•bootdelay=0,改环境变量bootdelay(即boot启动时log中的倒计时延迟时间)值的大

小,为便于调试,bootdelay的值一般不要等于0,这样在小机上电后按下任意键才能进入

版权所有©珠海全志科技股份有限公司。保留一切权利27

文档密级:秘密

ubootshell命令状态。

•boot_normal=sunxi_flashread40007800boot;boota4000780,设置启动内核命令,

即将boot分区读到内存0x40007800地址处,然后从内存0x40007800地址处启动内核。

•Setargs_nand=setenvbootargsearlyprintk=${earlyprink}…….,设置内核相关环境

变量,该变量在启动至内核的log中会打印处理,即cmdline如下图:

图8-9:kernelcmdline图

•loglevel=8,设置内核log打印等级。

8.6.3sys_分区配置

分区配置文件是一个规划磁盘分区的文件,烧录过程会按照该分区配置文件将各分区数据烧录至

flash中。

TinaSDK中,分区配置文件路径TinaSDK/target/allwinner/$(BOARD)/configs/sys_。

有些方案可以看到sys_、sys_partition_两个分区配置文件,若是打包

Tina非nor固件,则使用的是sys_partition_配置文件,若是打包nor固件,则使

用的是sys_partition_。

8.6.3.1sys_分区配置介绍

一个分区的属性,包含名称、分区大小、下载文件与用户属性。以下是文件中所描述的一个分区

的属性:

•name,分区名称由用户自定义。当用户在定义一个分区的时候,可以把这里改成自己希望的字

符串,但是长度不能超过16个字节。

•size,定义该分区的大小,以扇区的单位(1扇区=512bytes,如上图给env分区分配了

32768个扇区,即32768*512/1024/1024=16M),注意,为了字节对齐,这里分配的扇

区大小应当能整除128。

•downloadfile,下载文件的路径和名称。可以使用相对路径,相对是指相对于文

件所在分区。也可以使用绝对路径。

•user_type,提供给操作系统使用的属性。目前,每个操作系统在读取分区的时候,会根据用

户属性来判断当前分区是不是属于自己的然后才进行操作。这样设计的目的是为了避免在多系

统同时存在的时候,A操作系统把B操作系统的系统分区进行了不应该的读写操作,导致B操

作系统无法正常工作。

更具体的说明,可参考《TinaLinux存储管理开发指南》。

版权所有©珠海全志科技股份有限公司。保留一切权利28

文档密级:秘密

9

Tinakernel定制开发

9.1概述

本章节简单介绍kernel基本配置、功能裁剪、常用命令的使用,帮助客户了解Tina平台linux

内核,为内核定制开发提供基础。

目前TinaSDK共有4版linuxkernel,分别是linux-3.4、linux-3.10、linux-4.4、linux-

4.9,分别在不同硬件平台上使用,客户拿到SDK需要根据开发的硬件平台核对内核信息。

9.2代码路径

TinaSDK/

├──...

├──linux-3.10

├──linux-3.4

├──linux-4.4

└──linux-4.9

9.3模块开发文档

详阅BSP开发文档,文档目录包括常用内核模块使用与开发说明。

9.4内核配置

客户在定制化产品时,通常需要更改linux内核配置,在TinaSDK中,打开内核配置的方式如

下,

croot

makekernel_menuconfig

执行完后,shell控制台会跳出配置菜单。如下图所示,

版权所有©珠海全志科技股份有限公司。保留一切权利29

文档密级:秘密

图9-1:TinaLinux内核配置菜单

版权所有©珠海全志科技股份有限公司。保留一切权利30

文档密级:秘密

10

Tina系统定制开发

10.1应用移植

在TinaLinuxSDK中一个软件包目录下通常包含如下两个目录和一个文件:

package/<分类>/<软件包名>/Makefile

package/<分类>/<软件包名>/patches/[可选]

package/<分类>/<软件包名>/files/[可选]

其中,

patches保存补丁文件,在编译前会自动给源码打上所有补丁

files保存软件包的源码,在编译时会对应源码覆盖源码中的源文件

Makefile编译规则文件,

10.1.1Makefile范例

该Makefile的功能是

软件源码的准备,编译和安装的过程,提供给TinaLinux识别和管理软件

包的接口,软件的编译逻辑是由软件自身的Makefile决定,理论上和该Makefile(该Makefile

只执行make命令和相关参数)无实质关系。

版权所有©珠海全志科技股份有限公司。保留一切权利31

文档密级:秘密

详注:

1.如果是开源软件,软件包版本建议与下载软件包的版本一致。

2.以PKG开头的变量主要告诉编译系统去哪里下载软件包。

5sum用于校验下载下来的软件包是否正确,如果正确,在编译该软件的时候,就会在PKG_BUILD_DIR下找到该软件包

版权所有©珠海全志科技股份有限公司。保留一切权利32

文档密级:秘密

的源码。

e/:用来指定该Package的名字,该名字会在配置系统中显示。

5.使用依赖包的名字来指定依赖关系,如果是扩展包,前面添加一个”+”号,如果是内核版本依赖使用@LINUX_2_

6.如果该值为1,该包将不会出现在配置菜单中,但会作为固定编译,可选。

7.在开源软件中一般用来生成Makefile,其中参数可以通过CONFIGURE_VARS来传递。

8.在开源软件中一般相当于执行make,其中有两个参数可以使用:MAKE_FLAGS和MAKE_VARS。

9.内置的几个关键字如下:

INSTALL_DIR相当于install-dm0755

INSTALL_BIN相当于install-m0755

INSTALL_DATA相当于install-m0644

INSTALL_CONF相当于install-m0600

10.该Makefile的所有define部分都是为该宏的参数做的定义.上层Makefile通过调用此宏进行编译。

10.1.2自启动设置

在TinaLinux中支持两种格式的初始化脚本,一种是busybox式或者sysV式的初始化脚本,

一种是procd式的初始化脚本。一般我们把由初始化脚本启动的应用叫做服务。

初始化脚本以shell脚本的编程语言组织,shell脚本作为基础知识在此不展开说明。一般情况

下,初始化脚本源码保存在软件的files目录,且后缀为“.init”,例如:

tina/package/system/fstools/files/

在Makefile的install中把初始化脚本安装到小机端的/etc/init.d中,例如:

definePackage/block-mount/install

$(INSTALL_DIR)$(1)/etc/init.d/

$(INSTALL_BIN)./files/$(1)/etc/init.d/fstab

endef

10.1.2.1调用自启动脚本

•手动调用方式在启动的时候会有太多的log,且log信息已被logd守护进程收集,不利于我们

调试初始化脚本,此时可通过小机端的命令行手动调用的形式来调试,例如:

root@TinaLinux:/#/etc/init.d/fstabstart

10.1.2.2sysV格式脚本

sysV式的初始化脚本保存在小机端的/etc/init.d/目录下,实现开机自启动。下例以最小内容的初

始化脚本作示例讲解,核心是实现start/stop函数:

版权所有©珠海全志科技股份有限公司。保留一切权利33

文档密级:秘密

#!/bin/sh/etc/

#Examplescript

#Copyright(C)

START=10

STOP=15

DEPEND=xxxx

start(){

#commandstolaunchapplication

}

stop(){

#commandstokillapplication

}

注意:

START=10,指明开机启动优先级(序列)[数值越小,越先启动],取值范围0-99。

STOP=15,指明关机停止优先级(序列)[数值越小,越先关闭],取值范围0-99。

DEPEND=xxxx,指明初始化脚本会并行执行,通过此项配置确保执行的依赖。

在中提供了一个init脚本的功能模板,模板中包括如下几个组成部分:

名称

start

stop

reload

enable

disable

属性

必须实现

必须实现

可选实现

可选实现

可选实现

功能

启动一个服务

停止一个服务

重启一个服务

重新加载服务

禁用服务

在shell里面可以使用如下的命令来操作相关的服务。

$root@TinaLinux:/#/etc/init.d/exmplerestart|start|stop|reload|enable|disable

10.1.2.3procd格式脚本

以下例的初始化脚本作示例讲解,主要是实现函数start_service:

#!/bin/sh/etc/

USE_PROCD=1

PROG=xxxx

START=10

STOP=15

DEPEND=xxxx

start_service(){

procd_open_instance

procd_set_paramcommand$PROG-f

版权所有©珠海全志科技股份有限公司。保留一切权利34

文档密级:秘密

......

procd_close_instance

}

详细的介绍可以参考:/inbox/procd-init-scripts。

10.2应用调试

新添加的软件默认配置为不使能,此时需要手动配置使能软件包。通过在tina的根目录执行

makemenuconfig进入软件包的配置界面:

图10-1:应用配置主界面

软件包的所在路径与软件包的Makefile中的定义有关,以fstools为例,在Makefile中定义

为:

definePackage/fstools

SECTION:=base

CATEGORY:=Basesystem

DEPENDS:=+ubox+USE_GLIBC:librt+NAND_SUPPORT:ubi-utils

TITLE:=OpenWrtfilesystemtools

MENU:=1

endef

版权所有©珠海全志科技股份有限公司。保留一切权利35

文档密级:秘密

此时,只需要在menuconfig界面中进入Basysystem即可找到fstools的软件包。

图10-2:软件包所在界面

前缀符号含义:

[*]或<*>:编译进入SDK

[]或<>:不包含

支持操作:

Y或y:选择包含

N或n:取消选择

10.3应用编译

详见重编应用章节。

10.4应用安装

1.获取安装包

安装包一般位于目录:

版权所有©珠海全志科技股份有限公司。保留一切权利36

文档密级:秘密

tina/out/<方案>/packages/base

安装包命名格式为:

<应用名>_<应用版本>-<应用释放版本>_

2.安装应用包

通过adb推送安装包到小机:

$adbpush<安装包路径><推送到小机路径>

安装应用包:

$opkginstall<安装包路径>

10.5分区与挂载

•升级分区

分区

boot分区

rootfs分区

recovery分区

extend分区

功能

存内核镜像

基础系统镜像分区,包含/lib,/bin,/etc等

存放恢复系统镜像,仅大容量方案有,详见OTA文档

存放恢复系统镜像及rootfs的usr部分,仅小容量方案有,详见OTA文档

•不升级分区

分区

private分区

misc分区

UDISK分区

overlayfs分区

功能

存储SN号分区

系统状态、刷机状态分区

用户数据分区,一般挂载在/mnt/UDISK

存储overlayfs覆盖数据

•默认挂载点

版权所有©珠海全志科技股份有限公司。保留一切权利37

文档密级:秘密

分区

/dev/by-name/boot

/dev/by-name/boot-res

/dev/by-name/UDISK

/dev/mmcblk0或/dev/mmcblk0p1

/dev/by-name/rootfs_data

挂载点

/boot

/boot-res

/mnt/UDISK

/mnt/SDCARD

/overlay

备注

用户数据分区

Tf卡挂载点

存储overlayfs覆盖数据

版权所有©珠海全志科技股份有限公司。保留一切权利38

文档密级:秘密

著作权声明

版权所有©2021珠海全志科技股份有限公司。保留一切权利。

本文档及内容受著作权法保护,其著作权由珠海全志科技股份有限公司(“全志”)拥有并保留

一切权利。

本文档是全志的原创作品和版权财产,未经全志书面许可,任何单位和个人不得擅自摘抄、复

制、修改、发表或传播本文档内容的部分或全部,且不得以任何形式传播。

商标声明

、、、(不完全列

举)均为珠海全志科技股份有限公司的商标或者注册商标。在本文档描述的产品中出现的其它商

标,产品名称,和服务名称,均由其各自所有人拥有。

免责声明

您购买的产品、服务或特性应受您与珠海全志科技股份有限公司(“全志”)之间签署的商业合

同和条款的约束。本文档中描述的全部或部分产品、服务或特性可能不在您所购买或使用的范围

内。使用前请认真阅读合同条款和相关说明,并严格遵循本文档的使用说明。您将自行承担任何

不当使用行为(包括但不限于如超压,超频,超温使用)造成的不利后果,全志概不负责。

本文档作为使用指导仅供参考。由于产品版本升级或其他原因,本文档内容有可能修改,如有变

更,恕不另行通知。全志尽全力在本文档中提供准确的信息,但并不确保内容完全没有错误,因

使用本文档而发生损害(包括但不限于间接的、偶然的、特殊的损失)或发生侵犯第三方权利事

件,全志概不负责。本文档中的所有陈述、信息和建议并不构成任何明示或暗示的保证或承诺。

本文档未以明示或暗示或其他方式授予全志的任何专利或知识产权。在您实施方案或使用产品的

过程中,可能需要获得第三方的权利许可。请您自行向第三方权利人获取相关的许可。全志不承

担也不代为支付任何关于获取第三方许可的许可费或版税(专利税)。全志不对您所使用的第三

方许可技术做出任何保证、赔偿或承担其他义务。

版权所有©珠海全志科技股份有限公司。保留一切权利39


本文标签: 编译 配置 系统