我们的分析《Lichee(二) 在sun4i_crane平台下的编译 》的时候。竟然没有一个步骤是在配置内核

make ARCH=arm menuconfig

细致的读过的代码的会发现,在build_kernel有这么一段话


 if [ ! -e .config ]; then
  echo -e "\n\t\tUsing default config... ...!\n"
  cp arch/arm/configs/sun4i_crane_defconfig .config
 fi

作用是,当不存在.config时,就将arch/arm/configs/sun4i_crane_defconfig复制到.config。这样我们就不须要在编译kernel的时候去运行make menuconfig来配置内核了。

但是我们在实际移植驱动的过程中,往往须要改动.config。

这时就不得不面临一个问题了。到底什么时候不存在.config文件呢。当然是我们第一次从GIT 克隆下来代码的时候。

随之就有一个新的问题,当我们想给我们项目内部的人共享代码的时候,他编译的内核并非我们这边配置好的.config文件,而是arch/arm/configs/sun4i_crane_defconfig,这样非常有可能导致你和你的伙伴编译的并非同一套配置产生的kernel。还有另外一个问题,比方我们有2个产品,方案基本同样,仅仅是几个外设不同。我们又认为弄多套代码维护起来过于麻烦。就这样的需求来说,我们有一种最简单的解决方式,我们在内核文件夹arch/arm/configs/下,也创建一个新的defconfig文件。依据前面几篇文章对于目标产品的命名,我们就叫mt7332_defconfig。


我们分析了这么多关于Lichee BSP自己主动化的过程。这些内容所有都是人家的。这次我们检验一下我们学习成果。弄一点咱们自己的东西。

就像我们在《Lichee(二) 在sun4i_crane平台下的编译 》中的分析。lichee中的build.sh直接指向了buildroot/scripts/common.sh,之前我们一直没有分析以下的代码段

while getopts hp:m:k: OPTION
do
 case $OPTION in
 h) show_help
 exit 0
 ;;
 p) PLATFORM=$OPTARG
 ;;
 m) MODULE=$OPTARG
 ;; 
 k) KERN_VER=$OPTARG
 update_kdir $KERN_VER
 ;;
 *) show_help
 exit 1
 ;;
esac
done
非常明显这段代码是在接收脚本的參数。还记不记得我们编译的命令 ./build.sh -p sun4i_crane -k 3.0 这里我们新加一个參数 -v 意思就是VERNDOR


修改后例如以下:
VENDOR=""
..................

while getopts hp:m:k:v: OPTION
do
 case $OPTION in
 h) show_help
 exit 0
 ;;
 p) PLATFORM=$OPTARG
 ;;
 m) MODULE=$OPTARG
 ;;
 v) VENDOR=$OPTARG
 ;; 
 k) KERN_VER=$OPTARG
 update_kdir $KERN_VER
 ;;
 *) show_help
 exit 1
 ;;
esac
done

这里我们的-v传进来的值仅仅是在lichee文件夹下的build.sh, 经过《Lichee(二)
在sun4i_crane平台下的编译
 》的分析,我们须要将VENDOR的值传入到lichee/linux-3.0/文件夹下的build.sh
相同地,在linux-3.0文件夹下也要新增-v參数

while getopts hp:m:v: OPTION
do
case $OPTION in
h) show_help
;;
p) PLATFORM=$OPTARG
;;
m) MODULE=$OPTARG
;;
v) VENDOR=$OPTARG
;;
*) show_help
;;
esac
done

这里我们就要对VENDOR的值进行推断了(如果我们另一款产品叫mt7xxx)

if [ "$VENDOR" = mt7332 ]; then
make ARCH=arm mt7332_defconfig
elif [ "$VENDOR" = mt7xxx ]; then
make ARCH=arm mt7xxx_defconfig
else
echo "use current .config $VENDOR"
fi
当我们-v传进来的是mt7332的话,我们就用mt7332_defconfig这个配置。假设是mt7xxx的话,就用mt7xxx_defconfig,以此类推。

假设不带-v參数。就代表用的是当前的.config文件

这段脚本一定要放在实际编译之前,也就是要放在以下这段代码之前

if [ -x ./scripts/build_${PLATFORM}.sh ]; then
./scripts/build_${PLATFORM}.sh $MODULE
else
printf "\nERROR: Invalid Platform\n"
show_help
exit 1
fi

怎样创建mt7332_defconfig?这个问题事实上也非常easy,当我们在sun4i_crane_defconfig的基础上进行make menuconfig结束的时候,将产生的.config文件复制到arch/arm/configs/文件夹下
如果。我们的mt7332产品,刚刚换了一款3G模,实比例如以下

