wince对flash的支持

wince对flash的支持

ID:16638851

大小:36.05 KB

页数:21页

时间:2018-08-23

wince对flash的支持_第1页
wince对flash的支持_第2页
wince对flash的支持_第3页
wince对flash的支持_第4页
wince对flash的支持_第5页
资源描述:

《wince对flash的支持》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、wince对flash的支持WinCE中nandflash驱动开发介绍收藏先来谈一下flash,flash是一种非易失存储器,一般flash存储设备分为Nandflash和Norflash。这两种flash各有优缺点。在读写速度上,norflash的读速度快一些,nandflash的写速度会快一些。Nandflash的容量一般都比Norflash大很多,而且相比价格比较便宜。但是Norflash支持XIP,而nandflash不支持,而且Nandflash可能有坏块。相关的比较,网上很多文章都有介绍,这里就说这么多了。这里介绍nandflash驱动

2、,在WinCE中,有专门针对flash存储设备驱动的支持,一般传统采用FAL+FMD的架构。在WinCE最新的版本中,也就是WindowsCE6.0R2中,还支持MDD+PDD的架构。在FAL+FMD架构中,FAL层由微软来实现,我们需要实现FMD层的相关接口函数。在MDD+PDD的架构中,MDD替换了原来架构中的FAL,而PDD相当于原来的FMD,只要实现PDD层就可以了。如果你的系统已经升级到WinCE6.0R2,那么你应该可以在WINCE600PublicCOMMONOAKDRIVERS目录下面找到这两种架构驱动的源代码。由于MDD

3、+PDD的架构在WinCE6.0R2中才有支持,本人也没有实现过。所以这里只介绍基于FAL+FMD架构下,nandflash驱动的开发,这也是目前大家都采用的开发flash驱动的架构。如上面所说,我们需要实现FMD层的相关接口,下面来介绍一下各个接口函数:1.PVOIDFMD_Init(LPCTSTRlpActiveReg,PPCI_REG_INFOpRegIn,PPCI_REG_INFOpRegOut):这个是Flash设备的初始化函数。在WinCE启动的时候,要加载Flash驱动时,首先调用这个函数对flash设备进行初始化。如果你的系统中有n

4、andflash的controller,那么你需要在这里对你的nandflashcontroller进行初始化。如果没有的话,你需要针对你的硬件设计进行相关的片选,时序等进行配置。返回一个handle表示成功,这个handle将被FMD_Deinit(..)函数用到,如果返回NULL表示失败。2.BOOLFMD_Deinit(PVOIDhFMD):这个函数在nandflash驱动卸载的时候被调用,参数就是FMD_Init函数返回的Handle.一般在这个函数里面,你可以释放一些用到的资源,然后关闭nandflashcontroller。3.BOOL

5、FMD_ReadSector(SECTOR_ADDRstartSectorAddr,LPBYTEpSectorBuff,PSectorInfopSectorInfoBuff,DWORDdwNumSectors):这个函数用于读nandflash的一个扇区。对于nandflash来说,分大page和小page,大page是2048个bytes一页,小page是512个bytes一页。所以大page每个扇区有2048bytes,小page每个扇区有512bytes。startSectorAddr:nandflash物理扇区的起始地址,对于nandfla

6、sh来说,就是nandflash中从哪个page开始。pSectorBuff:扇区数据buffer,从nandflash中读出的每一个扇区的数据都存放在这个buffer中。pSectorInfoBuff:扇区信息buffer,一般每个扇区的信息会被保存在nandflash的带外数据中,针对小page,带外数据有16bytes,大page有64bytes。从nandflash的带外数据将该扇区的相关信息读出来,存放在这个buffer中。dwNumSectors:读取多少个扇区,对于nandflash来说相当于读取多少个page。4.BOOLFMD_W

7、riteSector(SECTOR_ADDRstartSectorAddr,LPBYTEpSectorBuff,PSectorInfopSectorInfoBuff,DWORDdwNumSectors):该函数用于写nandflash的一个扇区。参数和上面的FMD_ReadSector的参数意思一样,就不多说了。5.BOOLFMD_EraseBlock(BLOCK_IDblockID):该函数用于擦出nandflash的一个block,参数为要擦除nandflash的block地址,也就是第几个block。6.DWORDFMD_GetBlockSt

8、atus(BLOCK_IDblockID):该函数获得nandflash中某一个block的状态。参数为nandflash

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。