2.6.39.2内核的移植心得

对于嵌入式Linux,本人基本属于还不入流的一类,本来也没打算自己去移植Linux内核的,毕竟基本移植再加搞定所有驱动移植是一个很需要时间的过程,但是由于飞凌的售后技术客服服务实在让我无语了,由于买开发板时,飞凌官方给的是LINUX2.6.28内核,当时用起来还是蛮不错的,至少满足我的NFS_ROOT挂载启动,好方便开发,前几天无意看到官网的OK6410的Linux内核更新到了LINUX2.6.36,于是尝尝鲜嘛,可哪知NFS启动死活就不成功,在飞凌论坛上问技术人员又没人理,没办法,算了,还是自己动手先玩玩呗,好了,野棉花扯多了,还是步入正题吧。

开发环境,还是和前面的UBOOT移植的一样,没有变化。

1,笔记本主机系统WINDOWS XP SP3系统

2,虚拟机采用的是 VMware Workstation ACE版本

3,虚拟机内采用的LINUX系统是Ubuntu10.10版本

4,交叉编译工具是CROSS_COMPILE4.2.2版本

对于Linux内核移植,和UBOOT移植一样,先需要获取源代码,源代码网址,在我写这篇愚见的时候,最新版是linux2.6.39.3,新的技术肯定一般都是好的嘛 呵呵,所以还是挑了最新的LINUX2.6.39.2来开刀,刚打完linux2.6.39.3补丁。

对于Linux内核移植,方法还是和UBOOT一样的思路,一步一步的有目的的进行,边思考边进行,这样才能做到心中有数,不要盲目,好了,步入正题,开工了。

将下载的Linux内核linux-2.6.39.2.tar.bz2随便放入虚拟机UBUNTU下的一个目录下,解压:tar -jxvf  linux-2.6.39.2.tar.bz2,然后就得到了我们所要的Linux内核源代码了,这个是必须的哦,呵呵,没有源代码就无法进行下去了啊。

第一步,和前面的UBOOT移植的思路一样,一切尽量简单化,所以还是cd linux-2.6.39.2进去,看个文件架构布局,做到心中有数嘛:root@:/SHARE/linux-2.6.39.2# ls
arch     Documentation  init     lib               samples   usr
block    drivers        ipc      MAINTAINERS  README             scripts   virt
COPYING  firmware       Kbuild   Makefile     REPORTING-BUGS     security
CREDITS  fs             Kconfig  mm             sound
crypto   include        kernel   net               tools

这里,首先当然还是先设置自己的交叉编译器了,看到根目下的Makefile没,

export KBUILD_BUILDHOST := $(SUBARCH)
#ARCH  ?= $(SUBARCH)
#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
ARCH  ?=arm
CROSS_COMPILE ?=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

将标记红色的注视掉,然后写上你自己的编译器位置,就是CROSS_COMPILE这个选项。

好了,简单吧。这是首要的第一步,交叉编译器环境设置好了就开始开发板的移植了。

第二步,看到根目下的所有文件夹,与移植目标有关的一个主要文件就是arch目录,cd arch 然后会看到

root@:/SHARE/linux-2.6.39.2/arch# ls
alpha     cris   Kconfig     mips     s390   tile       xtensa
arm       frv    m32r        mn10300  score  um
avr32     h8300  m68k        parisc   sh     unicore32
blackfin  ia64   microblaze  powerpc  sparc  x86
而与我们移植有关的CPU体系架构则在arm目录下,所以还需cd arm,会看到boot             mach-h720x       mach-mxs       mach-s5p6442    mm
common           mach-imx         mach-netx      mach-s5p64x0    nwfpe
configs          mach-integrator  mach-nomadik   mach-s5pc100    oprofile
include          mach-iop13xx     mach-ns9xxx    mach-s5pv210    plat-iop
Kconfig          mach-iop32x      mach-nuc93x    mach-sa1100     plat-mxc
Kconfig.debug    mach-iop33x      mach-omap1     mach-shark      plat-nomadik
Kconfig-nommu    mach-ixp2000     mach-omap2     mach-shmobile   plat-omap
kernel           mach-ixp23xx     mach-orion5x   mach-spear3xx   plat-orion
lib              mach-ixp4xx      mach-pnx4008   mach-spear6xx   plat-pxa
mach-at91        mach-kirkwood    mach-pxa       mach-stmp378x   plat-s3c24xx
mach-bcmring     mach-ks8695      mach-realview  mach-stmp37xx   plat-s5p
mach-clps711x    mach-l7200       mach-rpc       mach-tcc8k      plat-samsung
mach-cns3xxx     mach-loki        mach-s3c2400   mach-tegra      plat-spear
mach-davinci     mach-lpc32xx     mach-s3c2410   mach-u300       plat-stmp3xxx
mach-dove        mach-mmp         mach-s3c2412   mach-ux500      plat-tcc
mach-ebsa110     mach-msm         mach-s3c2416   mach-versatile  plat-versatile
mach-ep93xx      mach-mv78xx0     mach-s3c2440   mach-vexpress   tools
mach-exynos4     mach-mx3         mach-s3c2443   mach-vt8500     vfp
mach-footbridge  mach-mx5         mach-s3c24a0   mach-w90x900
mach-gemini      mach-mxc91231    mach-s3c64xx   Makefile
对于上面的文件夹,你需要知道mach就是CPU_SOC目标的板件相关代码所在路径,而PLAT则是相关平台的公用代码的所在路径,好了,这里我们是移植OK6410单板,属于SOC6410,所以肯定是cd mach-s3c64xx了,然后将会看到clock.c         irq.c            mach-smartq5.c   s3c6410.c
cpu.c           irq-eint.c       mach-smartq7.c   setup-fb-24bpp.c
cpufreq.c       irq-pm.c         mach-smartq.c    setup-i2c0.c
dev-audio.c     Kconfig          mach-smartq.h    setup-i2c1.c
dev-onenand1.c  mach-anw6410.c   mach-smdk6400.c  setup-ide.c
dev-spi.c       mach-hmt.c       mach-smdk6410.c  setup-keypad.c
dev-uart.c      mach-mini6410.c  Makefile         setup-sdhci.c
dma.c           mach-ncp.c       Makefile.boot    setup-sdhci-gpio.c
gpiolib.c           pm.c             sleep.S
include         mach-real6410.c  s3c6400.c

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjjzf.html