在WinCE下,应用程序直接读写擦除flash设备的方法[文].pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在 WinCE 下,应用程序直接读写擦除 Flash 设备的方法 WinCE 操作系统支持 Flash 设备,一般指 Nandflash 或者是 NORFlash,采用的架构一般是 FAL+FMD 架构。为了实现 Flash 设备的驱动,我们需要实现 FMD 相关的接口函数。这样,在 WinCE 启动以后,我们能够看到 Flash 设备的磁盘,可以操作磁盘上面的文件。但是,对 Flash 设备的操作无非就是:读,写,擦除,读 ID。 然而,在应用程序中直接调用 FMD_ReadSector(..),FMD_WriteSector(..),FMD_EraseBlock(..) 函数是不太现实的。为了解决这个问题,我们可以在应用程序中调用 FMD_OEMIoControl(..) 函数,并修改 Flash 设备驱动程序中的 FMD_OEMIoControl(..) 函数。 修改后的 FMD_OEMIoControl(..) 函数如下: ```c BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize, PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned) { PFMDInterface pInterface = (PFMDInterface)pOutBuf; RETAILMSG(1, (TEXT("FMD_OEMIoControl: control code is 0x%x\r\n"), dwIoControlCode)); switch(dwIoControlCode) { case IOCTL_FMD_GET_INTERFACE: if (!pOutBuf || nOutBufSize < sizeof(FMDInterface)) { DEBUGMSG(1, (TEXT("FMD_OEMIoControl: IOCTL_FMD_GET_INTERFACE bad parameter(s).\r\n"))); return(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; 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; case 0xff123456: FMD_ReadSector(..); // 调用读 Sector 函数 break; case 0xff654321: FMD_WriteSector(..); // 调用写 Sector 函数 break; case 0xff123457: FMD_EraseBlock(..); // 调用擦除 Block 函数 break; default: DEBUGMSG(1, (TEXT("FMD_OEMIoControl: unrecognized IOCTL"))); break; } return TRUE; } ``` 通过修改 FMD_OEMIoControl(..) 函数,我们可以在应用程序中直接调用 FMD_ReadSector(..),FMD_WriteSector(..),FMD_EraseBlock(..) 函数,实现对 Flash 设备的直接读写擦除操作。 本文介绍了在 WinCE 下,应用程序直接读写擦除 Flash 设备的方法,并提供了修改 FMD_OEMIoControl(..) 函数的实现代码,为开发者提供了一个实用的解决方案。
- 粉丝: 1
- 资源: 14万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于javaswing的可视化学生信息管理系统
- 车辆、人检测14-TFRecord数据集合集.rar
- 车辆、人员、标志检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 一款完全免费的屏幕水印工具
- 基于PLC的空调控制原理图
- 基于VUE的短视频推荐系统
- Windows环境下Hadoop安装配置与端口管理指南
- 起重机和汽车检测17-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- XAMPP 是一个免费且易于安装的Apache发行版
- 汽车软件需求开发与管理-从需求分析到实现的全流程解析