日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2024年11月15日(星期五)

正在發(fā)生

2019年11月15日 | ARM11 S3C6410 的地址表

發(fā)布者:數(shù)字翻飛 來源: 51hei關鍵字:ARM11  S3C6410  地址表 手機看文章 掃描二維碼
隨時隨地手機看文章

參考:1)《ARM1176 JZF-S Technical Reference Manual》:
Chapter 3 System Control Coprocessor
Chapter 6 Memory Management Unit
2)u-boot源碼:
u-boot-x.x.x/cpu/s3c64xx/start.S
u-boot-x.x.x/board/samsung/smdk6410/lowlevel_init.S
1. ARMv6 MMU簡述
1)MMU由協(xié)處理器CP15控制;
2)MMU功能:地址映射(VA->PA),內存訪問權限控制;
3)虛擬地址到物理地址的轉換過程:Micro TLB->Main TLB->Page Table Walk
參考《ARM1176 JZF-S Technical Reference Manual》6.3節(jié),Memory access sequence
摘錄參考手冊中的一段描述:

When the processor generates a memory access, the MMU:
1. Performs a lookup for a mapping for the requested virtual address and current ASID and 
   current world, Secure or Non-secure, in the relevant Instruction or Data MicroTLB.
2. If step 1 misses then a lookup for a mapping for the requested virtual address and current 
   ASID and current world, Secure or Non-secure, in the main TLB is performed.
If no global mapping, or mapping for the currently selected ASID, or no matching NSTID, for 
the virtual address can be found in the TLBs then a translation table walk is automatically 
performed by hardware, unless Page Table Walks are disabled by the PD0 or PD1 bits in the 
TTB Control register, that cause the processor to return a Section Translation fault. See 
Hardware page table translation on page 6-36.
If a matching TLB entry is found then the information it contains is used as follows:
1. The access permission bits and the domain are used to determine if the access is permitted. 
   If the access is not permitted the MMU signals a memory abort, otherwise the access is 
   enabled to proceed. Memory access control on page 6-11 describes how this is done.
2. The memory region attributes control the cache and write buffer, and determine if the 
   access is Secure or Non-secure cached, uncached, or device, and if it is shared, as Memory 
   region attributes on page 6-14 describes.
3. The physical address is used for any access to external or tightly coupled memory to 
   perform Tag matching for cache entries.
2. 址映射過程詳述
參考《ARM1176 JZF-S Technical Reference Manual》6.11節(jié),Hardware page table translation
關于頁表:ARMv6的MMU進行地址映射時涉及到兩種頁表,一級頁表(first level page table)和二級頁表(coarse page table)。
關于映射方式:映射方式有兩種,段映射和頁映射。段映射只用到一級頁表,頁映射用到一級頁表和二級頁表。
關于映射粒度:段映射的映射粒度有兩種,1M section和16M supersection;頁映射的映射粒度也有兩種,4K small page和64K large page。
硬件在做地址轉換時,如何知道當前是什么映射方式以及映射粒度是多少呢?


這些信息可以從頁表的入口描述符中獲得。

一級頁表的入口描述符(first-level descriptor)格式如下:

第[1:0]位決定映射方式:
[1:0]=10b時,是段映射,此時只需作一級映射,描述符的最高12或8位存放的是段基址;
[1:0]=01b時,是頁映射,此時虛擬地址轉換為物理地址需要經歷二級映射,描述符的最高22位存放的是二級頁表的物理地址;
第[18]位決定段映射的粒度:
[18]=0b時,映射粒度為1M,描述符的最高12位存放段基址;
[18]=1b時,映射粒度為16M,描述符的最高8位存放段基址;
當映射方式為頁映射時,我們用到二級頁表,二級頁表的入口描述符(second-level descriptor)格式如下:

第[1:0]位決定頁映射的映射粒度:
[1:0]=10b或11b時,映射粒度為4KB,描述符的最高20位為頁基址;
[1:0]=01b時,映射粒度為64KB,描述符的最高16位為頁基址;
下面分4種情況對地址映射過程做詳細描述:
1)段映射,映射粒度為1M
2)段映射,映射粒度為16M
3)頁映射,映射粒度為4K
4)頁映射,映射粒度為64K
2.1段映射,映射粒度為1M
當映射方式為段映射,且映射粒度為1M時,映射圖如下:

