嵌入式linux kernel开发全流程

来源:互联网 发布:魔法王座坐骑进阶数据 编辑:程序博客网 时间:2024/04/28 18:47

需要的材料

硬件方面

嵌入式linux开发板(又称为目标机):arm9 ,arm11 ,arm cortex A系列开发板均可

个人PC(又称为上位机或宿主机):一般的个人PC均可,搭载操作系统为windows或者linux 。本文为搭载linux的x86PC。

开发板与上位机通信工具:串口,网线,USB

软件方面

linux kernel 内核源码树

交叉编译工具连

 

linux kernel 内核开发环境的搭建

 

编译linux kernel 的软件要求:

编译和运行3.x kernel 要求多种最新版本的软件包。查阅 Document/Changes 可以得到要求的最小版本号以及如何更新这些软件包。小心过旧的软件包版本会间接造成某些难以解决的错误,因此不要设想在编译时出现错误的时候再去更新软件包。

Current Minimal Requirements============================ Upgrade to at *least* these software revisions before thinking you'veencountered a bug!  If you're unsure what version you're currentlyrunning, the suggested command should tell you. Again, keep in mind that this list assumes you are already functionallyrunning a Linux kernel.  Also, not all tools are necessary on allsystems; obviously, if you don't have any ISDN hardware, for example,you probably needn't concern yourself with isdn4k-utils. o  Gnu C                  3.2                     # gcc --versiono  Gnu make               3.80                    # make --versiono  binutils               2.12                    # ld -vo  util-linux             2.10o                   # fdformat --versiono  module-init-tools      0.9.10                  # depmod -Vo  e2fsprogs              1.41.4                  # e2fsck -Vo  jfsutils               1.1.3                   # fsck.jfs -Vo  reiserfsprogs          3.6.3                   # reiserfsck -Vo  xfsprogs               2.6.0                   # xfs_db -Vo  squashfs-tools         4.0                     # mksquashfs -versiono  btrfs-progs            0.18                    # btrfscko  pcmciautils            004                     # pccardctl -Vo  quota-tools            3.09                    # quota -Vo  PPP                    2.4.0                   # pppd --versiono  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep versiono  nfs-utils              1.0.5                   # showmount --versiono  procps                 3.2.0                   # ps --versiono  oprofile               0.9                     # oprofiled --versiono  udev                   081                     # udevd --versiono  grub                   0.93                    # grub --version || grub-install --versiono  mcelog                 0.6                     # mcelog --versiono  iptables               1.4.2                   # iptables -V


 

 

linux kernel 内核配置

linux kernel 的配置选项非常多,从零配置工作量极大,因此一般的配置流程分为两步,先进行预配置,这步主要是利用他人的成果,再进行个性化定制,这步就是根据需要进行细化配置了。通常会有两种情行下,一种是从旧内核升级到新内核时进行配置,一种是从新开始使用默认配置再定制。

使用预定义配置再定制

1 预配置的两种方法

1)使用源代码中提供的预定义配置文件

预定义配置文件在目录 arch/$(ARCH)/configs/ 中,其中$(ARCH)是指处理器架构类型,如arm , x86 ,mips 等。

使用预定义配置的方法如下:

 make  ARCH=${ARCH}      ${PLATFORM}_defconfig
“make ARCH=${ARCH}  ${PLATFORM}_defconfig"   使用arch/$ARCH/configs/${PLATFORM}_defconfig 文件中的默认值来创建一个 ./.config文件。 ARCH参数是必要的,既然默认配置文件所在路径中包含了ARCH。

查看内核源代码支持哪些ARCH,可以查看源代码树中的arch目录下有哪些目录名。而具体开发板应该使用哪个ARCH是很好确定的,比如开发板的cpu为arm cortex A8 ,则ARCH为arm,相应的CROSS_COMPILE就是与ARCH一致的交叉编译工具链前缀,为了确定PLATFORM,可以查看arch/$ARCH/configs/下的文件名,也可以使用如下命令

make ARCH=arm  help
从输出中你就可以看到 ${PLATFORM}_defconfig应该如何书写了,如果没有你的开发板名称,你可以找一个近似的平台作为参考,在此基础上进行配置也不错。

2)使用外部提供的.config文件进行配置

 

2 个性化定制

个性化定制时,常用如下命令,它们的区别是配置的方式不同。

“ make menuconfig  ”     - Update current config utilising a menu based program 使用基于菜单的程序更新当前配置

“  make xconfig ”     - Update current config utilising a QT based front-end  使用基于QT的前端更新当前配置

注意是更新(Update),这意味着如果当前已经配置过内核(即存在.config文件),那么该命令执行后会读取.config中的配置项,在此基础上进行配置。

 

从旧内核配置升级到新内核配置 

 

 

linux kernel 内核编译

 

linux kernel 内核安装与运行

 

linux kernel 内核开发与调试

 

 


0 0