吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>基于WinCE應用程序直接讀/寫/擦除flash設備的方法

基于WinCE應用程序直接讀/寫/擦除flash設備的方法

2017-11-03 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

在網上的很多論壇中都看到有人提問:應用程序如何直接讀寫Flash的扇區,或者是類似的問題。總之,就是希望應用程序能夠直接訪問Flash設備,直接讀寫扇區的數據,或者作其他的操作。這幾天沒事,就嘗試著做了一下,把我的方法介紹給大家。
  先做個簡單的介紹。WinCE支持Flash設備,一般指Nandflash或者是NORFlash,采用的架構一般是FAL+FMD架構,我們實現FMD相關的接口函數,Flash的驅動就算完成了。當WinCE啟動以后,我們能夠看到Flash設備的磁盤。我們可以操作磁盤上面的文件,但是不能直接操作flash設備,對Flash設備的操作無非就是:讀,寫,擦除,讀ID。
  現在開始介紹實現的方法。我們如果想在應用程序中直接調用FMD中的FMD_ReadSector(。.),FMD_WriteSector(。.),FMD_EraseBlock(。.)是不太現實的。這里再補充一下,這三個函數分別是Flash的讀扇區,寫扇區,擦除塊的函數。好像有點羅嗦了。但是我們可以在應用程序中調用到FMD_OEMIoControl(。.)函數,這個是可以做到的。所以我們需要改一下Flash設備的驅動程序,也就是改Flash設備驅動中的FMD_OEMIoControl(。.)這個函數。我的改動如下:
  BOOL FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf,DWORDnInBufSize, PBYTE pOutBuf, DWORD nOutBufSize,PDWORDpBytesReturned)
  PFMDInterface pInterface = (PFMDInterface)pOutBuf;
  RETAILMSG(1, (TEXT(“FMD_OEMIoControl: control code is0x%xrn”),dwIoControlCode));
  switch(dwIoControlCode)
  case IOCTL_FMD_GET_INTERFACE:
  if (!pOutBuf nOutBufSize 《 sizeof(FMDInterface))
  DEBUGMSG(1, (TEXT(“FMD_OEMIoControl: IOCTL_FMD_GET_INTERFACEbadmeter(s).rn”)));
  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: unrecognizedIOCTL(0x%x).rn”), dwIoControlCode));
  return(FALSE);
  return(TRUE);
  在FMD_OEMIoControl(。.)函數里面增加了3個case,這3個case里面調用了讀/寫/擦除函數。至于Case的值,我是隨便定義的。這樣Flash設備的驅動部分就改完了。
  在改完Flash驅動以后,我下面會提供兩種方法,每一種方法都和Flash設備的注冊表配置有關:
  1. 以Nandflash為例,當然對于NORFlash來說大同小異,注冊表配置如下:
  [HKEY_LOCAL_MACHINEDriversBuiltInNANDFlash]
  “Dll”=“ep94xxnandflash.dll”
  “Prefix”=“DSK”
  “Order”=dword:4
  ;“Ioctl”=dword:4
  “Profile”=“NSFlash”
  “IClass”=“A4E7EDDA-E575-4252-9D6B-4195D48BB865”
  ; Override names in default profile
  [HKEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlash]
  “Name”=“Ep94xx NAND Flash”
  “Folder”=“NANDFlash”
  “PartitionDriver”=“MSPart.dll”
  “AutoMount”=dword:1
  “AutoPart”=dword:1
  “AutoFormat”=dword:1
  [HKEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlashFATFS]
  “EnableCache”=dword:1
  “CacheSize”=dword:1000
  “MountBootable”=dword:1
  “Flags”=dword:00000024
  “CheckForFormat”=dword:1
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統的設計與實現
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
88娱乐城网址| 哪个百家乐官网最好| 南宁百家乐官网赌| 百家乐官网筹码方形筹码| 百家乐模拟游戏下载| 宝马会网上娱乐| 正品百家乐官网的玩法技巧和规则 | 巨星百家乐官网的玩法技巧和规则 | 百家乐官网看不到视频| 百家乐网址皇冠现金网| 辽阳县| 百家乐筹码桌| 百家乐官网网站哪个好| 百家乐官网网站排名| 大发888casino下载| 恒丰百家乐官网的玩法技巧和规则| 大发888登陆| 阳宅24山流年吉凶方位| 皇冠足球投注图| 缅甸百家乐网络赌博解谜| 正规百家乐官网游戏下载| 闲和庄百家乐的玩法技巧和规则| 赌场百家乐官网投注公式| 威尼斯人娱乐场 澳门赌场| 电子百家乐官网打法| 大发888 大发888官网| 狮威百家乐官网娱乐平台| 哪个棋牌游戏平台好| 百家乐游戏开发技术| 百家乐官网玩法皇冠现金网| 太阳城雨伞| 百家乐官网技巧开户网址| 金臂百家乐| 百家乐是怎么赌法| 肯博百家乐官网的玩法技巧和规则 | 大发888游戏平台 官方| 东光县| 速博百家乐官网的玩法技巧和规则| 百家乐英皇娱乐场| 大发888网页版登陆| 网上百家乐官网赢钱公式|