Chinaunix首页 | 论坛 | 博客
  • 博客访问: 808474
  • 博文数量: 76
  • 博客积分: 2211
  • 博客等级: 上尉
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-26 19:36
文章分类

全部博文(76)

文章存档

2012年(67)

2011年(9)

分类: LINUX

2012-01-05 10:27:27

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

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

一,内核移植

我这里用的是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.ccs8900.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 ”CS8900  support”

           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

 

阅读(3637) | 评论(1) | 转发(3) |
给主人留下些什么吧!~~

genehang2012-01-05 10:34:57

文章中发了很多的图片,这样跟能说明问题的,但是很多没有显示的?
我还是直接写吧