• <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 閱讀(2275) 評論(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级毛片免费观看| 久久se精品一区二区| 欧美精品丝袜久久久中文字幕 | 精品久久一区二区| 欧美久久亚洲精品| 国产精品一久久香蕉产线看| 日韩电影久久久被窝网| 久久国产精品-久久精品| 久久天天躁夜夜躁狠狠躁2022| 久久久91精品国产一区二区三区| 人妻无码久久精品| 99久久免费国产精品| 久久久一本精品99久久精品66| 蜜臀久久99精品久久久久久| 久久精品国产一区二区三区日韩| 亚洲精品乱码久久久久久蜜桃不卡| 国内精品伊人久久久久网站| 日韩人妻无码精品久久免费一| 久久久久亚洲AV综合波多野结衣 | 久久久久国产精品| 亚洲中文字幕无码一久久区| 久久午夜无码鲁丝片午夜精品| 久久精品国产精品青草| 久久久久无码精品国产| 日本WV一本一道久久香蕉| 久久久精品国产Sm最大网站| 国产成人久久精品二区三区| 老司机国内精品久久久久| 久久91亚洲人成电影网站| 久久久免费精品re6| 久久久久久久97| 久久亚洲国产中v天仙www| 嫩草影院久久99| 久久97久久97精品免视看| 久久国产视频99电影| 久久午夜综合久久| 久久久久久久97| 国产精品久久亚洲不卡动漫| 99久久免费只有精品国产|