您的位置:首页 > 运维架构 > Linux

fs2410 linux系统部署

2013-04-25 15:22 211 查看

Fs2410 linux系统部署

一.系统资源介绍:

Fs2410采用S3C2410的嵌入式微处理器,基于ARM920T内核,主频203MHz。

外部存储器,内存:64M字节,地址0x30000000;

            NOR Flash: 2M字节;

            NAND Flash: 64M字节;

S3C2410支持两种启动方式:一种是从NAND FLASH启动;另外一种是从外部片选的Nor Flash启动

硬件资源分配图如下所示:

 

二.系统部署

目前,系统采用u-boot-1.3.4引导linux内核,同时用到了nor flash和nand
flash。由nor flash来片选启动。





 

Linux 2.6.26.5 arch/arm/plat-s3c24xx/common-smdk.c中nand flash分区定义如下:

static struct mtd_partition smdk_default_nand_part[] = {

        [0] = {

              .name      = "Uboot-1.3.4",

              .size = 0x80000,

              .offset     = 0,

       },

       [1] = {

              .name      = "Linux Kernel 2.6.26.5",

              .offset = 0x00080000,

              .size = 0x200000,

       },

       [2] = {

              .name      = "Rootfs jffs2",

              .offset = 0x280000,

              .size = 0x1800000,

       },

       [3] = {

              .name      = "Roofts user",

              .offset     = 0x1a80000,

              .size = SZ_1M*24,

       },

}

系统启动的过程如下:先有nor flash从地址0启动,运行u-boot,然后读取存储在nand
flash中的内核,加载到内存0x3000 8000,然后启动内核,最后内核加载jffs2根文件系统,整个系统就跑起来了,理想情况是u-boot也从nand中启动就最好了。

三.系统配置

3.1 u-boot的配置

从u-boot中加载linux kernel的配置,设置启动的参数

 set bootcmd
'nand read 0x30008000 0x80000 0x0020 0000;bootm 0x30008000'

具体含义是从地址0x80000处,读取长度为0x200000的数据复制到内存0x30008000,然后从该内存地址启动;

 Setenv bootargs root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc

 Saveenv

 

 1)Nand erase 0x8 0000 0x20
0000 //从地址0x8000起,删除长度0x200000, 2M;

 2)Nand write 0x30008000 0x8
0000  0x20 0000 //从内存30008000的数据写到地址8000上,长度是200000

 3)nand read 0x30008000  0x8 0000  0x0020 0000 //从地址80000将长度为20
0000的数据复制到3000 8000

3.2 jffs2根文件系统的制作

Mkfs.jffs2 –r /nfsrootfs/rootfs –o rootfs.jffs2 –e 0x4000 --pad=0x1800000 -n

 

   /nfsrootfs/rootfs根文件系统的目录

   Rootfs.jffs2    
生成的映像文件

   -e 0x4000      nand flash的块大小

   0x1800000    
该大小应该 >= 生成的映像文件的大小,  

            在将映像文件写到nand flash上时,该数值和写入的空间应该一致,否则启动时会发生错误,错误如下: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x008d4020:
0x0004 instmtd->read(0x3c08 bytes from 0x8d83f8) returned ECC error

mtd->read(0x400 bytes from 0x8dc000) returned ECC error

    -n             如果挂载后出现 CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0 , 则需要该 –n 的参数

 

启动时把/bin/sh文件删掉了,产生错误:

cannot run '-/bier to activate this console.

 

将jffs2根文件系统映像写入nand flash

Tftp 30008000 rootfs.jffs2                    //通过u-boot将映像导到内存30008000

Nand write.jffs2 30008000 280000 180 0000     //将在内存中的映像保存到地址为280000,长度为1800000的nand
flash空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: