简述MMU和虚拟地址

这是一篇非常简练的概括ARM中内存管理器MMU和虚拟地址的简短文章,写的很好,我忍不住收藏它,转载地址如下:

http://blog.chinaunix.net/u2/84450/showart_1858502.html

 

    关于mmu与虚实地址的映射关系的资料很多,经过一段时间的学习,我将mmu以及虚实地址映射关系做一个简短的介绍。
    虚实地址的映射关系是通过页表来描述的,而mmu正是通过页表来查找虚地址所对应的物理地址。段比较简单,通过一级页表描述符映射1M地址空间,没有涉及到二级页表。对于页来说,可以分为大页、小页、微页,不管是哪种页,其映射关系是相似的。
    总的来说地址映射包括3个基地址,3个偏移。
    3个基地址是:
     1).1级页表基地址;(cp15 r2寄存器)
     2).2级页表基地址;(1级页表描述符)
     3).物理基地址。(2级页表描述符)
    3个偏移是:
     1).1及页表地址偏移;(虚拟地址高位)
     2).2级页表地址偏移;(虚拟地址中间位)
     3).物理地址偏移。(虚拟地址低位)
<think>我们正在讨论TC397微控制器中的地址映射机制,特别是标准模式(Standard Mode)与备用模式(Alternate Mode,简称alt模式)下虚拟地址对程序闪存(PF)映射不同的原因。TC397是英飞凌Aurix系列的一部分,具有复杂的存储器映射多种操作模式。 根据之前的讨论,TC397支持A/B分区切换,其中通过硬件重映射机制改变逻辑地址到物理地址的映射。现在,用户进一步询问标准模式alt模式下虚拟地址对PF映射不同的原因。我们需要解释这两种模式的区别以及映射不同的原因。 ### 分析: 1. **标准模式与alt模式的定义**: - **标准模式(Standard Mode)**:这是TC397的默认操作模式。在这种模式下,程序闪存(PF)的地址映射遵循默认的地址布局。通常,程序从0x80000000开始执行,映射到物理Bank0。 - **备用模式(Alternate Mode, alt模式)**:在某些情况下(如固件更新或系统恢复),可以通过配置UCB(用户配置块)进入alt模式。在这种模式下,闪存的映射会发生变化,例如将逻辑地址0x80000000映射到另一个物理Bank(如Bank1)。 2. **映射不同的原因**: - **支持固件更新(A/B分区切换)**:alt模式的主要目的是在不中断当前运行的系统的情况下,允许更新另一个分区的固件。当需要切换到更新后的固件时,通过切换到alt模式,将逻辑地址重新映射到包含新固件的物理Bank,从而实现无缝切换。 - **硬件重映射机制**:TC397内部有一个硬件重映射控制器,它根据UCB中的配置位(如SWAP位)在复位时决定逻辑地址到物理PF的映射。标准模式alt模式通过不同的配置位设置,使得相同的逻辑地址映射到不同的物理地址空间。 - **错误恢复与安全启动**:如果主分区(标准模式映射的Bank)的固件损坏,系统可以切换到alt模式,从备用分区启动,提高系统的可靠性。 3. **地址映射示例**: - 假设有两个物理Bank:Bank0(物理地址:0xA0000000-0xA07FFFFF)Bank1(物理地址:0xA0800000-0xA0FFFFFF)。 - **标准模式**:逻辑地址0x80000000映射到Bank0的起始地址(0xA0000000)。 - **alt模式**:逻辑地址0x80000000映射到Bank1的起始地址(0xA0800000)。 4. **映射变化的作用**: - **系统升级零停机**:在alt模式下运行更新后的固件,如果验证通过,则可以重新配置为新的标准模式(即更新后的Bank成为主Bank)。 - **安全回滚**:如果新固件启动失败,可以切换回标准模式(原Bank)启动旧固件。 - **地址空间连续性**:两种模式下,CPU看到的逻辑地址空间都是连续的(从0x80000000开始),这简化了程序的设计,无需修改代码地址。 5. **配置机制**: - 通过UCB中的SWAP配置位控制。在复位时,硬件读取UCB的配置,决定采用标准映射还是alt映射。 - 注意:切换模式需要复位才能生效,因为重映射发生在复位过程中。 ### 回答结构: 1. **简述两种模式**:定义标准模式alt模式。 2. **解释映射不同的原因**:核心是为了支持A/B分区切换、错误恢复安全启动。 3. **说明作用**:零停机更新、安全回滚、地址连续性。 4. **图示或示例**:给出地址映射的示例。 5. **注意事项**:切换需要复位,配置错误可能导致启动失败。 ### 生成相关问题: 1. 如何配置TC397以进入alt模式? 2. TC397在alt模式下运行时,中断向量表是如何处理的? 3. TC397的alt模式对调试有什么影响? </think>### TC397标准模式与ALT模式下虚拟地址对PF映射差异分析 在英飞凌Aurix TC397微控制器中,**标准模式(Standard Mode)与备用模式(Alternate Mode)** 下虚拟地址对程序闪存(PF)的映射确实不同。这种差异源于硬件设计机制,主要原因作用如下: --- #### 1. **映射差异的本质原理** TC397的程序闪存(Program Flash, PF)物理上分为多个Bank(如Bank0/Bank1),但在CPU视角仅呈现**单一连续逻辑地址空间**(0x80000000起始)。当模式切换时: - **标准模式**: $$ \text{虚拟地址}0x80000000 \rightarrow \text{物理Bank0起始地址} $$ - **ALT模式**: $$ \text{虚拟地址}0x80000000 \rightarrow \text{物理Bank1起始地址} $$ 这种重映射由**UCB(用户配置块)中的ALT位**控制,在复位时硬件自动完成切换[^1]。 --- #### 2. **差异产生的根本原因** | 原因 | 技术说明 | |------|----------| | **硬件资源复用** | 通过地址重映射复用相同总线/缓存资源,避免物理Bank切换时的总线冲突 | | **零延迟切换** | 复位阶段硬件自动重映射,CPU无需感知物理Bank变化,保证启动时序确定性 | | **安全隔离** | ALT模式通常用于存储备份固件,物理隔离降低运行时意外篡改风险 | | **引脚复用优化** | 部分外部总线引脚在ALT模式下可重定义为GPIO,提升系统灵活性 | --- #### 3. **差异实现的关键机制** ```mermaid graph LR CPU[CPU内核] -->|虚拟地址<br>0x80000000| MMU[内存管理单元] MMU -->|标准模式| PF0[物理Bank0] MMU -->|ALT模式| PF1[物理Bank1] UCB[UCB配置寄存器] -->|ALT位=0| MMU UCB -->|ALT位=1| MMU ``` - **切换触发条件**:仅在**系统复位**时检测UCB.ALT位并应用新映射 - **地址连续性保证**:两种模式下CPU看到的逻辑地址范围不变(如0x80000000-0x80FFFFFF) - **性能影响**:无额外延迟,映射逻辑由硬件布线实现[^1] --- #### 4. **设计作用与优势** 1. **固件冗余容错** ALT模式映射Bank1作为"黄金副本",主Bank损坏时快速切换恢复 2. **无中断升级** 更新时写入非活动Bank,切换后新固件立即生效: ```c // 伪代码示例:切换ALT模式 UCB_SWAP.ALT = 1; // 设置ALT位 SYSTEM_RESET(); // 复位后映射生效 ``` 3. **外设资源优化** ALT模式下释放PF控制引脚,可复用为: - 额外GPIO(增加IO扩展能力) - 专用调试接口(提升在线调试效率) 4. **安全启动验证** 硬件强制ALT模式下的固件需通过签名验证,阻断未授权代码执行 --- #### 注意事项 1. 模式切换需完整复位周期,实时切换会引发总线错误 2. 中断向量表必须存储在**独立LMU**(局部内存单元),避免重映射导致中断丢失 3. UCB配置错误可能触发**ESR0保护**(错误状态寄存器锁定),需高压编程器恢复
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值