虛擬地址到物理地址的映射過程如下:
虛擬地址的[31:20]位存放一級頁表的入口index,[19:0]位存放段偏移;
從TTBR(translation table base register,協(xié)處理器CP15中的一個寄存器,用于存放一級頁表的基址)寄存器中獲取一級頁表的基址;
一級頁表基址+ VA[31:20] = 該虛擬地址對應的頁表描述符的入口地址;
頁表描述符的[31:20]位為該虛擬地址對應的物理段基址;
物理段基址+ VA[19:0]段偏移= 物理地址
由映射圖可知,一個虛擬地址可以索引2^12個一級頁表入口,每個入口映射2^20大小的內存,故虛擬地址可以映射的最大物理內存為:2^12 * 2^20,即4G。
2.2 段映射,映射粒度為16M
當映射方式為段映射,且映射粒度為16M時,映射圖如下:

虛擬地址到物理地址的映射過程如下:
虛擬地址的[31:24]位存放一級頁表的入口index,[23:0]位存放段偏移;
從TTBR(translation table base register,協(xié)處理器CP15中的一個寄存器,用于存放一級頁表的基址)寄存器中獲取一級頁表的基址;
一級頁表基址+ VA[31:24] = 該虛擬地址對應的頁表描述符的入口地址;
頁表描述符的[31:24]位為該虛擬地址對應的物理段基址;
物理段基址+ VA[23:0]段偏移= 物理地址
由映射圖可知,一個虛擬地址可以索引2^8個一級頁表入口,每個入口映射2^24大小的內存,故虛擬地址可以映射的最大物理內存為:2^8 * 2^24,即4G。
2.3 頁映射,映射粒度為4K
當映射方式為頁映射,且映射粒度為4K時,映射圖如下:

虛擬地址到物理地址的映射過程如下:
虛擬地址的[31:20]位存放一級頁表的入口index,[19:12]位存放二級頁表的入口index,[11:0]位存放頁偏移;
從TTBR(translation table base register,協(xié)處理器CP15中的一個寄存器,用于存放一級頁表的基址)寄存器中獲取一級頁表的基址;
一級頁表基址+ VA[31:20] = 一級頁表描述符的入口地址;
一級頁表描述符的[31:10]位存放二級頁表的基址;
二級頁表基址+ VA[19:12] = 二級頁表描述符的入口地址;
二級頁表描述符的[31:12]位存放該虛擬地址在內存中的物理頁基址;
物理頁基址+ VA[11:0]頁偏移= 物理地址
由映射圖可知,一個虛擬地址可以索引2^12個一級頁表入口,每個一級頁表入口指向的二級頁表最大可以有2^8個二級頁表入口,每個二級頁表入口映射2^12大小的內存,故虛擬地址可以映射的最大物理內存為:2^12 * 2^8 * 2^12 ,即4G。
2.4 頁映射,映射粒度為64K
當映射方式為頁映射,且映射粒度為64K時,映射圖如下:

虛擬地址到物理地址的映射過程如下:
虛擬地址的[31:20]位存放一級頁表的入口index,[19:16]位存放二級頁表的入口index,[15:0]位存放頁偏移;
從TTBR(translation table base register,協(xié)處理器CP15中的一個寄存器,用于存放一級頁表的基址)寄存器中獲取一級頁表的基址;
一級頁表基址+ VA[31:20] = 一級頁表描述符的入口地址;
一級頁表描述符的[31:10]位存放二級頁表的基址;
二級頁表基址+ VA[19:16] = 二級頁表描述符的入口地址;
二級頁表描述符的[31:16]位存放該虛擬地址在內存中的物理頁基址;
物理頁基址+ VA[15:0]頁偏移= 物理地址  
由映射圖可知,一個虛擬地址可以索引2^12個一級頁表入口,每個一級頁表入口指向的二級頁表最大可以有2^4個二級頁表入口,每個二級頁表入口映射2^16大小的內存,故虛擬地址可以映射的最大物理內存為:2^12 * 2^4 * 2^16 ,即4G。
2.5 地址映射總圖
《ARM1176 JZF-S Technical Reference Manual》中有一張對上述四種映射情況的匯總圖:

