全志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机制解析相关推荐

  1. 20150906全志a33上调通rtl8188eus的过程(sina33)

    20150906全志a33上调通rtl8188eus的过程(sina33) 使用SINA33的开发板,测试USB接口的WIFI:rtl8188eus. rtl8188eus直接接到SINA33开发板的 ...

  2. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  3. 全志A33系统搭建编译及烧录

    目标平台:全志A33 工作平台:Ubuntu 12.04.5 uboot版本:u-boot-2011.09 linux版本:Linux-3.4 交叉编译环境版本:4.5.1 一.全志A33交叉编译环境 ...

  4. 全志A33学习笔记及问题汇总

    全志A33学习笔记及问题汇总 全过程: 1.编译环境配置 首次编译,需要导入vstar方案的内核配置,进入linux3.4目录, 如果开启WIFI需修改a33_vstar_defconfig 1294 ...

  5. 全志A33开发板烧录Image到EMMC教程

    全志A33开发板烧录Image到EMMC教程 当前环境: Manjaro Linux 软件: sunxi-livesuite 1. 安装烧录软件 $ yay -S sunix-livesuite-gi ...

  6. 全志A33平台调通AP6181(分色排版)

    全志A33平台调通AP6181 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/22 20:15 版本:V1.0 1.(可选,在设置中不显示:蓝牙 ...

  7. 全志A33之添加电容触摸GT911驱动

    全志A33之添加电容触摸GT911驱动 基于锐尔威视的A33开发板及提供的开发包,仅供参考. 开发板说是支持GT911,其实是不支持的,得修改驱动及配置,启动文件. 一.      修改配置文件 /h ...

  8. 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析

    InfluxDB 的存储机制解析 本文介绍了InfluxDB对于时序数据的存储/索引的设计.由于InfluxDB的集群版已在0.12版就不再开源,因此如无特殊说明,本文的介绍对象都是指 InfluxD ...

  9. Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子

    在前文<Apache Hook机制解析(上)--钩子机制的实现>和<Apache Hook机制解析(中)--细节讨论>的基础上,我们对Apache的钩子机制已经有了较多的了解, ...

最新文章

  1. Please select Android SDK
  2. bigdecimal类型数据的min方法
  3. vc6.0开发环境两个辅助工具
  4. FAX modem和传真协议简介
  5. 【NLP】BERT大魔王为何在商业环境下碰壁?
  6. maskrcnn还可以加网络吗_桃子加蜂蜜可以榨汁吗?桃子和蜂蜜可以一起吃吗?原来可以这样吃...
  7. 探索Julia(part1)--Julia初识
  8. HBase权威指南 高清中文版 PDF(来自linuxidc)
  9. leetcode —— 19. 删除链表的倒数第N个节点
  10. 当前页面跳转网页,新打开和在本页面打开
  11. windows bat打印机打印测试页
  12. 华为freelance耳机充不进电修理
  13. 让你彻悟人生的555句金玉良言
  14. 关于EL表达式获取参数的两种方法
  15. Laravel OAuth2 (三) ---使用 services 和 facades
  16. 小米已成国产手机标杆,海外出货量碾压华为OV
  17. 毛球修剪器方案开发的工作原理和构成
  18. 在linux上安装Scala详细步骤
  19. 怎么将流程图转化为N-S图(盒图)?
  20. 【4.0】 数学建模中拟合算法详解|内附清晰图片和详细代码实现

热门文章

  1. csh shell_0614-同一OS用户并行Shell脚本中kinit不同的Principal串掉问题
  2. 卖茶叶怎么引流?卖茶叶引流方法有哪些?茶叶店如何做推广
  3. 【转】50款免费的好软件
  4. Log4j RollingFileAppender和DailyRollingFileAppender的配置
  5. 服务器 操作系统 阵列,服务器磁盘阵列与操作系统
  6. Windows 10 中的 Py 和 python 命令行
  7. 高压配电线路中的隔离开关_负荷开关_真空断路器的作用
  8. 海航金鹏携手铛铛社交,航旅社群经济引领新航旅时代
  9. 小白学六大排序算法(C语言版)
  10. Android Studio 完美修改应用包名