原标题:4418开发板Uboot内核文件系统编译脚本分析

(1)X4418编译uboot的脚本如下:

build_bootloader_uboot()

{

# Compiler uboot

cd ${BS_DIR_UBOOT} || return 1 //进入uboot根目录

make distclean CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1 //清除缓存

make ${BS_CONFIG_BOOTLOADER_UBOOT} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1 //配置uboot config 文件

cp arch/arm/cpu/slsiap/devices/x4418-pmic.mk arch/arm/cpu/slsiap/devices/axp228_mfd.o //生成axp228_mfd.o。

make -j${threads} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1 //编译uboot

# Copy bootloader to release directory

#cp -v ${BS_DIR_UBOOT}/u-boot.bin ${BS_DIR_RELEASE}

cp -v ${BS_DIR_UBOOT}/ubootpak.bin ${BS_DIR_RELEASE} //将生成的映像拷贝到 out/release 目录

#echo "^_^ uboot path: ${BS_DIR_RELEASE}/u-boot.bin"

echo "^_^ uboot path: ${BS_DIR_RELEASE}/ubootpak.bin" //打印提示信息

return 0

}

执行 ./mk –u 指令时,上面脚本得到执行,在BS_DIR_UBOOT下生成ubootpak.bin,并把它拷贝到out/release 目录下。

BS_CONFIG_BOOTLOADER_UBOOT被定义为x4418_config,它将关联到uboot的配置文件linux/bootloader/u-boot-2014.07/include/configs/x4418.h。

BS_CROSS_TOOLCHAIN_BOOTLOADER为交叉工具链路径,其定义为:BS_CROSS_TOOLCHAIN_BOOTLOADER=${BS_DIR_TOP}/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-

源码包中已经把该工具拷到这个路径。

(2)x4418开发板内核的编译脚本如下:

build_kernel()

{

# Compiler kernel

cd ${BS_DIR_KERNEL} || return 1 //进入内核目录

make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1 //配置内核

make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return 1 //编译内核

# Copy uImage to release directory

cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE} //将生成的内核镜像uImage拷到out/release 目录

echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage" //打印成功信息

# generate boot.img

cd ${BS_DIR_TOP} || return 1 //回到根目录

echo 'boot.img ->' ${BS_DIR_RELEASE}

# Make boot.img with ext4 format, 64MB

cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot //把uImage拷到out/target/product/drone2/boot/下

mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864 //生成boot.img

cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1; 将生成的内核镜像boot.img拷到out/release 目录下

return 0

}

脚本中BS_CONFIG_KERNEL 被声明为x4412_android_defconfig,它被关联到x4418_kitkat/linux/kernel/kernel-3.4.39/arch/arm/configs/x4418_defconfig文件。

-j${threads}表示使用多核编译。其中 threads 通过如下方式获取当前编译的 PC 机 CPU核的个数(mk文件134行):

threads=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}')

编译完成之后,把uImage和boot.img都拷到out/release中去。

由于生产boot.img文件需要用到ramdisk.img、recovery.img、uImage 几个文件,所以执行 ./mk -k之前没有执行 ./mk -s,可能会无法成功生成boot.img。可以暂时不管它,编译文件系统后,再回来编译内核即可通过。

(3)X4418开发板编译文件系统的脚本如下:

build_system()

{

cd ${BS_DIR_TOP} || return 1 //进入文件系统目录

source build/envsetup.sh || return 1 //环境变量设置

make -j${threads} ${BS_CONFIG_FILESYSTEM} || return 1 //编译文件系统

# Make boot.img

# Create boot directory

mkdir -p ${BS_DIR_TARGET}/boot || return 1 //创建 /out/target/product/drone2/boot 目录

# Copy some images to boot directory

if [ -f ${BS_DIR_RELEASE}/uImage ]; then

cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot //uImage拷贝到/out/target/product/drone2/boot下

fi

if [ -f ${BS_DIR_TARGET}/ramdisk.img ]; then

cp -v ${BS_DIR_TARGET}/ramdisk.img ${BS_DIR_TARGET}/boot/root.img.gz //ramdisk.img拷贝到/out/target/product/drone2/boot下

fi

if [ -f ${BS_DIR_TARGET}/ramdisk-recovery.img ]; then

cp -v ${BS_DIR_TARGET}/ramdisk-recovery.img ${BS_DIR_TARGET}/boot // ramdisk-recovery.img拷贝到/out/target/product/drone2/boot下

fi

# Make boot.img with ext4 format, 64MB

mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864 //用上面几个文件生成boot.img文件

# Copy to release directory //拷贝各个镜像到 out/release目录 。

cp -av ${BS_DIR_TARGET}/ramdisk.img ${BS_DIR_RELEASE} || return 1;

cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1;

cp -av ${BS_DIR_TARGET}/system.img ${BS_DIR_RELEASE} || return 1;

cp -av ${BS_DIR_TARGET}/cache.img ${BS_DIR_RELEASE} || return 1;

cp -av ${BS_DIR_TARGET}/recovery.img ${BS_DIR_RELEASE} || return 1;

cp -av ${BS_DIR_TARGET}/userdata.img ${BS_DIR_RELEASE} || return 1;

return 0

}

