Linux-2.6.20内核移植到AT91RM9200-EK(转)

以下文档也适用于Linux- 2.6.21 内核移植到AT91RM9200-EK

在at91rm9200dk上做适当修改就可以运行来了。这个我自己做过了,可行的。 

<!--[if !supportLists]-->1. <!--[endif]-->准备相关的工具:http://www.kernel.org 

 从这里下载 linux- 2.6.20 .tar.bz2

 

http://maxim.org.za/AT91RM9200/2.6/

从这里下载补丁  2.6.20 -at91.patch.gz

 

http://www.handhelds.org/download/projects/toolchain/  

从这里下载交叉编译工具 arm-linux-gcc- 3.4.1 .tar.bz2

 

http://www.busybox.net/    从这里下载 BusyBox 1.2.2.1 更改为busybox-1.001.2.2.1中的模块编译有问题

 

<!--[if !supportLists]-->2. <!--[endif]-->首先建立交叉编译环境

由于arm-linux-gcc- 3.4.1 默认的安装路径是 /usr/local/,所以直接将arm-linux-gcc-3.4.1.tar.bz2放在根目录下解压。

#cd /

#tar jxvf arm-linux-gcc- 3.4.1 .tar.bz2

 

使用arm-linux-gcc –version 检查交叉编译器是否安装成功,正常情况下可以显示出版本信息,如果看不到, .bash_profile 文件中增加

export PATH=$PATH:/usr/local/arm/ 3.4.1 /bin

然后重起系统。只有用arm-linux-gcc –version命令能够看到交叉编译器的版本信息,安装才算成功。

 

3.解压 linux- 2.6.20 .tar.bz2    #tar jxvf linux- 2.6.20 .tar.bz2

解压之后生成 linux- 2.6.20 ,将2.6.20-at91.patch.gz拷贝到该目录下

$ cd linu- 2.6.20

$ zcat 2.6.20 -at91.patch.gz | patch –p1

 

 修改该目录下的Makefile文件

ARCH            ?=$(SUBARCH)
   CROSS_COMPILE    ?=
     
改成:
     ARCH    = arm
     CROSS_COMPILE =/usr/local/arm/ 3.4.1 /bin/arm-linux-

 

$ cp arch/arm/configs/at91rm9200ek_defconfig /.config

$ make clean

$ make zImage

 

由于我的板子上的U-boot,不支持zImage,另外machine ID不支持AT91RM9200EK.需要作如下修改:

<!--[if !supportLists]-->a.     <!--[endif]-->linux- 2.6.20 /arch/arm/mach-at91rm9200/board-ek.c 中的

MACHINE_START(AT91RM9200EK,”Atmel AT91RM9200-EK”) 改为

MACHINE_START(AT91RM9200,”Atmel AT91RM9200-EK”)

<!--[if !supportLists]-->b.     <!--[endif]-->制作 uImage文件

$ /usr/local/arm/ 3.4.1 /bin/arm-linux-objcopy –O binary –S vmlinux linux.bin

$ gzip –v9 linux.bin

$./mkimage –A arm –O linux –T kernel –C gzip –a 0x20008000 –e 0x20008000 –d linux.bin.gz uImage

 

4. 制作ramdisk

  a. 解压busybox- 1.2.2 .1.tar.bz2

# cd /busybox- 1.2.2 .1

# make menuconfig  根据需要修改配置

busybox settings à
build options à
[ * ]build busybox as a static binary(no shared libs)
do you want to build busybox with a cross compiler?
填上你的交叉编译器的路径
/usr/local/arm/ 3.4.1 /arm-linux-

 

另外shells中要选上 choose your default shell (ash)

 

#make ;make install

<!--[if !supportLists]-->c.     <!--[endif]-->制作空的ramdisk
# dd if=/dev/zero of=ramdisk bs=1k count=8000
 
在本地目录下出现一个rmdisk的块文件
# losetup /dev/loop2 ramdisk
# mkfs.ext2 /dev/loop2
挂载ramdisk/mnt
# mount -t ext2 /dev/loop2 /mnt
c.
准备lib库文件
# cd /mnt
# mkdir lib
# cd  /usr/local/arm/ 3.4.1 /arm-linux/lib
# for file in libc libcrypt libdl libm libpthread libresolv libutil
> do
> cp $file-*.so /mnt/lib
> cp -d $file.so.[*0-9] /mnt/lib
> done
# cp -d ld*.so* /mnt/lib

 

<!--[if !supportLists]-->d.     <!--[endif]-->复制busybox文件至ramdisk中:

 # cp –rf  /busybox- 1.2.2 .1/_install/* /mnt/
 
这样在ramdisk中就有:usr sbin linuxrc lib  (将linuxrc文件删除)

     # cd /mnt

     # mkdir dev home root usr etc mnt sys tmp

     #cd dev

#mknod -m 660 console c 5 1

#mknod -m 660 null c 1 3

     # umount /dev/loop2

# losetup -d /dev/loop2

# gzip -9 ramdisk

 

   以下为制作根文件系统的补充:

   a. 建立设备文件名

     可以用mknod手工建立,也可以直接从原系统的/dev目录下拷贝

b.建立etc目录下的配置文件

Busybox.conf  motd  mtab 都为空文件

Inittab内容如下:

Console::sysinit:/etc/init.d/rcS

ttyS0 :respawn :-/bin/sh

tty2 ::askfirst :-/bin/sh

tty0 ::askfirst :-/bin/sh

tty3 ::askfirst :-/bin/sh

tty4 ::askfirst :-/bin/sh

::restart:/sbin/init

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount –a –r

::shutdown:/sbin/swapoff –a

 

fstab内容如下:

/dev/fd0      /       ext2          defaults        0          0

none        /proc    proc          defaults        0          0

none        /dev/pts  devpts        mode=0622     0          0

 

group内容如下:

root::0:root

 

issue内容如下:

Sunny AT91RM9200EK ( 2007-06-07 )

 

passwd内容如下:

root::0:0:root:/root:/bin/ash

 

profile内容如下:

export PS1=”[“$USER” @ /h]# “

echo “Done”

 

PATH=/bin:/sbin:/usr/bin:/usr/sbin

export PATH

 

resolv.conf内容如下:

nameserver 127.0.0.1

search localhost

 

init.d目录下rcS文件内容:

#! /bin/sh

Mount –o remount, rw /

 

/sbin/ifconfig lo 127.0.0.1

 

ln –s /dev/tts/0   /dev/ttyS0

ln –s /dev/vc/0   /dev/tty0

ln –s /dev/vc/1   /dev/tty1

ln –s /dev/vc/2   /dev/tty2

 

/bin/mount –a

>/etc/mtab

echo

echo  “………….Welcom to AT91RM9200EK …………..”

echo

hostname AT91RM9200EK

 

使用chmod a+x rcS   将此文件改为可执行文件

 

5. ramdisk.gz uImage 通过 tftp 下载到板子上,使用 bootm 命令就可运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值