• <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 閱讀(2286) 評論(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牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品久久久久久久久| 久久无码人妻一区二区三区| 国产精品久久久久一区二区三区| 国产精品毛片久久久久久久| 久久久久国产亚洲AV麻豆| 精品久久亚洲中文无码| 久久精品国产精品国产精品污| 合区精品久久久中文字幕一区| 色婷婷综合久久久久中文 | 伊人久久综合成人网| 亚洲国产精品久久久久婷婷软件| 久久综合久久伊人| 久久无码av三级| 久久精品午夜一区二区福利| 日本精品久久久久久久久免费| 国产精品久久久久…| 人妻久久久一区二区三区| 久久夜色精品国产| 99久久99久久精品国产片果冻| 久久久噜噜噜久久中文福利| 久久久无码精品亚洲日韩京东传媒| 丰满少妇人妻久久久久久4| 国产精品一区二区久久不卡| 久久强奷乱码老熟女网站| 美女久久久久久| 久久精品国产亚洲精品| 99久久国产亚洲高清观看2024 | 三级韩国一区久久二区综合 | 国产国产成人久久精品 | 亚洲人成电影网站久久| 久久久久久国产精品免费免费| 日韩一区二区久久久久久| 久久精品国产秦先生| 国产精品久久精品| 7国产欧美日韩综合天堂中文久久久久| 亚洲女久久久噜噜噜熟女| 亚洲欧美日韩中文久久| 欧美一区二区三区久久综| 久久人爽人人爽人人片AV| 国产婷婷成人久久Av免费高清| 国产综合久久久久|