现在的位置: 首页 > 综合 > 正文

内核移植──2.6.14

2013年09月30日 ⁄ 综合 ⁄ 共 3896字 ⁄ 字号 评论关闭

1  

修改
linux2.6.14
下面的
makefile
文件

   

找到
ARCH

CROSS_COMPILE

修改

   
ARCH ?= arm

   
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- 

(
此处为你交叉编译的路径
)

 

2 

设置
flash
分区

   


arch/arm/machs3c2410/devs.c
文件中添加头文件

   
#include <linux/mtd/partitions.h>

   
#include <linux/mtd/nand.h>

   
#include <asm/arch/nand.h> 

   

然后建立分区表

   
/*

一个
Nand Flash
总共
64MB,
按如下大小进行分区 分区大小自己看着办
*/

   
static struct mtd_partition partition_info[] ={

       
{ /* 1MB */

           
name: "vivi",

           
size: 0x00100000,

           
offset: 0x0,

       
},{ /* 3MB */

           
name: "kernel",

           
size: 0x00300000,

           
offset: 0x00100000,

       
}, { /* 40MB */

           
name: "root",

           
size: 0x02800000,

           
offset: 0x00400000,

       
}, { /* 20MB */

       
name: "user",

       
size: 0x00f00000,

       

offset: 0x02d00000,

       
}

   
};

 

   
/*加入Nand Flash分区*/

   
struct s3c2410_nand_set nandset ={

   
nr_partitions: 4, /*指明partition_info中定义的分区数目*/

   
partitions: partition_info, /* partition table分区信息表*/

   
};

 

   
/*建立Nand Flash芯片支持*/

   
struct s3c2410_platform_nand superlpplatform={

       

tacls:0,

       
twrph0:30,

   
   
twrph1:0,

       
sets: &nandset,

       
nr_sets: 1,

   
};

   
tacls, twrph0, twrph1

的意思见
S3C2410
手册的
63,

   


3
个值最后会被设置到
NFCONF

,

S3C2410
手册
66.

   
sets:

支持的分区集
 
   
 
nr_set:

分区集的个数

   

   
/*

加入
Nand Flash
芯片支持到
Nand Flash
驱动

   

另外

还要修改此文件中的
s3c_device_nand
结构体变量
,
添加对
dev
成员的赋值
*/

   
struct platform_device s3c_device_nand = {

       
.name = "s3c2410-nand",

           
/* Device name */

       
.id = -1,

           
/* Device ID */

       
.num_resources = ARRAY_SIZE(s3c_nand_resource),

       
.resource = s3c_nand_resource, /* Nand Flash Controller Registers */

           
/* Add the Nand Flash device */

       
.dev = {

       
.platform_data = &superlpplatform

       
}

   
};

   

指定启动时初始化

   
arch/arm/machs-3c2410/mach-smdk2410.c

文件

   

找到
platform_device *smdk2410_devices[] __initdata
函数

在该函数体最后加上一条语句
:

   
&s3c_device_nand,

 

   

禁用禁止
Flash ECC
校验

有不同说法
)

   

修改
drivers/mtd/nand/s3c2410.c

   

找到
chip->eccmode = NAND_ECC_SOFT;

   

改为
chip->eccmode = NAND_ECC_NONE;

   

   

支持启动挂载
devfs

   

修改
fs/Kconfig
文件
 

   

找到
menu "Pseudo filesystems"
添加

   
config DEVFS_FS

       
bool "/dev file system support (OBSOLETE)"

       
default y

 

   
config DEVFS_MOUNT

       
bool "Automatically mount at boot"

       
default y

       
depends on DEVFS_FS

 

3  
Yaffs2

文件系统支持

下载yaffs2.tar.gz
源码包,解压源码,并进入目录执行

#./patch-ker.sh c /linux-2.6.14.1/

注:假定内核源码在/linux-2.6.14.1/

 

4  

编译配置内核

首先先
load
一个默认的内核
/linux-2.6.14/arch/arm/configs/smdk2410_defconfig,
在这个配置文件上改

   
Loadable module support >

       
[*] Enable loadable module support

           
[*] Automatic kernel module loading

 

   
System Type >

       
[*] S3C2410 DMA support

 

   
Boot options >

       
Default kernel command string:

       
noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

 

   
Floating point emulation >

       
[*] NWFPE math emulation

 

   

Device Drivers >

       

Memory Technology Devices (MTD) >

           
[*] MTD partitioning support

               

#支持MTD分区,这样我们在前面设置的分区才有意义

           
[*] Command line partition table parsing

               
#支持从命令行设置flash分区信息,灵活

           

RAM/ROM/Flash chip drivers >

               
<*> Detect flash chips by Common Flash Interface (CFI) probe

               
<*> Detect nonCFI AMD/JEDECcompatible flash chips

               
<*> Support for Intel/Sharp flash chips

               
<*> Support for AMD/Fujitsu flash chips

               
<*> Support for ROM chips in bus mapping

           
NAND Flash Device Drivers >

               
<*> NAND Device Support

               
<*> NAND Flash support for S3C2410/S3C2440 SoC

       

Character devices >

           
[*] Nonstandard serial port support

           
[*] S3C2410 RTC Driver

 

   
File systems >

       
<> Second extended fs support #

去除对
ext2
的支持

       
Pseudo filesystems >

           
[*] /proc file system support

           
[*] Virtual memory file system support (former shm fs)

           
[*] /dev file system support (OBSOLETE)

           
[*] Automatically mount at boot (NEW)

               
#

这里会看到我们前先修改
fs/Kconfig
的成果
devfs

已经被支持上了

       
Miscellaneous filesystems >

           
<*> Compressed ROM file system support (cramfs) #

支持
cramfs

           
<*> YAFFS2 file system support     
            
#

支持
yaffs2

       
Network File Systems >

           

<*> NFS file system support

【上篇】
【下篇】

抱歉!评论已关闭.