执行 ./mk –s 指令时,上面脚本得到执行,将生成ramdisk.img、boot.img、system.img、cache.img、recovery.img、userdata.img这几个镜像文件,并被拷贝到out/release目录下。

其实在这里我们也已经生成boot.img镜像,编译内核的时候生成的uImage也在这里用到了。返回搜狐,查看更多

责任编辑:

4418linux内核源码,4418开发板Uboot内核文件系统编译脚本分析相关推荐

  1. linux内核剪裁 4412,itop4412开发板-Linux内核的编译

    本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘"06_源码_uboot 和 kernel"目录下,如下图所示. 5.3.2.2 编译器 内核 ...

  2. linux内核源码系统调用有多少个,Linux内核源码目录介绍

    Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...

  3. linux卡片电脑源码,x4412开发板ibox卡片电脑项目实战9-搭建最简单的linux文件系统...

    Linux文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中.有了文件系统,用户就可以很方便的和Linux设备进行数据交 ...

  4. AS2021为工具 AOSP为源码 rk开发板为目标设备 调式app到android framework service

    1.AS可以在AOSP中跳转,见前篇,主要是AOSP下idegen下 excluded-paths android.iml android.ipr的构建 2.可跳转后,基本上就可以debug了,具体操 ...

  5. java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI

    老赵说起来也能算个Java程序员,可是写过的Java代码并不多,可老赵实实在在是从程序员干起的.虽然肚子里也装了不少的东西,可作为一件乐此不疲的事情,就是看那些所谓"高人"的代码. ...

  6. Licheepi_nano开发板:根文件系统编译

    一.下载根文件系统源码 下载并解压 wget https://buildroot.org/downloads/buildroot-2021.02.4.tar.gz tar xvf buildroot- ...

  7. oracle solaris 内核 源码,Oracle和SUN Solaris内核参数

    Oracle和SUN Solaris内核参数 2010-4-11文字大小:大中小 本文描画了Sun Solaris上运转Oracle数据库所须要配置的一些内核参数. 一些预备知识shared memo ...

  8. linux 修改内核源码,Source Insight阅读linux内核源代码——根据其他文章修改

    由于Source Insight实质上是一个支持多种开发语言(java,c ,c++等等)的编辑器,只不过由于其查找.定位.彩色显示等功能的强大,而被我们当成源代码阅读工具使用. Step 2:新建项 ...

  9. Linux系统入门学习:在Debian或Ubuntu上安装完整的内核源码

    问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? 在给你的Linux安装完整 ...

  10. eBPF动手实践系列一:解构内核源码eBPF样例编译过程

    作者:闻茂泉 他山之石 了解和掌握纯c语言的ebpf编译和使用,有助于我们加深对于eBPF技术原理的进一步掌握,也有助于开发符合自己业务需求的高性能的ebpf程序.目前常见和主流的纯c语言的ebpf编 ...

最新文章

  1. 下载备忘:甘特图实现的代码
  2. 中国AI又夺一冠!依图刷榜全球声纹识别挑战赛,刷新纪录,大比分夺魁
  3. pugixml读取unicode编码的xml文件的做法
  4. python基础常用语句-Python基础语法
  5. 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
  6. SharePoint 2013 APP 开发示例 系列
  7. acctype mysql assoc_DedeCMS V5.3二次开发经验分享
  8. C++ const vector的迭代器
  9. 第三篇:Spring Boot整合Servlet
  10. twisted mysql_在Twisted下用MySQLadbapi获取自增id
  11. 用python画大雄_python制作斗图生成器
  12. Latent Semantic Analysis (LSA) Tutorial第一部分(转载)
  13. 面向对象-属性查找与绑定方法
  14. Matlab 2016 超详细安装教程
  15. 通讯录 按中文名字 拼音首字母 排序
  16. 电商“论贱”血拼 传统书店该何去何从
  17. SDKMAN-Linux软件开发工具包
  18. C++仿照标准字符串类string,设计一个自己的字符串类String
  19. python运维看什么书_学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
  20. BNNVGG2-VGG Net

热门文章

  1. 一纸学习康奈尔笔记法
  2. Linux之RPM包的命名规则和包的依赖性
  3. springboot整合webservice接口以及碰到的问题
  4. matlab 读取midi,matlab miditoolbox中的midi文件生成函数的改进
  5. Java实现简易的购物系统
  6. 通信芯片sx1278-基于LORA SX1278无线模块的STM32点对点通信简单实现
  7. jupyter notebook无法连接python3服务器内核 一直显示正在连接服务器
  8. 映目云摄影以人脸识别惊艳Party现场,比亚迪元EV周年庆生
  9. pkusc 2018 滚粗
  10. 【HDU】5208 Where is Bob 【DP】