在WinCE下,应用程序直接读写擦除flash设备的方法

在WinCE下,应用程序直接读写擦除flash设备的方法

ID:41007869

大小:33.50 KB

页数:5页

时间:2019-08-13

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

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

1、WinCEWinCE1WinCEWinCE1在网上的很多论坛中都看到有人提问:应用程序如何直接读写Flash的扇区,或者是类似的问题。总之,就是希望应用程序能够直接访问Flash设备,直接读写扇区的数据,或者作其他的操作。这几天没事,就尝试着做了一下,把我的方法介绍给大家。先做个简单的介绍。WinCE支持Flash设备,一般指Nandflash或者是NORFlash,采用的架构一般是FAL+FMD架构,我们实现FMD相关的接口函数,Flash的驱动就算完成了。当WinCE启动以后,我们能够看到Flash设备的磁盘。我们可以操作磁盘上面的文件,但是

2、不能直接操作flash设备,对Flash设备的操作无非就是:读,写,擦除,读ID。现在开始介绍实现的方法。我们如果想在应用程序中直接调用FMD中的FMD_ReadSector(..),FMD_WriteSector(..),FMD_EraseBlock(..)是不太现实的。这里再补充一下,这三个函数分别是Flash的读扇区,写扇区,擦除块的函数。好像有点罗嗦了。但是我们可以在应用程序中调用到FMD_OEMIoControl(..)函数,这个是可以做到的。所以我们需要改一下Flash设备的驱动程序,也就是改Flash设备驱动中的FMD_OEMIoC

3、ontrol(..)这个函数。我的改动如下:BOOL FMD_OEMIoControl(DWORDdwIoControlCode,PBYTEpInBuf,DWORDnInBufSize,PBYTEpOutBuf,DWORDnOutBufSize,PDWORDpBytesReturned){   PFMDInterfacepInterface=(PFMDInterface)pOutBuf;   RETAILMSG(1,(TEXT("FMD_OEMIoControl:controlcodeis0x%xr"),dwIoControlCode));

4、   switch(dwIoControlCode)   {       caseIOCTL_FMD_GET_INTERFACE:           if(!pOutBuf

5、

6、nOutBufSize

7、             pInterface->cbSize=sizeof(FMDInterface);           pInterface->pInit=FMD_Init;           pInterface->pDeInit=FMD_Deinit;           pInterface->pGetInfo=FMD_GetInfo;                  pInterface->pGetInfoEx=NULL;//FMD_GetInfoEx;           pInterface->pGetBlockStatu

8、s=FMD_GetBlockStatus;               pInterface->pSetBlockStatus=FMD_SetBlockStatus;           pInterface->pReadSector=FMD_ReadSector;           pInterface->pWriteSector=FMD_WriteSector;           pInterface->pEraseBlock=FMD_EraseBlock;           pInterface->pPowerUp=FMD_Power

9、Up;           pInterface->pPowerDown=FMD_PowerDown;           pInterface->pGetPhysSectorAddr=NULL;                      pInterface->pOEMIoControl=FMD_OEMIoControl;                      break;      case0xff123456:           FMD_ReadSector(..);               //调用读Sector函数      

10、     break;      case0xff654321:           FMD_WriteSector(..);     

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

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

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