• <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>

            milkyway的窩

            最初想法的誕生地

             

            ce內存映射的點點滴滴

            wy12218 發表于 2006-11-9 18:17:00

            OEMAddressTable里定義的映射關系是給ARM MMU用的,是在KernelStart(source code參考wince420private目錄)時建立的,只要WINCE還在跑,就不會解除.
            OEMAddressTable里的Virtual Addr和Physical Addr是對ARM來說的. 其實對于WINCE,就只能訪問到它的Virtual address. 也就是說,OEMAddressTable里的Virtual address對WINCE 系統來說才是Physical Address.

            經過OEMAddressTable映射后的系統的物理地址,在0x80000000~0x9fffffff之間.是caching and buffering的地址,這個地址加上0x20000000,就是它的cache & buffering disabled地址.所有的硬件寄存器的地址都在這個地址段上,受MMU保護的.

            上面講的系統的物理地址,從0x80000000~0xbfffffff,在Kernel Mode下都可以直接訪問. ISR是在KERNEL里,也就可以直接訪問這些系統的物理地址.無所謂"因為ISR只能訪問靜態映射的虛擬地址".

            上面說過,對于ARM來說,有虛擬地址和物理地址之分,對于WINCE來說,也有虛擬地址和物理地址之分. 可以這么說,ARM的虛擬地址就是WINCE系統的物理地址.
            32位的OS總共有4G的虛擬地址空間,WINCE也不例外. 其中,0x00000000~0x80000000是Application Space; 0x80000000~0xffffffff是System Reserved. 系統的物理地址就在System Reserved的這段,只能在KERNEL MODE訪問. 那么,當APPLICATION和DRIVER(都是運行在USER MODE)要訪問這些在System Reserved地址段的硬件寄存器或MEMORY怎么辦呢? 只好再建立一層映射關系,在Application Space里分配一段空間,把它映射到System Reserved里的地址上,這就是VirtualAlloc/Copy和MmMapIoSpace干的事情.

            如果你的地址是這樣聲明的:
            #define RTC_COUNTER *((volatile unsigned *)0x91000000)
            那么直接讀寫就可以了,比如:
            int nRtc = RTC_COUNTER;
            RTC_COUNTER = nRtc;

            否則,可以用:
            int nRtc = READ_REGISTER_ULONG(0x91000000);
            WRITE_REGISTER_ULONG(0X91000000, nRtc);

            其實這兩種方式的本質是一樣的,都是把地址聲明成某個數據類型,然后就可以直接讀寫了.下面是READ_REGISTER_ULONG()和WRITE_REGISTER_ULONG()的定義:
            #define READ_REGISTER_ULONG(reg) (*(volatile unsigned long * const)(reg))
            #define WRITE_REGISTER_ULONG(reg, val) (*(volatile unsigned long * const)(reg)) = (val)

            ?

            posted on 2007-02-02 09:27 milkyway 閱讀(2263) 評論(2)  編輯 收藏 引用 所屬分類: wince(別人的文章技巧總結)

            評論

            # re: ce內存映射的點點滴滴 2009-02-08 16:47 a mao

            這事我見過的講述WinCE內存和Arm地址最最透徹的文章,由于初入WinCE,本來還是比較模糊的概念,現在全部理清了。

            真的感謝博主!!!  回復  更多評論   

            # re: ce內存映射的點點滴滴 2010-05-15 21:02 s

            同感@a mao
              回復  更多評論   

            導航

            統計

            公告

            隨筆皆原創,文章乃轉載. 歡迎留言!

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            天天做夜夜做久久做狠狠| 精品久久一区二区| 一本一本久久a久久综合精品蜜桃| 成人国内精品久久久久影院VR| 天天综合久久久网| 综合久久精品色| 久久精品国产只有精品2020| 久久精品中文字幕第23页| 亚洲精品无码专区久久久 | 无码国内精品久久综合88| 亚洲日本va中文字幕久久| 国产国产成人久久精品| 一本色道久久综合狠狠躁| 国产成人99久久亚洲综合精品| 久久精品国产2020| 999久久久免费国产精品播放| 精品久久久久久中文字幕大豆网| 热99re久久国超精品首页| 色婷婷综合久久久久中文一区二区| 丁香五月综合久久激情| 精品国产VA久久久久久久冰| 狠狠色噜噜色狠狠狠综合久久| 国产伊人久久| 狠狠综合久久综合中文88| 色诱久久久久综合网ywww| 国产精品久久婷婷六月丁香| 国产午夜精品理论片久久| 国产精品久久久久影视不卡| 久久久久青草线蕉综合超碰| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品国产99久久香蕉| 天天综合久久久网| 国产精品久久亚洲不卡动漫| 国产亚洲色婷婷久久99精品| 日产精品久久久久久久| 新狼窝色AV性久久久久久| 亚洲女久久久噜噜噜熟女| 亚洲精品蜜桃久久久久久| 性做久久久久久久| 久久国产精品无码HDAV| 久久精品国产免费|