<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 在WinCE下,應(yīng)用程序直接讀/寫/擦除flash設(shè)備的方法

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

          作者: 時(shí)間:2009-05-27 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/258023.htm
          然后編寫應(yīng)用程序,主要就是通過CreateFile來打開DSK1:設(shè)備,然后通過DeviceIoControl(..)函數(shù)來調(diào)用FMD_OEMIoControl(..)函數(shù),來達(dá)到直接讀/寫/擦除Flash設(shè)備的目的。應(yīng)用程序代碼如下:

            HANDLE hFirm;

            hFirm = CreateFile(TEXT(DSK1:), GENERIC_READ GENERIC_WRITE,0,NULL, OPEN_EXISTING, 0, NULL);

            printf(Open Flash Device Failed);

            return 0;

            iRet = DeviceIoControl(hFirm, 0xff123456, 1, 2, 3, 4, 5,6);//Read Flash Sector

            iRet = DeviceIoControl(hFirm, 0xff654321, 1, 2, 3, 4, 5,6);//Write Flash Sector

            iRet = DeviceIoControl(hFirm, 0xff123457, 1, 2, 3, 4, 5,6);//Erase Flash Block

            printf(DeviceIoControl OKrn);

            while(1)

            ;

          通過上面的應(yīng)用程序,就能夠調(diào)用到Flash設(shè)備驅(qū)動(dòng)中的FMD_OEMIoControl(..)函數(shù),這樣根據(jù)不同的case就可以調(diào)用讀/寫/擦除函數(shù)了。

          2. 以Nandflash為例,當(dāng)然對于來說大同小異,注冊表配置如下:

            [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

            [HKEY_LOCAL_MACHINESystemStorageManagerAutoLoadNSFlash]

            DriverPath=DriversBuiltInNANDFlash

            LoadFlags=dword:0

            BootPhase=dword:1

          然后編寫應(yīng)用程序,主要就是通過OpenStore來打開NSFlash,然后通過DeviceIoControl(..)函數(shù)來調(diào)用FMD_OEMIoControl(..)函數(shù),來達(dá)到直接讀/寫/擦除Flash設(shè)備的目的。應(yīng)用程序代碼如下:

            HANDLE hFirm;

            hFirm = OpenStore(LNSFlash);

            printf(Open Flash Device Failed);

            return 0;

            iRet = DeviceIoControl(hFirm, 0xff123456, 1, 2, 3, 4, 5, 6);

            iRet = DeviceIoControl(hFirm, 0xff654321, 1, 2, 3, 4, 5, 6);

            iRet = DeviceIoControl(hFirm, 0xff123457, 1, 2, 3, 4, 5, 6);

            printf(DeviceIoControl OKrn);

            while(1)

            ;

          通過這種方法,也可以在應(yīng)用程序中調(diào)用到FMD_OEMIoControl(..)函數(shù),從而達(dá)到直接訪問Flash設(shè)備的目的。

          總結(jié)一下,上面的兩種方法大致原理其實(shí)是一樣的,都是通過DeviceIoControl函數(shù)來調(diào)用FMD_OEMIoControl函數(shù),然后達(dá)到直接訪問Flash驅(qū)動(dòng)的目的,這樣就可以在應(yīng)用程序中直接讀/寫/擦除Flash設(shè)備了。

          最后需要注意的是:你的Flash驅(qū)動(dòng)里面需要對讀/寫/擦除等直接操作Flash硬件的函數(shù)進(jìn)行保護(hù),因?yàn)镕lash設(shè)備應(yīng)該是由的文件系統(tǒng)來管理的,而現(xiàn)在你的應(yīng)用程序也可以直接訪問它了,所以保險(xiǎn)起見,添加互斥量保護(hù)避免訪問沖突。

          上面的所有實(shí)現(xiàn),都是在6.0上面做得,相信在5.0上面應(yīng)該差不多。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();