WinCE下应用程序直接读_写_擦除flash设备的方法.pdf

WinCE下应用程序直接读_写_擦除flash设备的方法.pdf

ID:52954534

大小:69.96 KB

页数:6页

时间:2020-04-03

WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第1页
WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第2页
WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第3页
WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第4页
WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第5页
WinCE下应用程序直接读_写_擦除flash设备的方法.pdf_第6页
资源描述:

《WinCE下应用程序直接读_写_擦除flash设备的方法.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、·WinCE下应用程序直接读/写/擦除flash设备的方法·在网上的很多论坛中都看到有人提问:应用程序如何直接读写Flash的扇区,或者是类似的问题。总之,就是希望应用程序能够直接访问Flash设备,直接读写扇区的数据,或者作其他的操作。这几天没事,就尝试着做了一下,把我的方法介绍给大家。在网上的很多论坛中都看到有人提问:应用程序如何直接读写Flash的扇区,或者是类似的问题。总之,就是希望应用程序能够直接访问Flash设备,直接读写扇区的数据,或者作其他的操作。这几天没事,就尝试着做了一下,把我的方法介绍给大家。先做个简单的介绍。WinCE支持Flash设

2、备,一般指Nandflash或者是NORFlash,采用的架构一般是FAL+FMD架构,我们实现FMD相关的接口函数,Flash的驱动就算完成了。当WinCE启动以后,我们能够看到Flash设备的磁盘。我们可以操作磁盘上面的文件,但是不能直接操作flash设备,对Flash设备的操作无非就是:读,写,擦除,读ID。现在开始介绍实现的方法。我们如果想在应用程序中直接调用FMD中的FMD_ReadSector(..),FMD_WriteSector(..),FMD_EraseBlock(..)是不太现实的。这里再补充一下,这三个函数分别是Flash的读扇区,写扇

3、区,擦除块的函数。好像有点罗嗦了。但是我们可以在应用程序中调用到FMD_OEMIoControl(..)函数,这个是可以做到的。所以我们需要改一下Flash设备的驱动程序,也就是改Flash设备驱动中的FMD_OEMIoControl(..)这个函数。我的改动如下:BOOLFMD_OEMIoControl(DWORDdwIoControlCode,PBYTEpInBuf,DWORDnInBufSize,PBYTEpOutBuf,DWORDnOutBufSize,PDWORDpBytesReturned){PFMDInterfacepInterface=(PF

4、MDInterface)pOutBuf;RETAILMSG(1,(TEXT("FMD_OEMIoControl:controlcodeis0x%xr"),dwIoControlCode));switch(dwIoControlCode){caseIOCTL_FMD_GET_INTERFACE:if(!pOutBuf

5、

6、nOutBufSize

7、turn(FALSE);}pInterface->cbSize=sizeof(FMDInterface);pInterface->pInit=FMD_Init;pInterface->pDeInit=FMD_Deinit;pInterface->pGetInfo=FMD_GetInfo;pInterface->pGetInfoEx=NULL;//FMD_GetInfoEx;pInterface->pGetBlockStatus=FMD_GetBlockStatus;pInterface->pSetBlockStatus=FMD_SetBlockStatus;

8、pInterface->pReadSector=FMD_ReadSector;pInterface->pWriteSector=FMD_WriteSector;pInterface->pEraseBlock=FMD_EraseBlock;pInterface->pPowerUp=FMD_PowerUp;pInterface->pPowerDown=FMD_PowerDown;pInterface->pGetPhysSectorAddr=NULL;pInterface->pOEMIoControl=FMD_OEMIoControl;break;case0xff

9、123456:FMD_ReadSector(..);//调用读Sector函数break;case0xff654321:FMD_WriteSector(..);//调用写Sector函数break;case0xff123457:FMD_EraseBlock(..);//调用擦除Block函数break;default:DEBUGMSG(1,(TEXT("FMD_OEMIoControl:unrecognizedIOCTL(0x%x).r"),dwIoControlCode));return(FALSE);}return(TRUE);}在FMD_OEMI

10、oControl(..)函数里面增加了3个case,

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

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

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