现在在学嵌入式,发现skyeye是不错的开发平台。想编写自己的驱动放到skyeye上试试,
但testsuite里没有内核原代码,所以只好下载原代码来自己编译。经过多次尝试以及在
网上看了点参考资料,终于可以让内核在skyeye上跑了。^_^
下面与大家分享一下我编译内核的经验。本人也是ARM的初学者,有错的地方请指正。
主机平台及所需所的源代码
fedora7
arm-linux-tools-20070808.tar.gz
linux-2.6.22.1.tar.bz2
skyeye-testsuite-2.3.tar.bz2
skyeye-1.2.4_Rel.tar.gz
下面开始一步步编译内核。默认你已经安装好了skyeye,并能运行testsuite里的例子。
新建一下工作目录,然后进入工作目录
mkdir prj
cd prj
在解压那些文件前我先说一下,这些tarball都是大家伙家伙。
在解压这些文件前最好确保有主够的磁盘空间。最好有1G。如果以后你想编译自己的
应用程序制作自己的文件系统的话(比如你下载了uClinux-dist-20070130.tar.gz,这个tarball有很多
应用程序工具,还有ulibc),你就要有2G的磁盘空间。开始时我为了节省磁盘空间只给vmware
分了4G的盘,安装了skyeye后都没空间了。再解压arm-tools时看到屏幕一大堆找不到**文件的
信息,后来才知道这是没有磁盘空间的结果。tar并不会报告磁盘不足。幸好我用的是vmware,
再给它加个virtual disk 就可以了。
解压arm-linux-tools-20070808.tar.gz
tar xf arm-linux-tools-20070808.tar.gz
解压后会在当前目录下产生一个usr目录。里面就是arm-tools了。在usr/bin下有arm的编译器和
连接器。添加环境变量,使编译arm-linux时能找得到这些工具。
export PATH=$(pwd)/usr/bin:$PATH
解压linux-2.6.22.1.tar.bz2
需要改两个地方才能使linux能在skyeye上运行。
将include/asm-arm/arch-s3c2410/map.h里的
#define S3C2410_CS6 (0x30000000)
改为
#define S3C2410_CS6 (0xc0000000)
将include/asm-arm/arch-s3c2410/memory.h里的
#define PHYS_OFFSET UL(0x30000000)
改为
#define S3C2410_CS6 (0xc0000000)
进入内核代码目录,编译内核
make ARCH=arm CROSS_COMPILE=arm-linux- s3c2410_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
在Device Driver --> Character Driver --> Serial Driver选项里
去掉以下选项。8250/16550 and compatible serial support
在Boot option --> Default kernel command string 里输入
mem=32M console=ttySAC0 root=/dev/ram initrd=0x0800000,0x0800000 ramdisk_size=2048 rw
(以上选项是我根据skyeye-testsuite s3c2410x-2.6.14里copy过来的,你可以根据自己的配置自行设置)
make ARCH=arm CROSS_COMPILE=arm-linux-
编译结束后会产生成vmlinux内核镜像。然后将s3c2410x-2.6.14里的
skyeye.com 和 initrd.img 考过来。
最后的最后。。。
skyeye -e vmlinux
转载于:https://blog.51cto.com/inkfish/486613