A20_LinuxBSP使用说明书v2.1_20140619
更新时间:2023-04-11 05:37:01 阅读量: 实用文档 文档下载
- 魅族a20使用说明推荐度:
- 相关推荐
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-1-A20LinuxBSP 使用说明V 2.120120144-0606--19C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-2-Revision History
Version
Date Changes compared to previous issue V1.0
2013-03-15初建版本V2.0
2013-12-27增加boot2.0去掉boot1.0部分v2.12014-06-19更正源码目录结构,修正固件打包的描述。C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-3-目录
1.概述...........................................................................................................................42.开发环境准备.. (5)
2.1.硬件资源 (5)
2.2.软件资源........................................................................................................53.目录结构介绍.. (6)
3.1.buildroot (6)
3.2.linux-3.4 (7)
3.3.Bootloader (8)
3.4.tools.................................................................................................................84.内部工作机制...........................................................................................................95.编译代码.................................................................................................................106.打包固件.. (11)
6.1.自动打包 (11)
6.2.定制Nand 分区 (12)
6.3.固件烧写......................................................................................................137.定制根文件系统.. (14)
7.1.修改Nand Flash 的rootfs...........................................................................148.集成软件包. (15)
8.1.源代码包 (15)
8.2.二进制包 (17)
8.3.可执行文件..................................................................................................179.附录. (18)
9.1.关于驱动开发 (18)
9.2.在线帮助文档 (18)
10.Declaration.............................................................................................................19C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-4-1.概述
本文档用于介绍全志科技A20芯片的Linux BSP 的组织结构、内部机制以及简单用法。该文档的目的用于指导用户如何定制和使用该BSP 。C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-5-2.开发环境准备
2.1.硬件资源
?
A20IC-Based SOC ;?
运行LINUX 的电脑一台(用于编译和烧写);?串口线,适配的电源和适配的USB 线。
2.2.软件资源
?编译载体建议安装Red Hat Enterprise Linux Server release 6.0(64bit)或者Ubuntu 10.04/12.04(64bit)。要求至少安装gcc,ncurse,bison,autoconf,wget,patch,texinfo,zlib,dos2unix 软件包;
?我们使用的交互编译工具为arm-linux-gnueabi-gcc-4.6.3,内置于BSP 中。C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-6-3.目录结构介绍
BSP 主要由Buildroot,Linux kernel(版本3.4)和Bootloader (basic_boot 和u-boot )组成。其中Buildroot 主要用于制作Linux 根文件系统,Linux Kernel 是BSP 的核心,Bootloader 用于引导Linux Kernel 和量产。
3.1.buildroot
它的主要作用是
?管理包之间的依赖关系;
?安装ARM 交叉工具链;
?制作根文件系统,可以包含strace,directfb,oprofile 等非常丰富的应用软件和测试软件;
?管理BSP 的编译。
I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-7-3.2.linux-3.linux-3.4
4Linux-3.4位于lichee/linux-3.4目录结构如下:
以上目录结构跟标准的Linux 内核是一致的,除了多一个modules 目录。modules 目录是我们扩展用来存放没有跟内核的menuconfig 集成的外部模块
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-8-的地方。目前放了example,nand ,mali 这3个外部模块,其中example 是示例用的,mali 是GPU 驱动,nand 目录用来存放nand 驱动。
3.3.Bootloader
Bootloader 位于lichee/brandy 目录中目录结构如下。
build .sh :编译脚本
u-boot-2011.09:是目前使用的u-boot 的位置
3.4.tools
该目录为打包目录,与打包相关的脚本和工具,以及BSP 的配置和都放在该F I D E
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-9-目录中。
C O N F I
D
E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.
-10-
4.内部工作机制
以sun7i 为例子
lich ee /b u ild.sh -p su
ake
ild.s h
t oolchain
加入到P A TH 环境变量
u x-3.4/script/b u ild _su n 7i.s h
n fig 整root fs ,整理输出文件,复制到相应位置用lin u x 打包工具生成最终件包
图3.1自动化编译流程图
注意:在执行build.sh 脚本时需要指定参数,具体可以参考./build.sh -h 输出
C O
N F
I D
E N T I
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-11-5.编译代码
在lichee 目录下,键入指令
$./build .sh -h
可以得到如下的编译帮助信息:
帮助信息解释:
-h 获取帮助信息
-p 编译平台选择,sun7i --linux 编译,sun7i_android --android 编译-m 指定编译目录,可选kernel ,buildroot ,uboot 。缺省为3个一起编译-i 编译输出到单独的目录
如果是编译linux 固件:
$./build .sh -p sun 7i _linux
编译成功输出:
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-12-
C O N F I
D
E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-13-6.打包固件
打包是指将我们编译出来的bootloader ,内核,和根文件系统一起写到一个镜像文件中,这个镜像文件也叫固件。然后可以将这个镜像写到nand flash 或是sd 卡上,从而启动我们的系统。
6.1.自动打包
编译完成后便可打包(打包android 具体参见android 的相关文档),在Lichee 目录下键入:
$./build .sh pack
L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-14-
假如添加了自己的方案板,最后一个选项中就会出现新方案板的名称。生成的image 文件在lichee/tools/pack_brandy 目录.
例如:lichee/tools/pack_brandy/sun7i_linux_evb-v10.img
C O N F I
D
E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-15-6.2.定制Nand 分区
(1)规划磁盘分区
分区,是指存储设备(通常是nandflash 或者sdcard)上,根据逻辑关系划分的空间。习惯上,分区的编号从0开始,代表第一个分区,1代表第二个分区,以此类推。这项规则类似于PC 上的硬盘分区,如图X 所示。
图6.1分区示意图
图6.1表示,存储设备上一共有A-H 共8个分区,其中,分区A 的起始位置从存储设备的头部开始,是第一个分区,分区H 占用了尾部,是最后一个分区。规划分区,是指在固件包中指明存储设备上的分区个数,并由用户自己定义分区属性。当烧写固件包后,存储设备上就会存在这样由用户定义的分区。用户可以通过这样的规划,修改图6.1的分区,成为如下的情况:
图6.2修改后的分区示意图
通过规划分区可以看出,B 分区的容量减小,C 分区容量增大,同时减少了H 分区。要在存储设备上规划分区,需要按照如下的步骤做(以ref-001方案为例):打开lichee/tools/pack_brandy/chips/sun7i/configs\android(linux)\ref-001目录下的sys_partition.fex 文件;分区配置存放在sys_partition.fex 脚本中,它里面描述了分区信息。分区起始以[partition_start]为标志,后面连续存放每个分区的信息。当遇到非分区信息或者结束,认为分区的配置结束。
O N F I D E I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-16-?
partition :表示这是一个分区,每个分区配置都以它为开始;?
name :分区名称,最大16个字符;?
size :分区大小,以扇区为单位;当为0时,此分区无法操作;?
downloadfile :下载文件名称,可以带相对路径或者绝对路径,可以有后缀或者无后缀;当分区不需要烧录文件时,此项留空或者直接删除此项;?user_type :默认值为0x8000,如果为0xc000打开掉电保护;
分区个数根据配置的patition 项为标准。比如下面配置了4项patition ,那么代表4个分区信息,每个分区信息由parttition 进行标志。
6.3.固件烧写
请参考PhoenixSuit 软件自带的《PhoenixSuit 烧写使用说明文档.pdf 》C O N F
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-17-7.定制根文件系统
7.1.修改Nand Flash 的rootfs 1)复制一份现有的配置文件$cd lichee/buildroot
$cp configs/sun7i_defconfig .config 2)进入buildroot 界面进行配置$make ARCH =arm menuconfig 上述命令后,显示下面的界面图7.1linux 内核make menuconfig 界面配置完后保存,然后到lichee 目录下重新运行build.sh 脚本。编译过程中,如果有软件包缺失,则buildroot 会自动从网上下载,而此时如果编译机器无法连接网络,则需要从网上下载相应版本的软件包,把软件包复制到buildroot/dl 目录下面。C O N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-18-8.集成软件包
8.1.源代码包
对于用户态的应用程序、动态库和静态库应该集成到buildroot 中,在buildroot/packages 下面每个目录对应一个包。关于如何在buildroot 中集成软件包的说明,请参考3cf89376bb68a98271fefa84/docs 。
举一个简单的例子:
要在buildroot 下添加一个源码包,首先要在buildroot/package 目录下新建一个目录,目录名称为软件包的名称,目录中,再在目录中添加一个config.in 文件和一个xxxx.mk 文件(xxxx 为软件包的名称)。这2个文件的具体写法,参见buildroot/package 目录下的其他的软件包,或者官方网站(软件源码包分为网上的官方软件包和自己编写的源码包,这2类包的config.in 文件形式是一致的,但是.mk 文件的书写会有较大区别,假如是后者,请参见fsck-msdos 包中的.mk ,前者请参见argus 包中的.mk )。做完以上操作以后,还需要在buildroot/package
注意:假设要添加的软件包的名称为panlong 的话。至于段代码添加的位置由具体情况而定,添加位置影响执行make menuconfig 是软件包对应选项的位置。
I D I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-19-
"package/panlong/Config.in"添加到了menu "Package Selection for the target"菜单下,所以在我们执行make menuconfig 后:
图7.2Buildroot make menuconfig 界面
做如图的选择,按下enter 键:
C O
N F I D E
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-20-图7.3package selection for the target 子菜单界面
就可以看到我们添加的软件包了。
注意:以上只是演示,实际添加时尽可能添加到子菜单中,以便于软件包的管理。
对于内核驱动,应该尽量考虑放到linux-3.4/drivers 下面,如果无法直接跟kernel 的menuconfig 集成,则应该放在linux-3.4/modules 下面。
能够和menuconfig 集成的软件包,其添加方法参见kconfig 相关资料。无法与menuconfig 集成的软件包,用modules 下的mali 来进行添加举例:首先,在modules 目录下建立mali 包的子目录,然后为这个包编辑一个总的makefile ,这里可能会用到4个参数:
这些参数的定义都在linux-3.4/scripts/build_XX.sh 中定义(xx 表示你编译时选择的-p 后的参数,如sun7i 等)
N F I D E N T I A L
A20LinuxBSP 使用说明
Copyright ?Allwinner Technology.All Rights Reserved.-21-完成makefile 的编辑后,为了让系统整体编译时让其被编译进去,还需在linux-3.4/scripts/build_XX.sh 文件的build_modules()函数中添加对nand ,wifi ,eurasia_km gpu 软件包的编译规则,以及在clean_modules()函数中添加清除规则。(具体写法可以仿照nand )。
假如添加的项目是默认打开的,那么就需要用编辑好的.config 文件替换掉对应的defconfig 。如sun7i 的,我们就可以把buildroot 下的.config 重命名为sun7i_defconfig ,然后保存到buildroot\configs 文件夹下。
8.2.二进制包
同上,只是忽略掉编译过程。可以参考buildroot/packages/mali-3d 。
8.3.可执行文件
假如需要添加的是一些可执行文件或者是类似ls/cd 等指令,则可以直接添加到lichee\out\linux\common\buildroot\output\target 中(前提是已经完全编译过一次),指令直接添加到bin 、sbin 或者usr 下的bin 、sbin 中,其他可执行文件可以添加在希望指定的任意文件夹下。C O N F I D E N T I A L
正在阅读:
A20_LinuxBSP使用说明书v2.1_2014061904-11
《综合技能训练》技术文档05-04
初中班级规章制度03-16
工厂车间主任年度工作总结范文03-03
项目建议书投资估算费用标准及计算方法01-21
【优质】财政局201X上半年工作总结和下半年工作思路-精选word文档 (4页) -12-08
小学六年级数学应用题分类总复习大全04-13
最新班主任经验交流材料(多篇)03-08
城的美文11-03
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 说明书
- LinuxBSP
- 20140619
- 使用
- 2.1
- 20
- 室内普通灯具和专用灯具安装作业指导书(新版)
- 中医考研方剂复习重点总结
- 清真食品项目可行性研究报告方案(可用于发改委立项及银行贷款+20
- 三角形中位线定理优秀教案
- 固体物理第一二章习题解答
- 洁肤,精选你10款卸妆佳品
- 高考语法填空考点总结
- 成长的烦恼作文600字初一5篇
- 宝马常见车型发动机配备与机油加注量
- 最新你好2022再见2022的跨年朋友圈早安说说80句
- 2022年市金融办年终工作总结
- 江苏罡阳股份有限公司
- 甘利欣注射液联合硫普罗宁治疗中暑患者肝损害疗效评价_宋淑玲
- 小学生清明节上坟演讲稿范文
- mooc零基础学习java语言习题答案
- 第26天 完形填空专练、第27天 语法填空专练-江苏省启东中学高
- 【高中英语精品试卷】广西柳州铁路第一中学2015-2022学年高一12
- 新版模式识别与智能系统考研院校排名及考研难度分析
- 2022年山东财经大学中国税制(同等学力加试)复试仿真模拟三套题
- 开放英语I(1)期末复习资料