# 配置自己的新增的驱动模块
make ARCH=arm menuconfig 
#将配置好的.config文件复制到mt7332_defconfig
cp .config arch/arm/configs/mt7332_defconfig
# 回到lichee文件夹
cd ..
#编译
./build.sh -p sun4i_crane -k 3.0 -v mt7332

至此,我们就能够在同一套内核代码中。维护多款目标产品了


版权声明:本文博主原创文章,博客,未经同意不得转载。

Lichee (六) 优化配置的微内核的更多相关文章

  1. nginx + SSL优化配置

    nginx + SSL优化配置: #http段添加如下配置项: http { ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户 ...

  2. Linux下jvm、tomcat、mysql、log4j优化配置笔记

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  3. SDE+ORACLE优化配置

    原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...

  4. Linux下jvm、tomcat、mysql、log4j优化配置

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  5. Linux下jvm、tomcat、mysql、log4j优化配置笔记[转]

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  6. eclipse的使用、优化配置

    一.简介 eclipse 可谓是Java开发界的神器,基本占据了大部分的Java开发市场,而且其官方还对其他语言提供支持,如C++,Ruby,JavaScript等等.为 什么使用它?我想离不开下面的 ...

  7. eclipse使用和优化配置

    一.简介 eclipse 可谓是Java开发界的神器,基本占据了大部分的Java开发市场,而且其官方还对其他语言提供支持,如C++,Ruby,JavaScript等等.为 什么使用它?我想离不开下面的 ...

  8. tomcat 优化配置 java-8 tomcat-7

    tomcat 优化配置 , 说明 一.并发优化 1.JVM调优 以下为1G物理内存tomcat配置: JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256 ...

  9. Apache优化配置:修改最大并发连接数

    此文摘自: http://www.365mini.com/page/apache-concurrency-configuration.htm Apache查看连接数和限制当前的连接数 : http:/ ...

随机推荐

  1. java反编译

    反编译工具下载地址 http://download.csdn.net/detail/u011110110/8621653 反编译方法: 第一步:你先把下载的包的后缀名改成.zip第二步:到网上搜索de ...

  2. linux kernel 结构体赋值方法{转载}

    原文地址: http://www.chineselinuxuniversity.net/articles/48226.shtml 这几天看Linux的内核源码,突然看到init_pid_ns这个结构体 ...

  3. 20那天android得知

    20多天的实习(事实上,一个人学习的东西)要结束, 剩下的只是读研. 这项20许多天我学到了很多东西, 对android的发展也有了一定的了解.之后写这篇文章主要完成的研究可以得知快速回升 1.安德鲁 ...

  4. 【Web探索之旅】第二部分第四课:数据库

    内容简介 1.第二部分第四课:数据库 2.第二部分第五课预告:响应式网站 第二部分第四课:数据库 说到“数据库”,顾名思义,是“数据的仓库”的意思. 所以数据库的一大作用就是储存数据咯. 为什么Web ...

  5. 你的第一个AngularJS应用--教程二:基架、建立和測试的工具

    介绍 有非常多可用的工具能够帮助你开发AngularJS 应用,那些非常复杂的框架不在我的讨论范围之中,这也是我開始这系列教程的原因. 在第一部分,我们掌握了AngularJS框架的基本结构,开发了第 ...

  6. SQL Server数据库附加失败:错误5120和错误950

    再次敲机房,想參考曾经的物理模型,结果在附加数据库这一环节出现了点问题,以下总结一下. 1.附加数据库失败,错误5120 对于这样的错误,我在网上搜集了一下,主要有下面几种解决的方法: 方法一:将要附 ...

  7. Linux课程_系统配置和日常维护

    1.设置命令输入提示格公式:"username:当前文件夹$" 2.设置命令输入提示行格式为:"当前系统时间-用户#"(提示:Shell将通过反引號" ...

  8. 4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡

    有两个解决方案: 1.通过改动android系统的源代码,开放SD卡的读写权限,具体的改动方法和说明.能够參考网上资料http://www.ifeegoo.com/android-debug-stat ...

  9. CentOS7 防火墙 firewall-cmd

    最小化安装 CentOS7 后,很多端口默认是不打开的,需要通过  firewall-cmd   把这些端口打开. 检查防火墙状态 # firewall-cmd --state running 关闭防 ...

  10. net大型分布式电子商务架构

    net大型分布式电子商务架构 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维 ...