门头沟灵山门票免费:FS2410 nandflash重新分区

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 19:27:05
FS2410 nandflash重新分区 2009-04-20 11:12

    优龙FS2410开发板默认配有linux和Wince两个系统,两系统占了64m nandflash的大部分,由于开发的应用程序是基于WinCE的,打算将Linux相关分区移除,其空间用于WinCE应用程序。即将NAND分3个区,分区0装bootloader,分区1装wince,分区2用作wince中的NandFlash

1、首先用ADS打开S3C2410_BIOS,这个是公司光盘提供的bootloader的源程序. 打开其中的Nand.c文件,原来的定义如下

static struct Partition NandPart[] = {

         {0,             0x00040000, "bootloader"},          //256K

         {0x00040000, 0x001c0000, "zImage"},       //0.75M

         {0x00200000, 0x01e00000, "cramfs"},            //30M

         {0x02000000, 0x02000000, "WinCE"},    //32M,

         {0,                       0         , 0}

};

第一部分用来放bootloader, 第二部分是linux的内核,第三部分是linux文件系统(linux内核和文件系统是分开的). 最后32m wince占了30m,剩下2m可以当硬盘用. 把它改成如下的形式:

static struct Partition NandPart[] = {
        {0,                  0x00040000, "boot"},          //256K
        {0x00040000, 0x02000000, "wince"},        //32M, 用来放wince
        {0x02040000, 0x01fc0000, "nandflash"},   //用来做硬盘, 31.75
        {0,                         0         , 0}
};

2、同样在nand.c文件里找到LoadRun函数

void LoadRun(int part_sel)里面的
if(part_sel == 3)
size = 0x01e00000; //load wince ...;        注释掉。


void NandLoadRunW(void)里面的
LoadRun(3);     改成LoadRun(1); //表示从flash第一分区加载.


保存,make一下(不需要改其他设置),可以得到S3C2410_BIOS.bin文件。

 

.按照使用手册,用sjf2410将上述bios烧写到NandFlash中,(用上述文件替换原来“flash烧写”文件夹下的.bin文件).

 

3、将“\\SMDK2410\DRIVERS\NandFlsh\FMD”中的cfnand.h文件中的下面几个定义改动一下,如下所示:

#define   NUM_BLOCKS    0x1000    //   64 MB On-board NAND flash
#define NUM_BLOCKS_NK   0x800       // 每个块有16KB字节,和在nand.c中定义的大小相同即可, 用NUM_BLOCKS_NK*16KB,得到的结果即是之前在nand.c里定义的用来存放wince映像的大小32MB.

 

4、需要在bootload中修改WIN CE烧写的地址与引导WIN CE启动的地址,确保它们相同.将“\\SMDK2410\INC”文件下的loader.h中的下面几个定义改动一下,如下所示:
#define RESERVED_BOOT_BLOCKS        0xF80

改为如下:
#define RESERVED_BOOT_BLOCKS       0x810 // 0x1c40000/0x4000=0x710
#define IMAGE_START_BLOCK           RESERVED_BOOT_BLOCKS

        这里Reserved_Boot_Blocks是指给bootloader和NK在NAND上保留多少块,剩下的就可以用作wince中的NandFlash了。我的前两个分区占了0x02040000的空间,共0x810个块。原文件中有这样的注释:(NBOOT_BLOCK_SIZE + TOC_BLOCK_SIZE + EBOOT_BLOCK_SIZE),其实根本不是那么回事,优龙用自己的bootloader装载wince,没用nboot,也没用eboot,所以不要看这个注释,否则想穿脑袋也想不通。
        这样改的原因简单分析一下:在fmd.cpp中有这样一句:

pFlashInfo->dwNumBlocks = NUM_BLOCKS - IMAGE_START_BLOCK;


这个其实就是告诉上层驱动,我的FLASH有多少块。
原来loader.h中:#define RESERVED_BOOT_BLOCKS    0xF80
0x1000-0xf80=0x80,0x80*0x4000=0x2000000,大小正好是2M字节


5、点“build and sygen”编译平台,得到NK.nb0,通过USB下载到Nandflash中,运行,进入wince系统后,如使用手册4.4.5的步骤格式化及重新分区,可以看到Nandflash的空间由原来的2M扩展到31.75M