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

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            无码乱码观看精品久久| 国产L精品国产亚洲区久久| 久久久久女教师免费一区| 日韩一区二区久久久久久| 久久99热这里只有精品国产| 91精品国产9l久久久久| 99久久精品免费观看国产| 久久久久久亚洲精品影院| 伊人久久综合精品无码AV专区| 国产精品免费看久久久| 精品熟女少妇aⅴ免费久久| 午夜天堂av天堂久久久| 久久久艹| 久久天堂AV综合合色蜜桃网| 久久久久久国产精品美女 | 天天综合久久久网| 欧美性大战久久久久久| 91精品国产综合久久久久久| 久久久久久国产精品无码下载| 久久久av波多野一区二区| 亚洲欧美久久久久9999| 7国产欧美日韩综合天堂中文久久久久 | 久久精品国产一区二区电影| 久久无码人妻一区二区三区午夜| 国内精品久久久久久麻豆| 99久久中文字幕| 欧洲人妻丰满av无码久久不卡 | 久久91精品国产91久久户| 久久青青色综合| 一本久久a久久精品综合香蕉| 99久久国产综合精品五月天喷水| 性欧美丰满熟妇XXXX性久久久| 欧美日韩精品久久久久| 女同久久| 久久人人爽人人爽人人av东京热 | 精品久久久久中文字| 日本三级久久网| 国产日韩久久久精品影院首页| 精品国产一区二区三区久久| 97久久精品午夜一区二区| 久久国产精品久久精品国产|