電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>基于WinCE應(yīng)用程序直接讀/寫/擦除flash設(shè)備的方法

基于WinCE應(yīng)用程序直接讀/寫/擦除flash設(shè)備的方法

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

資料介紹

在網(wǎng)上的很多論壇中都看到有人提問:應(yīng)用程序如何直接讀寫Flash的扇區(qū),或者是類似的問題??傊?,就是希望應(yīng)用程序能夠直接訪問Flash設(shè)備,直接讀寫扇區(qū)的數(shù)據(jù),或者作其他的操作。這幾天沒事,就嘗試著做了一下,把我的方法介紹給大家。
  先做個簡單的介紹。WinCE支持Flash設(shè)備,一般指Nandflash或者是NORFlash,采用的架構(gòu)一般是FAL+FMD架構(gòu),我們實現(xiàn)FMD相關(guān)的接口函數(shù),F(xiàn)lash的驅(qū)動就算完成了。當(dāng)WinCE啟動以后,我們能夠看到Flash設(shè)備的磁盤。我們可以操作磁盤上面的文件,但是不能直接操作flash設(shè)備,對Flash設(shè)備的操作無非就是:讀,寫,擦除,讀ID。
  現(xiàn)在開始介紹實現(xiàn)的方法。我們?nèi)绻朐趹?yīng)用程序中直接調(diào)用FMD中的FMD_ReadSector(。.),F(xiàn)MD_WriteSector(。.),F(xiàn)MD_EraseBlock(。.)是不太現(xiàn)實的。這里再補充一下,這三個函數(shù)分別是Flash的讀扇區(qū),寫扇區(qū),擦除塊的函數(shù)。好像有點羅嗦了。但是我們可以在應(yīng)用程序中調(diào)用到FMD_OEMIoControl(。.)函數(shù),這個是可以做到的。所以我們需要改一下Flash設(shè)備的驅(qū)動程序,也就是改Flash設(shè)備驅(qū)動中的FMD_OEMIoControl(。.)這個函數(shù)。我的改動如下:
  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(。.);//調(diào)用讀Sector函數(shù)
  break;
  case 0xff654321:
  FMD_WriteSector(。.);//調(diào)用寫Sector函數(shù)
  break;
  case 0xff123457:
  FMD_EraseBlock(。.);//調(diào)用擦除Block函數(shù)
  break;
  default:
  DEBUGMSG(1, (TEXT(“FMD_OEMIoControl: unrecognizedIOCTL(0x%x).rn”), dwIoControlCode));
  return(FALSE);
  return(TRUE);
  在FMD_OEMIoControl(。.)函數(shù)里面增加了3個case,這3個case里面調(diào)用了讀/寫/擦除函數(shù)。至于Case的值,我是隨便定義的。這樣Flash設(shè)備的驅(qū)動部分就改完了。
  在改完Flash驅(qū)動以后,我下面會提供兩種方法,每一種方法都和Flash設(shè)備的注冊表配置有關(guān):
  1. 以Nandflash為例,當(dāng)然對于NORFlash來說大同小異,注冊表配置如下:
 ?。跦KEY_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
 ?。跦KEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlash]
  “Name”=“Ep94xx NAND Flash”
  “Folder”=“NANDFlash”
  “PartitionDriver”=“MSPart.dll”
  “AutoMount”=dword:1
  “AutoPart”=dword:1
  “AutoFormat”=dword:1
 ?。跦KEY_LOCAL_MACHINESystemStorageManagerProfilesNSFlashFATFS]
  “EnableCache”=dword:1
  “CacheSize”=dword:1000
  “MountBootable”=dword:1
  “Flags”=dword:00000024
  “CheckForFormat”=dword:1
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1FS4059B帶NTC升壓型兩節(jié)鋰電池充電管理IC數(shù)據(jù)手冊
  2. 3.24 MB   |  1次下載  |  免費
  3. 2基于波形捕獲的超聲波傳感水流量計量技術(shù)應(yīng)用說明
  4. 1.01MB   |  1次下載  |  免費
  5. 3ADE-12H混頻器規(guī)格書
  6. 0.28 MB   |  1次下載  |  5 積分
  7. 4AD9984A高性能10位顯示接口英文手冊
  8. 0.49 MB   |  1次下載  |  5 積分
  9. 551開發(fā)板芯片資料
  10. 14.95 MB   |  1次下載  |  1 積分
  11. 6用TL431LI-Q1監(jiān)控電流供應(yīng)
  12. 176.71KB   |  1次下載  |  免費
  13. 7Q1和非Q1器件的TPS54340/360/540/560和TPS54340B/360B/540B/560B之間的差異
  14. 123.6KB   |  次下載  |  免費
  15. 8TPS512xx MOSFET驅(qū)動電路設(shè)計指南
  16. 886.86KB   |  次下載  |  免費

本月

  1. 1HFSS電磁仿真設(shè)計應(yīng)用詳解PDF電子教程免費下載
  2. 24.30 MB   |  129次下載  |  1 積分
  3. 2繼電保護原理
  4. 2.80 MB   |  42次下載  |  免費
  5. 3正激、反激、推挽、全橋、半橋區(qū)別和特點
  6. 0.91 MB   |  36次下載  |  1 積分
  7. 4GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
  8. 7.43 MB   |  18次下載  |  免費
  9. 5在設(shè)計中使用MOSFET瞬態(tài)熱阻抗曲線
  10. 1.57MB   |  15次下載  |  免費
  11. 6AD18學(xué)習(xí)筆記
  12. 14.47 MB   |  8次下載  |  2 積分
  13. 7H橋中的電流感測
  14. 545.39KB   |  7次下載  |  免費
  15. 8幾張電動車充電器電路圖
  16. 0.23 MB   |  6次下載  |  1 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935113次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191360次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81578次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73804次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分