青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

milkyway的窩

最初想法的誕生地

 

wince5.0 I/O操作基礎(chǔ)(2)

X86ARM架構(gòu)的CPU,wince訪問(wèn)系統(tǒng)內(nèi)存的方法隨程序所屬模式層次的不同而有所區(qū)別.
? 1.
在系統(tǒng)內(nèi)核模式下(kernel mode),在OAL層訪問(wèn),只需要在OEMAddressTable 中做靜態(tài)的虛實(shí)地址映射就可以了.例如X86架構(gòu)的映射表格式如下:
???; OEMAddressTable defines the mapping between Physical and Virtual Address? //
定義4GB的虛擬地址和512MB存儲(chǔ)的映射關(guān)系
?? ;?? o MUST be in a READONLY Section
?? ;?? o First Entry MUST be RAM, mapping from 0x80000000 -> 0x00000000
?? ;?? o each entry is of the format ( VA, PA, cbSize )
?? ;?? o cbSize must be multiple of 4M
?? ;?? o last entry must be (0, 0, 0)
?? ;?? o must have at least one non-zero entry
?? ; RAM 0x80000000 -> 0x00000000, size 64M?????? //
把物理地址為0x00000000映射到虛擬地址為 0x80000000?
?? dd? 80000000h,??? 0,?? 04000000h
?? ; FLASH and other memory, if any
?? ; dd? FlashVA,????? FlashPA,??? FlashSize
?? ; Last entry, all zeros
?? dd? 0?? 0?? 0
2.
在驅(qū)動(dòng)或應(yīng)用程序(user mode)中訪問(wèn)RAM,既可以通過(guò)OEMAddressTable+VirtualCopy方式,也可以直接用MmMapIoSpace函數(shù)建立物理地址到當(dāng)前進(jìn)程虛擬地址的映射關(guān)系.
經(jīng)過(guò)OEMAddressTable,實(shí)現(xiàn)的只是CPU物理地址到OS內(nèi)核層虛擬地址的一次映射,如果需要在普通的應(yīng)用程序中訪問(wèn)內(nèi)存,還要再用VirtuaAlloc+VirtualCopy做一個(gè)內(nèi)核到當(dāng)前進(jìn)程的二次映射(有一種情況例外,就是你的OS被配置成Full Kernel Mode,這時(shí)任何應(yīng)用程序都可以訪問(wèn)OS內(nèi)核地址).
?????
簡(jiǎn)單說(shuō)明幾個(gè)關(guān)鍵函數(shù):
?????VirtualAlloc
用于在當(dāng)前進(jìn)程的虛擬地址空間中保留或者提交空間,在保留時(shí)以64KB為單位,提交時(shí)以4KB為單位。其函數(shù)原型為

?LPVOID VirtualAlloc(

? LPVOID lpAddress, ?// 分配虛擬地址的起始指針

? DWORD dwSize, ????// 大小,以字節(jié)為單位

? DWORD flAllocationType, // 類型,設(shè)為MEM_RESERVE

? DWORD flProtect????//? 存取保護(hù),設(shè)為PAGE_NOACCESS

);

? VirtualCopy 用來(lái)綁定物理地址到靜態(tài)映射虛擬地址:

? BOOL VirtualCopy(

? LPVOID lpvDest, ????????// 虛擬目的地址指針,接受VirtualAlloc的返回值

? LPVOID lpvSrc, ????????// 源物理地址指針

? DWORD cbSize, ?????????// 大小必須與虛擬地址相同

? DWORD fdwProtect??// 存取保護(hù)類型

);