3. 關于一級頁表基址
參考《ARM1176 JZF-S Technical Reference Manual》6.12 MMU descriptors
ARMv6中有兩個協(xié)處理器寄存器用來存放一級頁表基地址,TTBR0和TTBR1。操作系統(tǒng)把虛擬內存劃分為內核空間和用戶空間,TTBR0存放用戶空間的一級頁表基址,TTBR1存放內核空間的一級頁表基址。

In this model, the virtual address space is divided into two regions:
? 0x0 -> 1<<(32-N) that TTBR0 controls
? 1<<(32-N) -> 4GB that TTBR1 controls.
N的大小由TTBCR寄存器決定。0x0 -> 1<<(32-N)為用戶空間,由TTBR0控制,1<<(32-N) -> 4GB為內核空間,由TTBR1控制。
N的大小與一級頁表大小的關系圖如下:

操作系統(tǒng)為用戶空間的每個進程分配各自的頁表,即每個進程的一級頁表基址是不一樣的,故當發(fā)生進程上下文切換時,TTBR0需要被存放當前進程的一級頁表基址;TTBR1中存放的是內核空間的一級頁表基址,內核空間的一級頁表基址是固定的,故TTBR1中的基址值不需要改變。

4.  u-boot中MMU初始化代碼分析

u-boot中的MMU地址映射方式為段映射,映射粒度為1M,只用到一級頁表。

start.S中的MMU初始化代碼如下:

#ifdef CONFIG_ENABLE_MMU
enable_mmu:
    /* enable domain access */
    ldr    r5, =0x0000ffff
    mcr    p15, 0, r5, c3, c0, 0        @ load domain access register
    /* Set the TTB register */
    ldr    r0, _mmu_table_base
    ldr    r1, =CFG_PHY_UBOOT_BASE
    ldr    r2, =0xfff00000
    bic    r0, r0, r2
    orr    r1, r0, r1
    mcr    p15, 0, r1, c2, c0, 0
    /* Enable the MMU */
mmu_on:
    mrc    p15, 0, r0, c1, c0, 0
    orr    r0, r0, #1            /* Set CR_M to enable MMU */
    mcr    p15, 0, r0, c1, c0, 0
    nop
    nop
    nop
    nop
#endif



#ifdef CONFIG_ENABLE_MMU
_mmu_table_base:
    .word mmu_table
#endif
對協(xié)處理器的寄存器操作參考:
《ARM1176 JZF-S Technical Reference Manual》Chapter 3 System Control Coprocessor
MMU初始化過程中有一步是將頁表基址(CFG_PHY_UBOOT_BASE + mmu_table)存入TTBR0中,在lowlevel_init.S中可以看到對頁表的初始化:

#ifdef CONFIG_ENABLE_MMU
/*
* MMU Table for SMDK6400
*/
    /* form a first-level section entry */
.macro FL_SECTION_ENTRY base,ap,d,c,b
    .word (ase << 20) | (ap << 10) | 
          (d << 5) | (1<<4) | (c << 3) | ( << 2) | (1<<1)
.endm
.section .mmudata, 'a'
    .align 14
    // the following alignment creates the mmu table at address 0x4000.
    .globl mmu_table
mmu_table:
    .set __base,0
    // 1:1 mapping for debugging
    .rept 0xA00
    FL_SECTION_ENTRY __base,3,0,0,0
    .set __base,__base+1
    .endr
    // access is not allowed.
    .rept 0xC00 - 0xA00
    .word 0x00000000
    .endr
    // 128MB for SDRAM 0xC0000000 -> 0x50000000
    .set __base, 0x500
    .rept 0xC80 - 0xC00
    FL_SECTION_ENTRY __base,3,0,1,1
    .set __base,__base+1
    .endr
    // access is not allowed.
    .rept 0x1000 - 0xc80
    .word 0x00000000
    .endr
#endif
下面對頁表的初始化代碼作詳細解釋:

