增加wince中的NandFlash的容量

来源:互联网 发布:淘宝拍照软件 编辑:程序博客网 时间:2024/05/16 17:38
增加wince中的NandFlash的容量 (2008-01-10 09:51:05)
 

1.在bootloader(也叫做yl2440_mon或bios)中找到nand.c打开,找到
static struct Partition NandPart[] = {
        {0,                  0x00040000, "boot"},        //256K
        {0x00040000, 0x01c00000, "kernel"},        //28M
        {0x01c40000, 0x023c0000, "flash"},
        {0,                                , 0}
};
改成象我上面这样,我将NAND分了3个区,分区0装bootloader,分区1装wince,分区3用作wince中的NandFlash。

2.在cfnand.h中找到
#define  NUM_BLOCKS       0x1000      //  64 MB On-board NAND flash.
#define  NUM_BLOCKS_NK   0x700       //  每个块有16384字节,和在nand.c中定义的大小相同即可
改成象我上面这样

3.在loader.h中找到
#define RESERVED_BOOT_BLOCKS       0x710  //  0x1c40000/0x4000=0x710
#define IMAGE_START_BLOCK           RESERVED_BOOT_BLOCKS
改成象我上面这样,这里Reserved_Boot_Blocks是指给bootloader和NK在NAND上保留多少块,剩下的就可以用作wince中的NandFlash了。我的前两个分区占了0x1c40000的空间,共0x710个块。原文件中有这样的注释:(NBOOT_BLOCK_SIZE + TOC_BLOCK_SIZE + EBOOT_BLOCK_SIZE),其实根本不是那么回事,优龙用自己的bootloader装载wince,没用nboot,也没用eboot,所以不要看这个注释,否则想穿脑袋也想不通。

4.这样改的原因简单分析一下:
在fmd.cpp中有这样一句:
pFlashInfo->dwNumBlocks        = NUM_BLOCKS - IMAGE_START_BLOCK;
这个其实就是告诉上层驱动,我的FLASH有多少块。
原来loader.h中:#define RESERVED_BOOT_BLOCKS       0xF80
0x1000-0xf80=0x80,0x80*0x4000=0x2000000,大小正好是2M字节,明白了没

原创粉丝点击