linux-2.6.20 on S3C2410 of skyeye

网上找了很多关于skyeye仿真S3C2410跑Linux的文章,但没有一个是依照着做就能跑成功的,或许是我的环境跟他们不一样。于是自己摸索,终于在我的机器上成功跑起来。把一点心得写出来,供大家参考。

首先是环境的搭建,我的HOST用的是UBUNTU 8.10,在DEBIAN 4.1上也跑成功的。然后下载几个本文章用到的几个源程序:
1、linux-2.6.20.tar.gz
因为这个版本已经支持S3C2410,所以也不需要打其他补丁了。
2、arm-linux-gcc-3.4.1.tar.bz2
我就用的这个版本的gcc,你也可以用其他的,但版本不要太老,否则编译容易出问题。
3、skyeye-1.2.5_REL.tar.gz
建议下载这个最新的。一开始我用的1.2版本的,在DEBIAN下跑没问题,在UBUNTU下死活跑不起来。要完全编译skyeye,HOST端除了装好gcc外,要要装binutils-dev、libgtk2-dev、g++等,这在很多发行版本不是问题,DEBIAN和UBUNTU就要自己安装了,否则LCD等模块编译不过去。
4、skyeye-1.2.6_rc1.tar.bz2 
这个是skyeye的各种测试,包括2410的

编译内核前的准备:
1、安装交叉编译器
tar jxf arm-linux-gcc-3.4.1.tar.bz2 -C /
这个命令将编译器安装到/usr/local/arm/3.4.1/下.
2、安装skyeye
tar zxf skyeye-1.2.5_REL.tar.gz
cd skyeye-1.2.5
./configure –target=arm-elf –prefix=/usr/local/
make
make install
执行上述指令,顺利的话,将在binary目录下生成可执行文件skyeye,在/usr/local/bin/下生成arm-elf-skyeye。为了方便使用,在/bin/目录下建立一个连接
cd /bin/
ln -s /usr/local/bin/arm-elf-skyeye skyeye
这样就可以在任何地方直接执行skyeye
3、解压测试包
tar jxf skyeye-1.2.6_rc1.tar.bz2
可以测试linux目录下2410的linux-2.6测试,执行方式:
skyeye -e vmlinux
如果不能正常启动linux,那就要自己检查哪里的问题了
将里面的initrd.img和skyeye.conf拷贝到自己的目录,以备调试后面编译的内核

下面就开始内核的配置和编译:
1、解压内核源代码
tar zxf linux-2.6.20.tar.gz
2、修改ARM编译器
cd linux-2.6.20
vim Makefile
修改Makefile中的ARCH和CROSS_COMPILE如下:
ARCH        ?= arm
CROSS_COMPILE        ?= /usr/local/arm/3.4.1/bin/arm-linux-
3、配置内核S3C2410
make s3c2410_defconfig
4、修改memory.h
vim include/asm-arm/arch-s3c2410/memory.h
将其中的
#define PHYS_OFFSET UL(0x30000000)
改为
#define PHYS_OFFSET UL(0xC0000000)
5、修改map.h
vim include/asm-arm/arch-s3c2410/map.h
将其中的
#define S3C2410_CS6 (0x30000000)
改为
#define S3C2410_CS6 (0xC0000000)
6、某些系统下需要在scripts/mod/sumversion.c中加入头文件limits.h
我的电脑上,DEBIAN就不需要修改,UBUNTU不修改就出错,这个可以自己试验。这个现象好象很少有文章提到。
7、配置内核
make menuconfig
修改几个地方:
a、将Boot options –> Default kernel command string设置为
mem=32M console=ttySAC0 root=/dev/ram initrd=0xC0800000,0x00800000 ramdisk_size=2048 rw
b、将Device Drivers –> Character devices –> Serial drivers –> 8250/16550 and compatible serial support去除
c、修改Device Drivers –> Block devices下的几个值:
(1) Default number of RAM disks
(2048) Default RAM disk size (kbyte)
(1024) Default RAM disk block size (bytes)
这个好象也很少有文章提到
d、把Device Drivers下的VGA也先清除,以后配置好了LCD再选上,否则LINUX启动会缓慢,而且有可能在启动好后无法操作SHELL
这些都做好后,保存退出配置
8、编译内核
make
9、编译完成后,可以将linux-2.6.20/vmlinux拷贝到存放initrd.img和skyeye.conf的目录,注意不是arch/arm/boot/compress/vmlinux,并执行如下命令
skyeye -e vmlinux
这时就可以看到启动的信息了,启动完成后,可以试着在SHELL敲几个命令

这个系统只是简单的跑了起来,网络、LCD还没能正确运行,有时间的话我会搞好了再写文章给大家分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注