/* form a first-level section entry */
.macro FL_SECTION_ENTRY base,ap,d,c,b
    .word (ase << 20) | (ap << 10) | 
          (d << 5) | (1<<4) | (c << 3) | ( << 2) | (1<<1)
.endm
定義一個宏FL_SECTION_ENTRY用來設置頁表入口描述符,base即物理基址,ap即access permission,d即domain,c即cacheable,b即bufferable。
內存訪問控制和段屬性相關描述請參考:
《ARM1176 JZF-S Technical Reference Manual》6.6 Memory access control和6.7 Memory region attributes。

.section .mmudata, 'a'
    .align 14
    // the following alignment creates the mmu table at address 0x4000.
定義一個名為mmudata的段,段屬性為“a”,allowable,該段16K對齊。從u-boot.lds中可以看到,u-boot的各個段在內存中的分布依次為:.text,.rodata,.data,.got,.u_boot_cmd,.mmudata,.bss。
為什么頁表是16K對齊呢?
在上一節(jié)我們講過:有兩個寄存器TTBR0和TTBR1用來存放一級頁表基址,操作系統(tǒng)把虛擬地址空間劃分為用戶空間和內核空間,0x0 -> 1<<(32-N)為用戶空間,由TTBR0控制,1<<(32-N) -> 4GB為內核空間,由TTBR1控制,N的大小由TTBCR寄存器決定。由于u-boot主要作用是硬件初始化和引導操作系統(tǒng),所以沒有必要對虛擬地址空間進行劃分,即N=0,整個虛擬地址空間由TTBR0控制,TTBR0的格式如下:

N=0時,[31:14]存放頁表基址,即一級頁表的基址為([31:14]<<14),2^14為16K。

    .set __base,0
    // 1:1 mapping for debugging
    .rept 0xA00
    FL_SECTION_ENTRY __base,3,0,0,0
    .set __base,__base+1
    .endr
對虛擬地址0x0-0xA0000000作平行映射(flat mapping),即把虛擬地址0x0-0xA0000000映射到物理地址0x0-0xA0000000。

// access is not allowed.
    .rept 0xC00 - 0xA00
    .word 0x00000000
    .endr
不對虛擬地址空間0xA0000000-0xC0000000作映射,即禁止訪問虛擬地址空間0xA0000000-0xC0000000。

// 128MB for SDRAM 0xC0000000 -> 0x50000000
    .set __base, 0x500
    .rept 0xC80 - 0xC00
    FL_SECTION_ENTRY __base,3,0,1,1
    .set __base,__base+1
    .endr
把虛擬地址空間0xC0000000-0xC8000000映射到物理地址空間0x50000000-0x58000000,0x50000000-0x58000000為sdram的地址空間,此時sdram有128M。

// access is not allowed.
    .rept 0x1000 - 0xc80
    .word 0x00000000
    .endr
不對虛擬地址空間0xc8000000-0xffffffff作映射,即禁止訪問虛擬地址空間0xc8000000-0xffffffff。

關鍵字:ARM11  S3C6410  地址表 引用地址:ARM11 S3C6410 的地址表

上一篇:ADC&&觸摸屏實驗及心得體會
下一篇:ARM9的寄存器

推薦閱讀

近期,中國日報與絲綢之路經濟發(fā)展研究中心合辦的“一帶一路”論壇在香港君悅酒店成功舉辦。行業(yè)內領軍的AI翻譯技術、在線離線語音互譯技術、及貼心的24小時人工翻譯功能,讓糖果翻譯手機成為中國日報“一帶一路”論壇官方指定翻譯手機?,F(xiàn)場,逾300名政府代表、各國駐港領事、金融及企業(yè)高級人才齊聚一堂,在糖果翻譯手機的幫助下跨越語言的...
11月14日,寶馬集團全新電芯技術中心在德國慕尼黑正式啟用。全新的電芯技術中心旨在推動寶馬集團在電芯技術方面的發(fā)展,并將相關研究成果應用到生產過程中。寶馬集團在電芯技術中心共投入2億歐元,目前擁有200名員工。 寶馬集團董事長齊普策表示,希望借此將電芯的能量密度翻一番,從而提供更高的純電續(xù)航里程。這項計劃的時間點是到2030年。寶馬集團電芯...
預計蘋果明年將發(fā)布四款 iPhone 13 機型,據報道它們全部具有與 iPhone 12 系列相同的屏幕尺寸。據分析師郭明錤稱,應該期待 iPhone 在 2021 年發(fā)生許多內部變化,其中之一就是為 iPhone 13 和 iPhone 13 mini 使用節(jié)省電池空間的技術。郭明錤談到了即將使用的軟板電池技術,該技術有望用于 iPhone 13 和 iPhone 13 mini。主要目的...
廣告摘要聲明廣告【文/GGII】2015年,業(yè)內驅控一體的聲音逐漸傳開來,這時只有少部分廠商了解并且愿意嘗試走驅控一體路線,這個階段,我們稱為“驅控一體的1.0時代?。期間質疑聲音不絕于耳,“李鬼?也經常出現(xiàn)。1.0時代更多只是物理層面或者硬件層面的結合,很多性能、效果并達不到要求,只是把控制器和驅動器做小了然后拼接到一起。到了2019年,隨著布...

