经过了四天的日夜奋战,终于让我修炼出了根文件系统,我乐乐乐啊…
下面是内核移植的一些具体步骤,文件系统的移植我下章续上
一,内核移植
我这里用的是linux-3.1.4的内核
1,解压源码包
tar xvf linux-3.1.4.tar.bz2
2,修改顶层目录Makefile文件,修改平台和交叉编译工具
3,建立Nand flash分区信息表:
在/home/linux-2.6.35/arch/arm/plat-s3c24xx中有common-smdk.c文件
root@ubuntu:/home/linux-2.6.35# vim arch/arm/plat-s3c24xx/ common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name= "uBoot",
.size= 0x40000,
.offset = 0,
},
[1] = {
.name= "kernel",
.offset = 0x40000,
.size= 0x400000,
},
[2] = {
.name= "fs",
.offset = 0x440000,
.size= 0x800000,
},
[3] = {
.name= "extern fs",
.offset = 0xc40000,
.size= 0x33c0000,
},
}
name:代表分区名字
size:代表flash分区大小(单位:字节)
offset:代表flash分区的起始地址(相对于0x0的偏移)
编译好,移植到开发板后可以看见这样的打印信息:
4,选板子,在arch/arm/configs目录下包含了ARM体系结构开发板的参考配置文件,先在该目录下,找到一个类似的参考文件,可以用下面的办法快速的发现我们需要的板子:
ls *2410*---->发现s3c2410_defconfig
拷贝默认配置文件到顶层目录下
cp ..arch/arm/configs/s3c2410_defconfig./
make s3c2410_defconfig
生成.config文件
内核配置的目的:
内核在编译前,寻找.config文件,作为他编译的准则。编译:Makefile
.config文件是给Makefile来读
5,添加网卡驱动
a)将cs8900.c和cs8900.h两个文件拷贝到drivers/net/arm/目录下
注意:在linux-3.1.4内核中cs8900.c文件里面应该有控制中断位的头文件
#include
在cs8900_start函数中修改set_irq_type()为irq_set_irq_type()
b)修改drivers/net/arm/Konfig添加cs8900内核配置项
config S3C2410_CS8900
tristate ”CS8900support”
depends on ARM
--help—
Support for cs8900 chipset base Ethernet cards
c)修改makefile :
driver/net/arm/makefile
:obj-$(CONFIG_ARM_CS8900) +=cs8900.o
d)添加地址映射定义:
修改arch/arm/mach-s3c24xx/include/plat/map.h
e)添加平台代码
在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加:
f)查看虚拟地址到物理地址的转换:
arch/arm/plat-samsang/include/plat/cpu.h
#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x,
__phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
6,在顶层目录下执行make menuconfig进行选项配置:
a)General setup选项:
b)Enable loadable module support选项:
c)Enable the block layer选项:
[*]Support for large (2TB+) block devices and files
d)System Type选项:
s3c2410 Machines--à
注:system type选板子,这里用的是2410开发板,因此除2410外都不选
e)Kernel Features
[*] Use the ARM EABI to compile the kernel
[*] Provide old way to pass kernel parameters
f)Userspace binary formats
f)Device Drivers
[*] Network device support--->
[*]Ethernet (10 or 100Mbit)--->
g)File systems
Pseudo filesystems--->
7,编译内核:
make zImage