Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1043573
  • 博文数量: 244
  • 博客积分: 6820
  • 博客等级: 准将
  • 技术积分: 3020
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 21:33
文章分类

全部博文(244)

文章存档

2013年(1)

2012年(16)

2011年(132)

2010年(3)

2009年(12)

2008年(80)

我的朋友

分类: LINUX

2008-09-09 22:58:59

 
 

3. 编译
[root@localhost vivi]# make

------------------------------------------------------------------------
会在 vivi目录生成你要的 vivi 程序(bootloader
------------------------------------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
说明:我的nand falsh的一块为16k
所以上面的分区:

**************************************
  
分区信息
**************************************
bootloader
  128k
param    
  896k
kernel    
  3M
root      
  20M
user      
  40M

**************************************
  bon
操作
**************************************
bon part 0 1M 4M:m 24M:m

解释一下上面的命令:
        
1个分区从0开始;
        
2个分区从0x30000(192K)开始;
        
3个分区从0x200000(2M)开始;
        
4个分区从0x400000(4M)开始.
***********************************
  bon part info
***********************************

bon part info
BON info. (4 partitions)
N offset      size            flags     bad
---------------------------------------------
  0: 0x00000000  0x00100000      00000000    0    1M
  1: 0x00100000  0x00300000      00000000    0    3M
  2: 0x00400000  0x01400000      00000001    0   20M
  3: 0x01800000  0x027fc000      00000001    0   39M+1008k

***********************************
  part show
***********************************
mtdpart info. (5 partitions)
name              offset        size        flag
------------------------------------------------
bootloader      : 0x00000000    0x00020000     0  128k
param           : 0x00020000    0x000e0000     0  896k
kernel          : 0x00100000    0x00300000     0    3M
root            : 0x00400000    0x01400000     4   20M
user            : 0x01800000    0x02c00000     4   44M
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
==============================================================
      
三:  内核 编译
===============================================================

三: 内核 编译
注意:用的编译器是4.2.0的交叉编译器

1. 修改 Makefile
[root@localhost porting]# cd linux-2.6.22
[root@localhost linux-2.6.22]# vim Makefile
修改 ARCH CROSS_COMPILE
--------------------------------------------------------------
ARCH            ?= arm
CROSS_COMPILE   ?=/usr/local/arm/4.2.0/bin/arm-none-eabi-

2. 修改common-smdk.c文件
[root@localhost linux-2.6.22]# vim arch/arm/plat-s3c24xx/common-smdk.c
------------------------------------------------------------------------------
static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name   = "Boot",
                .size   = SZ_128K,
                .offset = 0,
        },
        [1] = {
                .name   = "param",
                .offset = MTDPART_OFS_APPEND,
                .size   = SZ_1M - SZ_128K,
        },
        [2] = {
                .name   = "kernel",
                .offset = SZ_1M,
                .size   = SZ_1M * 3,
        },
        [3] = {
                .name   = "root",
                .offset = MTDPART_OFS_APPEND,
                .size   = SZ_2M * 10,
        },

/*
      ,
        [5] = {
                .name   = "S3C2410 flash partition 5",
                .offset = SZ_1M * 14,
                .size   = SZ_1M * 10,
        },
        [6] = {
                .name   = "S3C2410 flash partition 6",
                .offset = SZ_1M * 24,
                .size   = SZ_1M * 24,
        },
        [7] = {
                .name   = "S3C2410 flash partition 7",
                .offset = SZ_1M * 48,
                .size   = SZ_16M,
        }
*/

};
---------------------------------------------------------------------------------

3. 去掉nand flash ECC
[root@localhost linux-2.6.22]# vim drivers/mtd/nand/s3c2410.c
---------------------------------------------------------------------------------
1
、打开drivers/mtd/nand/s3c2410.c
2
、搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里
3
、修改NAND_ECC_SOFTNAND_ECC_NONE
---------------------------------------------------------------------------------

4. 支持启动时挂载devfs
为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/devdevfs文件系统。
[root@localhost linux-2.6.22]# vi 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
----------------------------------------------------------------------------------

5. 编译内核
[root@localhost linux-2.6.22]# cp ./arch/arm/configs/s3c2410_defconfig  .config
[root@localhost linux-2.6.21.5]#  make  xconfig

----------------------------------------------------------------------------------
Userspace binary formats
         [ ]Kernel support for a.out and ECOFF binaries (BINFMT_AOUT)
(去除该选项)

Boot options
  Default kernel command string
  
改成:
   noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
再选上你想选的选项,如果编译通不过,对照着错误,看下把哪些选项去除,或添加哪些选项。
-----------------------------------------------------------------------------------

6. 编译
[root@localhost linux-2.6.22]# make zImage

============================================================
      
四:    文件系统的制作
===============================================================
四: 文件系统的制作
      
注意:交叉编译器 3.3.2   busybox1.5.1  静态编译
      
编译更详细的内容:

1. busybox的编译
-----------------------------------------------------------------------------
  修改busybox中的 Makefile文件
找到  ARCH   CROSS_COMPILE 修改成如下
ARCH            ?= arm
CROSS_COMPILE   ?= /usr/local/arm/3.3.2/bin/arm-linux-

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