史海拾趣

問答坊 | AI 解惑

請問 __attribute__ 用在這里是什么意思???

如題 int main() __attribute__ ((C, spontaneous)) {            platform_bootstrap(); } 是TinyOS中的nesC代碼。                 …

查看全部問答∨

華清遠見怎樣啊

華清遠見的嵌入式怎樣啊,有誰想報五月份的啊,據說是人多可以優(yōu)惠,有意者請加我的qq 1484035421?!?

查看全部問答∨

誰懂wince6.0下的VoIP 或RTC .我現(xiàn)在用RTC實現(xiàn)了音頻對講,請問如何實現(xiàn)視頻對講

參考地址: http://msdn.microsoft.com/en-us/library/aa921886.aspx 如何把視頻的filter 加入到rtc中?我按msdn上的做了,RTC但發(fā)出來的sdp里面沒見到視頻參數(shù)信息。怎么辦???…

查看全部問答∨

tc35發(fā)短信最后的ctrl-Z怎么實現(xiàn)

tc35發(fā)短信最后的ctrl-Z怎么實現(xiàn)這個怎么實現(xiàn)的 ???我急用的謝謝大家?guī)兔Α!?

查看全部問答∨

AD6與PADS基本功能比較

一、 原理圖部分 1、 庫 ⑴ DxDesigner 的原理圖庫與PCB的庫是相互獨立的,而且每個原理圖符號庫都是一個文件,很難實現(xiàn)統(tǒng)一管理;AD6可以使用集成庫來統(tǒng)一管理,不僅是原理圖符號庫與PCB封裝庫,還能把混合電路仿真庫、信號完整性分析模型庫以 ...…

查看全部問答∨

51單片機高頻頻率計1秒鐘如何采集3次.

想了很久都沒想出來,高頻頻率計1秒鐘是如何采集3次信號的(用C評語編寫的)…

查看全部問答∨

德州儀器CCSv4應用簡介

Code Composer Studio v4 (CCS v4) 是用于 TI DSP、微處理器和應用處理器的集成開發(fā)環(huán)境。Code Composer Studio 包含一整套用于開發(fā)和調試嵌入式應用的工具。它包含適用于每個 TI 器件系列的編譯器、源碼編輯器、項目構建環(huán)境、調試器、描述器、仿 ...…

查看全部問答∨

基于MSP430F149的紅外解碼

本人最近在用MSP430F149調試紅外遙控,型號是SM0038吧. 之前就試過幾種方法,但是就是沒辦法解碼.今天的這個也是, 所以在這里希望各位不管是路過的還是走過的,希望能指教一下這個程序的問題,謝謝. 這個程序采用上升沿和下降沿都捕獲,P1_2口輸 ...…

查看全部問答∨

放大器具有高 PSRR,就不需擔心電源變化?

作者:Art Kay  德州儀器電源抑制比 (PSRR) 主要說明運算放大器對電源電壓變化的抑制效果。PSRR 的定義是每伏電源電壓變化的失調程度,單位通常為微伏每伏 (uV/V)。例如,OPA209 的典型 PSRR 是 0.05uV/V。因此對于 OPA209 來說,電源變 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved