全志A33 pack机制解析
全志A33在编译好系统后,(zImage-boot.img,rootfs-ext4),采用的是./build.sh pack打包为一个img文件进行烧录。
因此,可以在打包(./build.sh pack)的输出信息,查找相关的pack制作过程。
一、根据终端输出信息,查找制作来源
在制作时,根据输出信息,查找
根据刚开始的输出的几条开始查找,在此通过copying configs file查找
grep 'copying configs file' * -r
找到有该字段的文件在dragonboard/tools/pack/pack文件中 打开该文件解析
浏览文件,可以知道,该文件为打包(./build.sh pack)脚本文件,在文件中,声明了使用模块和执行路径:
export PATH= $ {TOOLS_DIR}/mod_update:${TOOLS_DIR}/eDragonEx
二、pack文件解析
1、pack实现功能
主要实现三部分功能:
do_prepare:制作前的准备工作,重命名,复制,粘贴
do_common:制作uboot,boot-resource.ini文件
do_pack_dragonboard: 执行pctools中相应的命令,制作成img文件
do_finish:制作完成,退出,提示用户
整体pack命令由各自函数功能展开
我的开发板第三项,使用的是else,do_pack_${PACK_PLATFORM}
对应的是,do_pack_dragonboard()
2、pack文件中各函数功能
1)、function do_prepare
(1)、创建out目录、将tools_file_list中的文件拷贝到out目录
(2)、拷贝相关配置文件到out目录
(3)、拷贝boot资源文件
(4)、重命名 tools/pack/out/目录下的*.fex文件
(5)、awk_db_emmc制作sys_config.fex,支持SD卡启动
(6)、修改out/boot-resource.ini ,image.cfg中的文件信息
根据配置与选择的平台信息,给生成的img镜像文件命名
2)、function do_common
(1)、将fex文件更新为dos格式,执行模块“script”命令
unix2dos:将文件格式更新为dos格式
(2)、将fex文件,写至boot-resource分区
dos2unix:将DOS格式文本文件转换成Unix格式
(3)、更新boot文件参数,带NAND,sdcard,fes读写,启动
(4)、生成split_xxxx.fex文件
(5)、生成env分区(执行的else部分)
uboot优先使用env分区(env.cfg)中的环境变量,如果没有env分区,则使用默认环境变量
通过上面的操作,可以执行dragon image.cfg sys_partition.fex生成固件,即do_pack_dragonboard函数
3)、function do_pack_dragonboard
打包内核和rootfs
(1)、打包boot.img
boot.img由内核生成,来源于linux-3.4/output/目录
(2)、boot.img打包方法
查询编译输出信息,搜索“Copy boot.img to output directory”字符查找相关信息
grep 'Copy boot.img to output directory' * -r
查询到在 linux-3.4/scripts/目录下 build.sh文件中有相关字符,打开文件
vi ~/workspace/a33/dragonboard/linux-3.4/scripts/build.sh
找到相应的执行命令,mkbootimg文件,在~/workspace/a33/dragonboard/tools/pack/pctools/linux/android/目录下。
${MKBOOTIMG}路径:
(3)、boot.img打包方法regen_rootfs_cpio解析
进入regen_rootfs_cpio()函数
linux-3.4/scripts$
vi build.sh
01、首先进入output目录
如果在Linux目录的下级目录有linux-3.4/scripts/build_rootfs.sh文件存在,执行下面的命令,传递参数 $1 = e $2 = …/rootfs.cpio.gz
linux-3.4/scripts$
vi build.sh
vi build_rootfs.sh
02、当传递的参数为e时,执行extract_rootfs
进入linux-3.4/scripts/目录,当传递的参数为e时,执行extract_rootfs,为c时,执行generate_rootfs。
linux-3.4/scripts$
vi build_rootfs.sh
fakeroot:模拟 root 权限
gzip -dc:解开名为.gz的压缩文件
cpio -i : --extract 执行copy-in模式,备份文件
linux-3.4/scripts$
vi build_rootfs.sh
03、当传递的参数为C时,执行generate_rootfs
linux-3.4/scripts$
linux-3.4/scripts$
在build.sh中执行…/scripts/build_rootfs.sh传递参数 c和rootfs.cpio.gz,build_rootfs.sh中的执行函数generate_rootfs,将build_rootfs.sh传递的参数$2(rootfs.cpio.gz),递归给了函数generate_rootfs使用,作为generate_rootfs的 $1 参数使用。
(4)、打包image文件
将编写好的kernel文件制作成boot.img文件
linux-3.4/scripts$
vi build.sh
到此生成boot.img文件
(5)、打包rootfs.ext4文件
rootfs由buildroot生成。
ln -s ${LICHEE_OUT}/rootfs.ext4 rootfs.fex
经过上面的操作后,即可执行打包固件操作, dragon image.cfg sys_partition.fex
dragon image.cfg sys_partition.fex
4)、function do_finish()
三、全志固件img打包,快速更新系统
之前使用的其他平台的设备通常是将luboot、kerne、rootfs编译好后、分开烧写到flash中,更新一个完整的系统时,会需要烧写多个bin文件。把这些整合到一个固件文件中,在烧写到flash时自动去固件里面搜寻需要的内容,这样对用户更透明,操作更简便(做完各个板块后,打包)。
全志A33 pack机制解析相关推荐
- 20150906全志a33上调通rtl8188eus的过程(sina33)
20150906全志a33上调通rtl8188eus的过程(sina33) 使用SINA33的开发板,测试USB接口的WIFI:rtl8188eus. rtl8188eus直接接到SINA33开发板的 ...
- 基于全志A33开发板linux系统移植学习记录(Boot0)
基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...
- 全志A33系统搭建编译及烧录
目标平台:全志A33 工作平台:Ubuntu 12.04.5 uboot版本:u-boot-2011.09 linux版本:Linux-3.4 交叉编译环境版本:4.5.1 一.全志A33交叉编译环境 ...
- 全志A33学习笔记及问题汇总
全志A33学习笔记及问题汇总 全过程: 1.编译环境配置 首次编译,需要导入vstar方案的内核配置,进入linux3.4目录, 如果开启WIFI需修改a33_vstar_defconfig 1294 ...
- 全志A33开发板烧录Image到EMMC教程
全志A33开发板烧录Image到EMMC教程 当前环境: Manjaro Linux 软件: sunxi-livesuite 1. 安装烧录软件 $ yay -S sunix-livesuite-gi ...
- 全志A33平台调通AP6181(分色排版)
全志A33平台调通AP6181 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/22 20:15 版本:V1.0 1.(可选,在设置中不显示:蓝牙 ...
- 全志A33之添加电容触摸GT911驱动
全志A33之添加电容触摸GT911驱动 基于锐尔威视的A33开发板及提供的开发包,仅供参考. 开发板说是支持GT911,其实是不支持的,得修改驱动及配置,启动文件. 一. 修改配置文件 /h ...
- 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析
InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计.由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxD ...
- Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子
在前文<Apache Hook机制解析(上)--钩子机制的实现>和<Apache Hook机制解析(中)--细节讨论>的基础上,我们对Apache的钩子机制已经有了较多的了解, ...
最新文章
- Please select Android SDK
- bigdecimal类型数据的min方法
- vc6.0开发环境两个辅助工具
- FAX modem和传真协议简介
- 【NLP】BERT大魔王为何在商业环境下碰壁?
- maskrcnn还可以加网络吗_桃子加蜂蜜可以榨汁吗?桃子和蜂蜜可以一起吃吗?原来可以这样吃...
- 探索Julia(part1)--Julia初识
- HBase权威指南 高清中文版 PDF(来自linuxidc)
- leetcode —— 19. 删除链表的倒数第N个节点
- 当前页面跳转网页,新打开和在本页面打开
- windows bat打印机打印测试页
- 华为freelance耳机充不进电修理
- 让你彻悟人生的555句金玉良言
- 关于EL表达式获取参数的两种方法
- Laravel OAuth2 (三) ---使用 services 和 facades
- 小米已成国产手机标杆,海外出货量碾压华为OV
- 毛球修剪器方案开发的工作原理和构成
- 在linux上安装Scala详细步骤
- 怎么将流程图转化为N-S图(盒图)?
- 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现
热门文章
- csh shell_0614-同一OS用户并行Shell脚本中kinit不同的Principal串掉问题
- 卖茶叶怎么引流?卖茶叶引流方法有哪些?茶叶店如何做推广
- 【转】50款免费的好软件
- Log4j RollingFileAppender和DailyRollingFileAppender的配置
- 服务器 操作系统 阵列,服务器磁盘阵列与操作系统
- Windows 10 中的 Py 和 python 命令行
- 高压配电线路中的隔离开关_负荷开关_真空断路器的作用
- 海航金鹏携手铛铛社交,航旅社群经济引领新航旅时代
- 小白学六大排序算法(C语言版)
- Android Studio 完美修改应用包名