7222|16

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何确定NAND Flash的分区大小 [复制链接]

我用的是三星的K9F1G08,128M,现在它被分成2个块,前面一块用来存放EBoot,NK等东西,后面一块是在系统起来后能够看到的,也可以用来存文件的那个东西。现在我想知道是这两个块的分界点在什么地方设置,也就是说可以固定前面NK块和后面应用块的大小么?在网上看到有说这个分界点是系统自己在维护,每次开机的时候,会根据NK的大小来确定“应用块”的大小,如果是这样,那么有什么办法知道,当前“应用块”的大小呢?也就是他们分界的地方在哪里呢?

最新回复

看来已经解决了,呵呵,恭喜啊, 那我就不用说了  详情 回复 发表于 2009-11-23 15:35
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不赞同是由NK的大小来决定分界点,应该是在BSP中有个参数设置来确定文件系统区的起始地址。
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
NK的大小来确定“应用块”的大小也不是不可以吧?分区情况可以通过bootloader查看
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼上两位,那这个分界点在哪里看呢?一般是在什么地方或什么函数中在设置这个分界点?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
正常的一个系统如果剩余的FLASH区作为一个应用块设置成了一个文件系统,WINCE启动后会将其mount成 flash盘符,像系统的D盘一样。为了保证文件系统的可用性,对于NK来讲21m,25m,31m应用块肯定都是一样的大小的,至于32M和64M之间是否有区别不清楚,即使是有区别也是在BSP中设定好的,而不是随时分配的。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
请问楼上,在什么地方设置这个分界点呢?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
我也没具体看代码,你找下FLASH层的相关代码看看,或者是驱动之类的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
以2440为例:你可以看下\SMDK2440A\Src\Common\Smartmedia\fmd下的源代码,确定NAND大小的在NAND.HZ中   #define NAND_BLOCK_CNT          (1024 * 4) 你可以算下你的EBOOT和NK用的空间的大小,换成块数 N,#define NAND_BLOCK_CNT          ((1024 * 4) - N) 这样系统就可以吧剩下的格成一个盘。具体的你可以看下源代码
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

9
 
这个应该是在BOOTLOADER的代码中处理的,你可以在BOOT代码中查找BP_OpenPartition()函数,他用来设置BINFS和FAT分区的大小。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
自已可以在EBOOT那设定分区的大小,如果自己没有去设的话,则系统会自动分配。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼主的问题。。我觉得你说的分解点应该是分区表。。你的NK。EBOOT都是裸数据。,。。然后就把后面的剩余nand分为一个fat。。。。那么这个分解点就是分区表了
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

12
 
这个是在NAND驱动中设置好的,有的驱动是把要用作存放bootloader、nk的块设为坏块,有的如7楼所说在2440的包里是通过#define START_BLOCK (NAND_BLOCK_CNT-(2*1024*1024/NAND_BLOCK_SIZE))这句来将剩下的作为FAT分区的大小设为2*1024*1024,也就是2M
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

13
 
在bootloader的nand.c里有这样一个结构:
static struct Partition NandPart[] = {
{0,                  0x00030000, "boot"},                //192K
        {0x00030000, 0x001d0000, "kernel"},
        {0x00200000, 0x01e00000, "rootfs"},                //30M
        {0x02000000, 0x0157c000, "NK.bin"},        //22M
        {0x0357c000, 0x009c4000, "nandflash"}, //10M
                {0,                         0         , 0}
};
这个结构定义了各块的分界。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 7 楼 ffeige1984 的回复:
以2440为例:你可以看下\SMDK2440A\Src\Common\Smartmedia\fmd下的源代码,确定NAND大小的在NAND.HZ中? #define NAND_BLOCK_CNT? ? ? ? ? (1024 * 4) 你可以算下你的EBOOT和NK用的空间的大小,换成块数 N,#define NAND_BLOCK_CNT? ? ? ? ? ((1024 * 4) - N) 这样系?-

同意,不过,还得根据硬件来分,硬件是否支持你所想要的分块,也是必要的
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

15
 
如果你是想进行分区的话  可以参考下EBOOT 下的main.c 和fmd.cpp
这个里面有分区的过程  调用的函数是 BP_OpenPartition() 然后在注册表中添加相应信息
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

16
 
感谢各位的帮忙,找到了这个设置的地方了,
我的是2440A,是在EBoot里面,在BP_OpenPartition这个函数的参数里面设置,我的原来设置的是使用NK的大小来分界的,再次感谢大家的帮忙!!!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
看来已经解决了,呵呵,恭喜啊,
那我就不用说了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表