说在前头:一般是根据支撑s 3c2440的内核文件作相应的修正以习惯自己的需求,假如单是朴实的修正不支撑s3c2440的内核文件或许自己写s3c2440的内核文件将会十分费时费事,也是一个人在短时刻难以完成的作业。下面的修正也便是最基本的内核文件所有必要的过程,也便是咱们所做的作业便是一个最小文件体系(最小文件体系:能是能使整个体系跑起来的体系软件和硬件)。一般的编程思路也是首要完成一个最基本的功用,再此基础上增加其他的功用,切忌一次性的写完悉数的代码,然后已编译呈现了一大堆过错,那可就真的挂了。
一、将linux-2.6.18.tar内核源代码的压缩包拷贝到linux的根目录下进行解压,然后进入linux-2.6.18的目录下修正配置文件。
二、修正Makefile配置文件
1、第176行 改为ARCH ?=arm
由于这是arm体系的,会生成arm目录。
2、第177行 改为CROSS_COMPILE ?=arm-linux-
由于这是穿插编译的需求,缺省的是gcc,但是在arm板子上的编译环境和linux不一样,应该是arm-linux-gcc便已指令。
三、在linux-2.6.18的目录下翻开终端履行 cp arch/arm/configs/smdk2410_deconfig .config实际上这条操作是将smdk2410_deconfig重命名为.config,由于对配置文件的操作都会主动保存到当时目录下而且命名为.config
四、翻开终端在linux-2.6.18的目录下履行make menuconfig的操作,修正内核配置文件(阐明:括号前面加*表明选中该选项)
1、System Type —> ARM system type (Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2—> 修正为(X) Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442(这是体系类型,改为s3c2440的支撑)。
2、System Type —>S3C24XX Implementations—>选中为
[*] SMDK2440和[*] SMDK2440 with S3C2440 CPU module,与此同时去掉SMDK2410/A9M2410前面的“*”
3、Floating point emulation —>别离选中[*] NWFPE math emulation 和[*] Support extended precision这是浮点运算方法,在发动Shell终端的时分用到。
4、Device Drivers —>Memory Technology Devices (MTD) —>别离选中[*] Memory Technology Device (MTD) support和[*] MTD partitioning support,选中它们就可以对flash做分区了。
5、Device Drivers —> Memory Technology Devices (MTD) —> NAND Flash Device Drivers —>别离选中[*] NAND Device Support和[*] NAND Flash support for S3C2410/S3C2440 SoC和[*] S3C2410 NAND driver debug,作用是支撑s3c2440的nand flash。
6、Device Drivers —> Block devices —>别离选中[*] Loopback device support和[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support,然后修正为(65535) Default RAM disk size (kbytes),动态内存的巨细。
7、Device Drivers —> Network device support —> Ethernet (10 or 100Mbit) — >选中[*] DM9000 support这是板子上网卡的类型。
8、Device Drivers —>Character devices —> Serial drivers —>承认以下两个选项都被选中(它们都是对串口的支撑,缺省选中)
[*] Samsung S3C2410/S3C2440/S3C2442/S3C2412 Serial port support
[*] Support for console on S3C2410 serial port
9、File systems —>分被选中一下的选项,它们是对外部引脚的支撑:[*] Ext2 extended attributes
[*] Ext2 execute in place support
[*] Ext3 journalling file system support
[*] Ext3 extended attributes
10、File systems—>Network File Systems —>去掉这两个选项[ ] NFS server support和[ ]Root file system on NFS
11、File systems—>Miscellaneous filesystems—>选中文件体系类型[*] Compressed ROM file system support (cramfs),烧录的时分的文件体系为root. Cramfs。
12、File systems—> Pseudo filesystems —> 选中虚拟文件体系 [*] Virtual memory file system support (former shm fs)。
五、在linux-2.6.18的目录flash分区等配置文件的修正:
1、在arch/arm/mach-s3c2410/目录下的common-smdk2440.c中第194行中将修正为s3c24xx_init_clocks(12000000);//初始化实时时钟的时刻
2、在arch/arm/mach-s3c2410/目录下的common-smdk.c修正flash分区为:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = “u-boot”,//flash 的榜首快分区称号,在此方位烧录u-boot
.size = 0x60000, //榜首快分区的巨细
.offset = 0, //偏移地址是0
},
[1] = {
.name = “kernel”, //flash 的第二快分区称号,在次烧录内核
.size = 0x300000, //第二快分区的巨细,有必要大于内核代码的巨细
.offset = 0x80000, //偏移地址
},
[2] = {
.name=”file system”,//flash 的第三快分区称号,在次烧录文件体系
.size=0x2000000,//第三快分区的巨细,有必要大于文件体系代码的巨细
.offset=0xa00000, //偏移地址
}
};
六、编译内核生成uImage
1、在linux-2.6.18下make clean;
2、然后将u-boot-2009.08/tools下的mkimage拷贝到/bin目录下,由于uImage由二进制文件zImage生成,而此刻/bin下没有整个二进制指令。
3、然后再在linux-2.6.18下make uImage,编译经过之后就会在linux-2.6.18/arch/arm/boot下生成二进制文件uImage。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/260536.html