zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
40楼#
发布于:2007-05-28 17:41
我没有在4.2上面测试过,从网友的反馈得知4.2上不能直接用2048做SECTOR_SIZE,那就需要模拟成小页,512bytes/page,256pages/block.做成这样的话就肯定在什么版本上都能运行了。模拟成小页的我一开始也是这么做的,系统也已经运行了,后来觉得效率可能差一些,所以就改成现在这个样子的。
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
41楼#
发布于:2007-05-28 17:35
#ifndef SECTOR_SIZE
#define SECTOR_SIZE                    (GetBytesPerSector())
#endif

#ifndef PAGES_PER_BLOCK
#define PAGES_PER_BLOCK             (GetSectorsPerBlock())  
#endif

#ifndef SECTOR_TO_BLOCK
#ifndef LOG_2_PAGES_PER_BLOCK
#define LOG_2_PAGES_PER_BLOCK        (GetLog2PagesPerBlock(NAND_PAGE_CNT))
#endif
#define SECTOR_TO_BLOCK(sector)     ((sector) >> LOG_2_PAGES_PER_BLOCK )
#endif
#ifndef BLOCK_TO_SECTOR
#ifndef LOG_2_PAGES_PER_BLOCK
#define LOG_2_PAGES_PER_BLOCK        (GetLog2PagesPerBlock(NAND_PAGE_CNT))
#endif
#define BLOCK_TO_SECTOR(block)      ((block)  << LOG_2_PAGES_PER_BLOCK )
#endif

#ifndef BADBLOCKMARK
#define BADBLOCKMARK                0x00
#endif
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
42楼#
发布于:2007-05-23 15:46
引用第3楼zhengshijie于2007-01-16 13:21发表的  :
因为loader.h没有给大家,里面有两个宏定义需要修改一下,
// BinFS work area defined in boot.bib
//#define BINFS_RAM_START             (0x8c021000 | CACHED_TO_UNCACHED_OFFSET)   // uncached
//#define BINFS_RAM_LENGTH            0x5000

.......

高手看看
#ifndef SECTOR_SIZE
#define SECTOR_SIZE                    512
#endif

#ifndef PAGES_PER_BLOCK
#define PAGES_PER_BLOCK             32
#endif

#ifndef BADBLOCKMARK
#define BADBLOCKMARK                0x00
#endif

#ifndef SECTOR_TO_BLOCK
#define SECTOR_TO_BLOCK(sector)     ((sector) >> 5 )
#endif
#ifndef BLOCK_TO_SECTOR
#define BLOCK_TO_SECTOR(block)      ((block)  << 5 )
#endif
是不是也要做相应的修改呀
#ifndef SECTOR_SIZE
#define SECTOR_SIZE                    2048
#endif

#ifndef PAGES_PER_BLOCK
#define PAGES_PER_BLOCK             64
#endif

#ifndef BADBLOCKMARK
#define BADBLOCKMARK                0x00
#endif

#ifndef SECTOR_TO_BLOCK
#define SECTOR_TO_BLOCK(sector)     ((sector) >> 6 )
#endif
#ifndef BLOCK_TO_SECTOR
#define BLOCK_TO_SECTOR(block)      ((block)  << 6 )
#endif
bindaz
驱动牛犊
驱动牛犊
  • 注册日期2007-03-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分232分
  • 威望25点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
43楼#
发布于:2007-05-17 23:05
好人啊
QQ550325618 msn:bindaz@163.com
java_zhang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-30
  • 最后登录2008-01-22
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
44楼#
发布于:2007-05-06 15:03
thank you! it's so kind of you!
iampxj
驱动牛犊
驱动牛犊
  • 注册日期2004-01-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
45楼#
发布于:2007-04-28 10:42
no no
hiboy1318702
驱动牛犊
驱动牛犊
  • 注册日期2007-04-19
  • 最后登录2007-04-19
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
46楼#
发布于:2007-04-19 18:38
#define CMD_READ2               0x50        //  Read2
楼主,代码里你用到这个命令码,在你测试过的K9F1G08芯片手册里可根本没有这个命令码可以用的.这个是那种32M的老芯片里的.你是怎么理解的?
wince_lover
驱动中牛
驱动中牛
  • 注册日期2007-01-10
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分1103分
  • 威望735点
  • 贡献值2点
  • 好评度279点
  • 原创分1分
  • 专家分0分
47楼#
发布于:2007-04-17 10:11
正准备换NANDFLASH,学习学习
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
48楼#
发布于:2007-04-11 22:51
木有用
要调整读写的顺序
[url]http://sniper167.bokee.com[/url]
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
49楼#
发布于:2007-04-02 16:22
请问一下,我直接调整了fmd.h中PSectorInfo结构体的顺序,把BAD标志放在第一个位置,这样有问题吗?
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
50楼#
发布于:2007-03-29 17:33
to jasonshi:
  BAD 标志位置请看源码,已经根据大页的做了相应的改动。