這里需要注意的是 fdwProtect 參數(shù)。如果是驅(qū)動(dòng)程序訪問(wèn),需要設(shè)置為 PAGE_NOCACHE ,以訪問(wèn)無(wú)緩存段虛擬地址。如果映射的物理地址范圍在 0x1FFFFFFF 之上,必須使用 PAGE_PHYSICAL ,此時(shí)必須把 lpvSrc 右移八位,實(shí)現(xiàn)地址對(duì)齊。(這是由內(nèi)核中 VirtualCopy 的實(shí)現(xiàn)決定的,在那個(gè)函數(shù)中會(huì)判斷如果是 PAGE_PHYSICAL 就將 PHYSADDR 左移 8 位移回來(lái),源代碼位于 private/winceos/coreos/nk/kernel 目錄下的 virtmem.c中的DoVirtualCopy

? ??? MmMapIoSpace 用來(lái)把物理地址直接映射到與進(jìn)程無(wú)關(guān)的虛擬地址上。函數(shù)原型為

?PVOID MmMapIoSpace(

? PHYSICAL_ADDRESS PhysicalAddress,

? ULONG NumberOfBytes,

? BOOLEAN CacheEnable

);

? 一個(gè)使用 VirtualAlloc+Copy 的例子:把物理地址為 0x10000000 的單元映射到虛擬地址空間中。

#include <windows.h>

?

#define PHYSADDR? ((PVOID)0x10000000)

// PHYSADDR is the physical address of the peripheral

// registers

?

#define SIZE? (4800*4)

?

LPVOID lpv;

BOOL bRet;

?

lpv = VirtualAlloc(0, SIZE, MEM_RESERVE, PAGE_NOACCESS);

// For a user mode driver, always leave the first

// parameter 0 and use only the flags MEM_RESERVE

// and PAGE_NOACCESS Check the return value: lpv == 0

// is an error

?

printf(TEXT("VirtualAlloc reservation @%8.8lx\r\n"), lpv);

bRet = VirtualCopy(lpv, PHYSADDR>>8, SIZE, PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL);

// The lpv parameter is the virtual address returned

// by VirtualAlloc().

// Always use PAGE_NOCACHE */

?

// Check the return value: bRet ==0 is an error */

printf(TEXT("VirtualCopy returned: %d\r\n"), bRet);

?

// At this point lpv is a virtual address which maps

// the I/O registers

// at PHYSADDR for SIZE bytes */

?

posted on 2007-03-19 16:10 milkyway 閱讀(1759) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Wince學(xué)習(xí)小結(jié)

導(dǎo)航

統(tǒng)計(jì)

公告

隨筆皆原創(chuàng),文章乃轉(zhuǎn)載. 歡迎留言!

常用鏈接

留言簿(37)

隨筆分類(104)

隨筆檔案(101)

文章分類(51)

文章檔案(53)

wince牛人

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一级播放| 欧美激情亚洲自拍| 亚洲国产裸拍裸体视频在线观看乱了中文 | 最新日韩在线| 国产精品99久久久久久人| 亚洲欧洲三级电影| 国产一区二区三区奇米久涩| 欧美日韩另类字幕中文| 欧美欧美天天天天操| 欧美mv日韩mv国产网站| 欧美日韩精品在线观看| 久久精品卡一| 国产一区二区日韩精品| 欧美一区二区视频网站| 在线视频中文亚洲| 亚洲精品乱码久久久久| 国产精品手机视频| 久久久久九九视频| 激情欧美一区| 性欧美大战久久久久久久免费观看| 国产精品五月天| 久久精品女人天堂| 国产欧美日韩亚洲精品| 中文av一区二区| 亚洲日本成人| 国产精品欧美日韩| 蜜臀久久久99精品久久久久久| 亚洲欧美视频一区二区三区| 亚洲欧美日韩精品在线| 亚洲夜晚福利在线观看| 欧美精品三级在线观看| 欧美福利视频在线| 在线观看精品| 国产偷自视频区视频一区二区| 亚洲欧美日韩区| 亚洲精品免费一区二区三区| 在线观看的日韩av| 欧美精选在线| 欧美伊人影院| 亚洲欧美在线免费观看| 亚洲一区二区三区久久| 极品少妇一区二区| 欧美精品久久99久久在免费线| 一本一道久久综合狠狠老精东影业| 亚洲美女区一区| 国产精品视频免费| 欧美日韩视频第一区| 欧美一区视频| 欧美成人一区二区三区在线观看| 蜜桃久久精品乱码一区二区| 亚洲精品久久嫩草网站秘色| 在线视频你懂得一区 | 中文在线不卡视频| 欧美国产在线观看| 一区二区三区**美女毛片 | 久久久精品免费视频| 在线观看一区二区精品视频| 欧美成人免费全部观看天天性色| 亚洲欧洲中文日韩久久av乱码| 欧美1区2区| 亚洲精品自在久久| 免费亚洲婷婷| 国产日产欧美a一级在线| 国产日韩精品久久| 欧美日韩在线一区二区三区| 亚洲黄色精品| 一本色道久久综合亚洲精品婷婷 | 欧美激情偷拍| 亚洲欧美日本另类| 激情一区二区三区| 91久久极品少妇xxxxⅹ软件| 好吊成人免视频| 亚洲精品婷婷| 在线午夜精品自拍| 激情久久久久久| 尤物在线观看一区| 欧美亚州一区二区三区| 欧美电影在线| 国产一区欧美| 亚洲女人天堂av| 久久久综合香蕉尹人综合网| 久热成人在线视频| 欧美视频中文一区二区三区在线观看| 激情文学综合丁香| 亚洲毛片一区二区| 99伊人成综合| 欧美一级理论片| 亚洲第一综合天堂另类专| 日韩一级黄色av| 欧美精品自拍| 影音先锋欧美精品| 99精品视频一区| 一本色道久久| 亚洲欧洲在线看| 久久久中精品2020中文| 国产日本欧美一区二区三区在线 | 国内成人精品2018免费看| 最新国产成人av网站网址麻豆| 午夜在线观看免费一区| 好吊日精品视频| 久久久精品视频成人| 在线视频你懂得一区| 日韩一二三在线视频播| 欧美成人激情在线| 亚洲精品视频在线| 亚洲大胆人体在线| 欧美一级视频免费在线观看| 免费91麻豆精品国产自产在线观看| 国产日韩av一区二区| 亚洲免费一区二区| 亚洲午夜在线| 99精品视频一区| 亚洲欧美国产高清| 日韩亚洲欧美成人| 99这里只有久久精品视频| 欧美激情一二三区| 亚洲精品国产精品国产自| 久久香蕉精品| 免费亚洲电影在线| 欧美日韩专区| 欧美日韩一区在线播放| 欧美一区二区视频在线| 老司机免费视频一区二区| 亚洲啪啪91| 国产精品免费看片| 亚洲伦理在线免费看| 欧美精品一区二区三区在线看午夜| 亚洲在线观看视频网站| 免费欧美在线视频| 亚洲欧美一区二区三区久久| 欧美精品aa| 国内一区二区三区在线视频| 亚洲一区二区欧美| 欧美一级淫片播放口| 亚洲精品中文字幕女同| 国产精品乱子久久久久| 最新国产の精品合集bt伙计| 国产精品久久久久久av福利软件| 亚洲欧美综合国产精品一区| 国产精品久久久久毛片软件| 亚洲国产精品v| 国产精品推荐精品| 一区二区三区蜜桃网| 性欧美xxxx大乳国产app| 欧美超级免费视 在线| 欧美.www| 亚洲黄色毛片| 亚洲国产成人精品久久| 欧美在线免费观看亚洲| 香港成人在线视频| 国产精品久久一级| 欧美大胆a视频| 亚洲天堂男人| 美女图片一区二区| 国产日韩在线播放| 9国产精品视频| 欧美成人久久| 欧美中文字幕在线观看| 国产精品久久福利| 欧美精品一区二区三区四区| 99精品久久免费看蜜臀剧情介绍| 久久久久久久999| 欧美一区二区高清| 欧美在线播放一区二区| 亚洲欧洲美洲综合色网| 国产精品www.| 欧美日韩视频不卡| 蜜臀久久99精品久久久久久9| 亚洲国产精品第一区二区三区| 在线电影欧美日韩一区二区私密| 伊人久久大香线蕉av超碰演员| 欧美色综合天天久久综合精品| 欧美激情小视频| 欧美一区二视频| 美国十次了思思久久精品导航| 欧美日韩一区二区在线播放| 国内精品免费午夜毛片| 国产乱码精品一区二区三| 狠狠色丁香婷婷综合| 99精品视频免费观看视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美在线中文字幕| 国产精品家庭影院| 久久精品视频免费| 午夜久久久久| 中文精品视频| 亚洲少妇最新在线视频| 欧美精品一卡二卡| 影音欧美亚洲| 午夜精品久久久久久久99樱桃| 国产精品99久久久久久久vr| 欧美伊人精品成人久久综合97| 欧美性大战久久久久| 伊人久久大香线蕉综合热线 | 欧美在线观看一区| 老**午夜毛片一区二区三区| 欧美一区=区| 欧美日韩伦理在线| 亚洲国产日日夜夜| 欧美在线视频导航|