外部公开
A40i-linux 系统开发说明
V1.2
2019-02-10
Copyright © 2019 by Allwinner. All rights reserved
Page 1 of 53
全志科技版权所有,侵权必究
Revision History
Version
V1.0
V1.1
V1.2
Date
2018-08-01
2018-10-10
2019-02-10
Changes compared to previous issue
初建版本
文档修改
外部公开
Copyright © 2019 by Allwinner. All rights reserved
Page 2 of 53
全志科技版权所有,侵权必究
目录
外部公开
1. 概述................................................................................................................................5
2. SDK 简介........................................................................................................................6
3. 软件架构........................................................................................................................7
3.1. buildroot-201611..........................................................................................................7
3.2. linux-3.10..................................................................................................................... 8
3.3. tools..............................................................................................................................9
3.4. brandy.........................................................................................................................10
3.5. doc..............................................................................................................................10
4. 系统调试......................................................................................................................11
4.1. 串口登录 A40i 命令行.............................................................................................11
4.2. 使用 adb 调试........................................................................................................... 11
4.3. GDB 调试工具.......................................................................................................... 12
5. sdk_lib 库......................................................................................................................13
5.1. sdk_lib 库简介...........................................................................................................13
5.2. sdk_lib 库编译...........................................................................................................13
5.3. sdk_lib 库使用...........................................................................................................13
5.3.1. dvrfactory 类 API............................................................................................13
5.3.2. 内存相关 API................................................................................................ 19
6. QT................................................................................................................................. 26
6.1. Qt 应用介绍..............................................................................................................26
6.1.1. Launcher..........................................................................................................26
6.1.2. MediaUI.......................................................................................................... 27
6.1.3. CameraUI........................................................................................................28
6.1.4. phoneMachineConnect....................................................................................29
6.1.5. Carlife..............................................................................................................29
6.2. QT 库编译................................................................................................................. 30
6.3. QT 应用编译............................................................................................................. 31
6.3.1. 编译全部 demo..............................................................................................31
6.3.2. 编译单个 demo..............................................................................................32
7. SDK demo 简介............................................................................................................33
7.1. sdktest.........................................................................................................................34
7.1.1. 水印接口使用................................................................................................35
7.2. carbit...........................................................................................................................35
7.3. G2dDemo...................................................................................................................35
7.4. recordTest...................................................................................................................35
7.5. xplayerdemo...............................................................................................................36
8. Demo 的调试更新........................................................................................................37
9. 系统开发......................................................................................................................38
9.1. U-Boot 开发..............................................................................................................38
9.2. Kernel 开发...............................................................................................................38
9.2.1. DTS 和 sysconfig.fex 介绍............................................................................38
9.2.2. 多 fb 支持...................................................................................................... 38
Copyright © 2019 by Allwinner. All rights reserved
Page 3 of 53
全志科技版权所有,侵权必究
外部公开
9.2.3. 内核模块开发................................................................................................39
9.3. Buildroot 开发........................................................................................................... 40
9.3.1. Buildroot 开发基础....................................................................................... 40
9.3.2. 集成软件包....................................................................................................40
9.3.3. 定制分区........................................................................................................43
9.3.4. 根文件系统定制............................................................................................50
10. 附录............................................................................................................................52
10.1. 在线帮助文档.........................................................................................................52
11. Declaration.................................................................................................................. 53
Copyright © 2019 by Allwinner. All rights reserved
Page 4 of 53
全志科技版权所有,侵权必究
1.概述
本文档用于介绍全志科技 A40i 芯片的结构、内部机制以及简单用法。该文档的目
的用于指导用户如何定制和使用该 SDK。SDK 可以联系全志科技的销售人员或 FAE 统
一接口负责人获取。
外部公开
Copyright © 2019 by Allwinner. All rights reserved
Page 5 of 53
全志科技版权所有,侵权必究
外部公开
2. SDK 简介
A40i SDK 是基于 Linux Kernel,针对全志科技 A40i 芯片的软件包。包含 uboot、linux
kernel 和 buildroot。对于特定应用,比如硬件编解码部分,SDK 提供了对应的 API 以及
演示程序。
本文将详细介绍 SDK 的代码结构,开发环境配置、编译烧录方法、模块开发方法、
调试测试流程,并提供主要模组的客制化开发向导。用户基于该 SDK,可以有效地实现
系统定制和应用移植开发。
如下图所示,开发者可以遵循以下开发流程,在快速构建 AW Buildroot Linux 系统
的开发环境和编译代码。
下面将简单介绍各流程:
确定系统需求:在下载代码和编译前,需先确保开发设备能够满足需求,包括开发
平台的硬件资源,软件系统,工具链等。目前 SDK 只支持在 Linux 操作系统环境
下编译,只提供 Linux 环境下的工具链支持,Windows 等其他系统不支持。
构建编译环境:介绍开发平台需要安装的系统环境和各种软件包和工具, 详见[开
发环境配置]章节。
选择平台方案:在开发过程中,开发者需要根据自己的需求,选择对应的平台方案。
获取源代码:选定平台方案后, 需要安装相关工具用于批量下载源代码。可以联系
全志科技的销售人员或 FAE 统一接口负责人获取。
根据需要定制系统:开发者可以根据使用的开发平台、产品定义,定制 U-Boot、
Kernel 及 Buildroot。详见[系统开发]章节。
编译编译与打包固件:获取源代码后,选择产品及初始化相关的编译环境,而后执
行编译命令,包括整体或模块编译以及编译清理等工作。详见[编译代码和打包固件]
章节。
烧录并运行:生成镜像文件后,将介绍如何烧录镜像并运行在开发平台上。详见[固
件烧写]章节。
Copyright © 2019 by Allwinner. All rights reserved
Page 6 of 53
全志科技版权所有,侵权必究
3.软件架构
wing BSP 主要由 Brandy(uboot2014)、Buildroot(版本 2016.11)、 Linux kernel(版本
3.10)三大部分组成。其中 Brandy 包含 uboot2014,Buildroot 负责 ARM 工具链、应用程
序软件包、Linux 根文件系统生成;Linux Kernel 是 wing BSP 的核心部分。
外部公开
本章依次介绍代码各目录的内容和功能。
.
├── brandy
├── buildroot-201611
├── doc
├── linux-3.10
├── out
├── tools
3.1. buildroot-201611
管理包之间的依赖关系
生成 ARM 交叉工具链
制作根文件系统,可以包含 strace, directfb, oprofile,Qt,音视频编解码,MiniGUI 等
非常丰富的应用软件和测试软件
生成最终用于烧写的固件包
目录结构如下
├── arch
├── board
├── boot
├── CHANGES
├── Config.in
├── configs
├── COPYING
├── dl
├── docs
├── external-packages
├── fs
├── linux
├── Makefile
├── support
├── package
├── README
├── scripts
Copyright © 2019 by Allwinner. All rights reserved
Page 7 of 53
全志科技版权所有,侵权必究
├── target
└── toolchain
外部公开
其中 configs 目录里存放预定义好的配置文件,比如我们的 sun8i_defconfig,dl 目
录里存放已经下载好的软件包,scripts 目录里存放 buildroot 运作的代码,mkcmd.sh,
mkcommon.sh,mkrule 和 mksetup.sh 等编译脚本。
target 目录里存放用于生成根文件系统的一些规则文件,该目录,对于代码和工具
的集成非常重要。
├── extp
├── user_rootfs_build.sh 把其他三个目录的东西拷贝到 out 目录相应位置
├── user_rootfs_extra 制作更文件系统后会把里面的文件覆盖进去
└── user_rootfs_misc
对于我们来说最为重要的是 package 目录,里面存放了将近 3000 个软件包的生成
规则,我们可以在里面添加我们自己的软件包或者是中间件。更多关于 buildroot 的介绍,
可以到 buildroot 的官方网站 http://buildroot.uclibc.org/获取。
3.2. linux-3.10
Linux 内核源码目录,结构如下
├── android
├── arch
├── block
├── build.sh
├── COPYING
├── CREDITS
├── crypto
├── Documentation
├── drivers
├── firmware
├── fs
├── include
├── init
├── ipc
├── Kbuild
├── Kconfig
├── kernel
├── lib
├── linaro
├── MAINTAINERS
├── Makefile
├── mm
├── modules
├── net
Copyright © 2019 by Allwinner. All rights reserved
Page 8 of 53
全志科技版权所有,侵权必究