MBR和512的一样,bootpart.cpp,bootpart.h都不改动,逻辑上还是512/sector.这个问题前面已经讨论过。
to chunpengkai:
  请确认一下spare区的读写,sectorinfo的读写是否OK,因为创建分区的时候会把sectorinfo写到spare区域,如果所有读写都没有问题,保证FMD_GetInfo()提供的是你FLASH信息。应该没有什么问题了。
jasonshi
驱动小牛
驱动小牛
  • 注册日期2004-10-11
  • 最后登录2011-07-01
  • 粉丝2
  • 关注0
  • 积分23分
  • 威望446点
  • 贡献值3点
  • 好评度256点
  • 原创分0分
  • 专家分0分
51楼#
发布于:2007-03-29 12:20
请问一下搂主,大页NAND在格式化成binfs时,MBR怎么写?
还有,大页NAND一般坏块标志是OOB的前两个字节,可是FLASHINFO定义的坏块标志是在第6个字节。这个怎么办?
chunpengkai
驱动牛犊
驱动牛犊
  • 注册日期2006-03-29
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望116点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
52楼#
发布于:2007-03-27 23:51
谢谢
同时有个问题请教一下
我用的是K9F1G16,使用的2440,用WINCE4.2,在驱动中没有使用你的代码,但是我在FMD_INIT中,分几次人为增加了,读写和擦除操作,通过U-BOOT来验证,发现操作是正常的,但是在CE下,不能对其进行格式化,也无法识别,请问问题应该怎样解决
jm_its
驱动牛犊
驱动牛犊
  • 注册日期2006-10-19
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
53楼#
发布于:2007-03-25 22:03
好!谢谢!
dingdehong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望25点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
54楼#
发布于:2007-03-02 09:53
改128M Nand后的问题
首先非常感谢郑世杰的无私奉献,我的系统终于可以启动了.
改128M Nand后的问题如下:
1   Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
SDMMC config set rGPGCON: 286a5aa
OEMInit Done...
Sp=ffffc7cc  
系统启动到这里有时就不动了,是什么原因
2  USB同步不了了,以前64M的时候是可以的,想不能换大页Flash后和USB有何关联?
交流促进步dingdehong@126.com QQ:121133529 Tel:13543009985
hshowby
驱动牛犊
驱动牛犊
  • 注册日期2007-02-14
  • 最后登录2007-02-14
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
55楼#
发布于:2007-02-14 15:36
sjf2440.exe里没有1G08的信号,需要自己修改源码,要修改的东西也不是很多,我也是刚改好!
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
56楼#
发布于:2007-02-05 16:48
to waterman:
谢谢指出问题4,是我的coding错误,可以参考FMD_ReadSector1208()改正过来。
问题3,实际应用过程中,我并没有碰到出错,所以我把ECC去掉了,你认为有必要就自己加好了。
问题1,你想做成512,也无需修改FAL,你也改不了FAL,你没有它的源码。
你看到存储管理里是2K的,有什么疑问吗?它显示的是你的FLASH信息。
你最后的疑问是什么呢?因为没看过你的代码不知道你到底怎么做的。我的驱动已经验证过了是可行的。
waterman
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2007-02-02
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
57楼#
发布于:2007-02-05 11:33
zhengshijie大虾:

我有些疑问:按你所说,FAL可以自动识别是large page,然后再remap 到sector (512B),
但是我按照你说的走了一遍,结果WINCE的storage manager始终是把flash Disk的sector 看成2KB大小。

 问题如下:

   1。如我们所知,FAL+FMD will package as DISK Driver(FlashDrv.dll), in the diver,
       it will provide 如下接口:DISK_Init,DISK_GetInfo.
        文件系统会得知flash disk的sector 的大小。
     所以,如果要将large page 做成512B sector size,是否要修改FAL

   2. 如果不需要修改FAL,那么是否需要其他配置。
  3. 你的驱动没有提到ECC,nand flash很容易出错,这个东东怎么办?
  4.在你的驱动中,在读一个FMD_ReadSector1G08,如果读多个sector一次,那么sectorinfo可能会被覆盖。

  最后明确一下,将large page (2KB)nand flash安装上去,我已经做成功,只需要将FMD的驱动按照large page flash driver修改一下即可,然后解决一下文件系统的一些小问题(wince 4.2,文件系统有兼容性问题在2KB sector)。所以我只能将2KB page size 安装成2KB sector。
  但是我无法做到将2KB page 配置成 512B,而不损失空间,或者修改FAL,或者违反flash的写特性(large page nand flash,一个物理页最多能写8次)

 如果能及时回答将非常,谢谢,大家可以多交流。
dreamzqw
驱动牛犊
驱动牛犊
  • 注册日期2004-11-25
  • 最后登录2019-04-08
  • 粉丝1
  • 关注0
  • 积分19分
  • 威望182点
  • 贡献值0点
  • 好评度55点
  • 原创分1分
  • 专家分2分
58楼#
发布于:2007-02-02 14:36
可是我的是pxa270的CPU,要怎么改呀
newuser1
驱动牛犊
驱动牛犊
  • 注册日期2005-11-14
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
59楼#
发布于:2007-01-31 17:17
我用压缩包里的sjf2440.exe 测试k9f1g08却无法识别,提示无法读出flash id,不知为何,有没有人遇到这个问题
游客

返回顶部