免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 601 | 回复: 0
打印 上一主题 下一主题

Linux-2.6.20内核移植到AT91RM9200-EK [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-27 21:42 |只看该作者 |倒序浏览
以下文档也适用于Linux-2.6.21内核移植到AT91RM9200-EK

1. 准备相关的工具:
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.00,1.2.2.1中的模块编译有问题

2. 首先建立交叉编译环境
由于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.需要作如下修改:
a.   
linux-2.6.20/arch/arm/mach-at91rm9200/board-ek.c
中的
MACHINE_START(AT91RM9200EK,”Atmel
AT91RM9200-EK”) 改为
MACHINE_START(AT91RM9200,”Atmel
AT91RM9200-EK”)
b.     制作 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
c.     制作空的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

d.     复制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命令就可运行。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26525/showart_391418.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP