4418linux内核源码,4418开发板Uboot内核文件系统编译脚本分析
原标题: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内核文件系统编译脚本分析相关推荐
- linux内核剪裁 4412,itop4412开发板-Linux内核的编译
本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘"06_源码_uboot 和 kernel"目录下,如下图所示. 5.3.2.2 编译器 内核 ...
- linux内核源码系统调用有多少个,Linux内核源码目录介绍
Linux的内核源代码可以从很多途径得到,我一般常常去kernel.org看看.一般来讲,在安装的linux系统下,usr/src/linux目录下的东西就是内核源代码.源码的版本号有一个非常简单的编 ...
- linux卡片电脑源码,x4412开发板ibox卡片电脑项目实战9-搭建最简单的linux文件系统...
Linux文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中.有了文件系统,用户就可以很方便的和Linux设备进行数据交 ...
- AS2021为工具 AOSP为源码 rk开发板为目标设备 调式app到android framework service
1.AS可以在AOSP中跳转,见前篇,主要是AOSP下idegen下 excluded-paths android.iml android.ipr的构建 2.可跳转后,基本上就可以debug了,具体操 ...
- java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI
老赵说起来也能算个Java程序员,可是写过的Java代码并不多,可老赵实实在在是从程序员干起的.虽然肚子里也装了不少的东西,可作为一件乐此不疲的事情,就是看那些所谓"高人"的代码. ...
- Licheepi_nano开发板:根文件系统编译
一.下载根文件系统源码 下载并解压 wget https://buildroot.org/downloads/buildroot-2021.02.4.tar.gz tar xvf buildroot- ...
- oracle solaris 内核 源码,Oracle和SUN Solaris内核参数
Oracle和SUN Solaris内核参数 2010-4-11文字大小:大中小 本文描画了Sun Solaris上运转Oracle数据库所须要配置的一些内核参数. 一些预备知识shared memo ...
- linux 修改内核源码,Source Insight阅读linux内核源代码——根据其他文章修改
由于Source Insight实质上是一个支持多种开发语言(java,c ,c++等等)的编辑器,只不过由于其查找.定位.彩色显示等功能的强大,而被我们当成源代码阅读工具使用. Step 2:新建项 ...
- Linux系统入门学习:在Debian或Ubuntu上安装完整的内核源码
问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? 在给你的Linux安装完整 ...
- eBPF动手实践系列一:解构内核源码eBPF样例编译过程
作者:闻茂泉 他山之石 了解和掌握纯c语言的ebpf编译和使用,有助于我们加深对于eBPF技术原理的进一步掌握,也有助于开发符合自己业务需求的高性能的ebpf程序.目前常见和主流的纯c语言的ebpf编 ...
最新文章
- 下载备忘:甘特图实现的代码
- 中国AI又夺一冠!依图刷榜全球声纹识别挑战赛,刷新纪录,大比分夺魁
- pugixml读取unicode编码的xml文件的做法
- python基础常用语句-Python基础语法
- 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
- SharePoint 2013 APP 开发示例 系列
- acctype mysql assoc_DedeCMS V5.3二次开发经验分享
- C++ const vector的迭代器
- 第三篇:Spring Boot整合Servlet
- twisted mysql_在Twisted下用MySQLadbapi获取自增id
- 用python画大雄_python制作斗图生成器
- Latent Semantic Analysis (LSA) Tutorial第一部分(转载)
- 面向对象-属性查找与绑定方法
- Matlab 2016 超详细安装教程
- 通讯录 按中文名字 拼音首字母 排序
- 电商“论贱”血拼 传统书店该何去何从
- SDKMAN-Linux软件开发工具包
- C++仿照标准字符串类string,设计一个自己的字符串类String
- python运维看什么书_学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
- BNNVGG2-VGG Net