linux内核文件错误,linux内核和根文件系统移植步骤和错误分析(一)

经过了四天的日夜奋战,终于让我修炼出了根文件系统,我乐乐乐啊…

下面是内核移植的一些具体步骤,文件系统的移植我下章续上

一,内核移植

我这里用的是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值