关于ARM的内存重映射

嵌入式软件开发必备知识—存储器和寄存器器映射(重要) 阅读详情

先说说存储器映射:
所谓存储器映射,是指将开发板上不同的存储器映射到开发人员可见的4GB地址空间上,例如,假设开发板上有一个32KB的片内FLASH,16KB的片内SRAM(纯属虚构,如有雷同,纯属巧合),那么,将32KBFLASH映射到地址空间的0x00000000~0x0x00008FFF上,将16KB的SRAM映射到x40000000~0x40004fff上,这样开发者在读写0x00000000~0x00008fff内的地址时,访问的就是片内FLASH,不同开发板的映射规则是开发板厂商事先设定好的。


下面说说什么是重映射:
重映射分为中断向量的重映射和boot的重映射
首先说说中断向量重映射
ARM中中断向量的地址位于0x00000000~0x0000003c(每个向量占4字节,但是为了能够实现4GB范围内的任意跳转,通常在中断向量表后附加一个跳转地址空间,跳转空间占4字节,因此,总的中断向量表大小为64B,不熟悉的自己查查ARM的中断向量吧,不多说了)。注意,这里所说的0x0000000~0x0000003C指的是用户可见的4GB地址空间(也就是上面所说的存储器映射后的地址空间),真正的中断向量位于哪块存贮器的哪个地址上可不一定(不过通常都是为与片内FLASH的底部),因此,需要将不同存储器的中断向量表映射到0x00000000~0x0000003c的地址上。另外,还有一次中断向量的映射,在用户RAM的映射模式(稍后说映射模式)下,需要将中断向量映射到静态RAM的底部(很明显,这样能够提高访问速度)。
下面是boot的重映射
这里所说的boot不是bootloader,而是厂商实现内嵌到板子中的一段代码,用于执行对FLASH的读写,擦除等任务,通常位于片内存储器上,但是不同的板子上存储器的大小不同,为了程序的兼容,通常需要将boottblock重映射到存储空间的顶端。

最后说一下映射模式:
ARM中支持4中映射模式,由存储器控制寄存器控制
四种模式为:
1.boot装载程序模式:在任何复位操作后都会执行Boot装载程序。Bootblock中中断向量映射到存储器的底端以允许处理异常,并在Boot装载过程中使用中断。
2.用户FLASH模式:当在存储器中识别了一个有效的用户程序标识并且Boot装载操作未被执行时,由Boot装载程序启动。中断向量没有重新映射,位于Flash的存储器底部
3.用户Flash:中断向量被映射到静态RAM的底部
4.用户外部模式:中断向量有外部存储器映射到存储空间底部。


本文来自优快云博客,转载请标明出处:
http://blog.youkuaiyun.com/JiangBo_HIT/archive/2009/05/25/4214436.aspx

来源: http://blog.youkuaiyun.com/yexinghai/article/details/4251696
内存地址重映射的选项_ARM处理器重映射原理的分析与实现 张毒俊 牟龙华(同济大学电气工程系 上海200331)摘要:重映射是ARM嵌人式软件开发中一个非常重要的概念,它是系统初始化过程中一个重要的环节。本文详细论述了什么是重映射,为什么要进行重映射,以及怎样实现重映射,并以LPC2210处理器为例给出了从片外Flash启动和重映射的实现方法。同时对在ARM嵌入式软件开发过程中经常遇到一些基本概念,比如存储器映射、分散加载文件等进行了详细的解释。实验证明... 阅读详情

相关推荐

ARM CP15寄存器与内存重映射技术详解

在嵌入式系统开发中,ARM架构处理器的内存管理单元(MMU)和缓存系统是核心组件。CP15协处理器作为系统控制中枢,通过专用寄存器实现对处理器功能的精细控制,其中SCTLR寄存器控制MMU和缓存使能,TTBR寄存器管理页表地址。内存重映射技术通过PRRR和NMRR寄存器动态调整内存类型和缓存策略,能够优化外设访问性能并灵活配置缓存行为。这些技术在嵌入式实时系统、外设驱动开发和性能敏感场景中具有重要应用价值,合理使用可以显著提升系统性能。掌握CP15寄存器操作和内存重映射技术是ARM系统开发的关键技能。

weixin_36197669的博客 350

ARM内存重映射与BCD文件配置实战指南

内存重映射是嵌入式系统中的关键技术,通过修改控制寄存器动态改变物理内存与逻辑地址的映射关系。其核心原理是利用硬件级地址解码电路,实现不同存储设备的地址空间切换,这对系统启动加速和多核通信等场景至关重要。BCD文件作为ARM调试工具链的核心配置文件,采用层次化结构定义内存拓扑、寄存器映射等关键信息。在RVD开发环境中,合理配置BCD文件能显著提升调试效率,特别是在处理多核SoC和复杂外设时。本文结合ARM架构特性和工程实践,详解如何通过内存重映射优化系统性能,以及使用BCD文件实现灵活的内存管理方案。

weixin_30367873的博客 422

Arm安全协处理器寄存器架构与内存重映射技术解析

寄存器架构是嵌入式系统设计的核心要素,特别是在安全协处理器中,寄存器组的设计直接影响系统的安全性和性能。通过内存重映射机制,可以实现代码和数据的动态地址转换,这在安全启动、权限隔离和动态补丁加载等场景中具有重要价值。以Arm Musca-B1的CryptoIsland-300为例,其寄存器组采用集中式管理架构,通过SCC模块实现安全访问控制,符合PSA Certified安全规范。典型应用包括安全启动配置、加密引擎管理以及与CryptoCell-312的协同工作。理解这些基础原理对开发高安全性的IoT设备至

weixin_30978239的博客 284

存储器映射(Memory Mapping)与寄存器映射(Register Mapping)

存储器与寄存器映射

qq_40113966的博客 3847

ARM的启动流程与内存重映射详解

在加载完内存重映射表之后,我们需要设置内存重映射表的入口地址,以确保ARM处理器可以正确执行内存重映射操作。由于ARM处理器的物理地址空间比较小,只有32位,因此我们需要进行内存重映射操作,以扩展ARM处理器的地址空间。在设置内存重映射表的入口地址之后,我们需要启动内存重映射操作,并配置内存控制器。在这个示例代码中,我们首先定义了IRAM_BASE、IRAM_SIZE、DRAM_BASE和DRAM_SIZE四个常量,分别表示指令内存的基地址、大小,数据内存的基地址、大小。二、ARM内存重映射操作。

LklAngular的博客 560

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

ARM存储器映射、重映射与启动

   存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。     ARM7TDMI的存储器映射可以有0X00000000~0XFFFFFFFF的空间,即4G的映射空间,但所有器件加起来肯定是填不满的。一般来说,0

Andysun1986的专栏 1177

2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析

题目没有任何提示,附件gzl.pcap解题哥斯拉流量300多KB包很多,没啥经验只能挨个看回来之后又狠狠得撸了一把哥斯拉流量分析我这里用的是哥斯拉4.0.1测试链接这里发了两个包,我们进行分析。

深耕网络安全领域,聚焦护网行动(HW)、渗透测试、等级保护(等保)、CTF 竞赛四大核心方向,提供技术干货、实战经验与行业洞察。 1812

存储器映射、位带操作

存储器映射,位带区操作

hold_time的博客 1620

Mac M1安装Hive

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。出现一段空白,接着出现Initialization script completed。关闭hiveServer2时,执行如下命令查看hive进程;执行上面命令后,若有结果输出,则证明配置完成了。如果出现mac权限问题,解决方法参考。就可以见到hive的web界面了。若出现路径,则存在mysql。配置好后保存,使配置文件生效。用户名hive,密码hive。用户名通过如下命令查看。通过如下命令杀死该进程。

总结复盘,才能不迷失自己! 2388

SpringBoot一次请求中缓存数据,请求结束就清除的4种方法,你会几种?

通过以上四种方法,你可以在 SpringBoot 的一次请求中缓存数据,并在请求结束后自动清除这些缓存数据。使用 ThreadLocal:适用于需要跨多个方法调用的缓存数据,灵活性高,但需要注意内存泄漏问题。使用 AOP:适用于全局性的缓存管理,代码更加优雅,但需要对 AOP 有一定的了解。使用 ServletRequestListener:适用于简单的请求生命周期管理,配置简单,但功能相对有限。使用 HttpServletRequest 的 setAttribute 和 getAttribute。

java专栏 1295

ARM内存映射与启动地址重映射机制解析

ARM Cortex-M内核采用固定内存映射架构,通过地址重映射机制实现启动过程的灵活性。CPU从0x00000000取指时,芯片内部的重映射控制器会根据启动引脚配置,将请求透明地重定向到实际物理地址(如主Flash的0x08000000)。这种设计既保持了CPU执行入口的统一性,又为芯片厂商提供了多种启动模式的选择。重映射过程由硬件自动完成,对程序员透明,仅在底层开发时需要关注。具体实现方式包括地址别名和可编程重映射开关,详细信息需查阅芯片厂商的参考手册。

C语言、数据结构、单片机、嵌入式实时操作系统、C++ 学习路径记录 3611

「UG/NX」BlockUI 控件集合目录大纲

Block UI Styler 模块设计对话框是官方推荐使用的对话框制作方法,它能够与NX自身风格相统一,在实际开发中经常使用。文字内容包含:NX所有控件介绍的链接、内部控件调用的基础介绍、官方案例查看路径、控件的特殊用法篇链接、番外篇链接。

何曾参静谧的博客 2676

内存地址重映射的选项_[转]LPC2000系列ARM处理器重映射原理的分析与实现

LPC2000系列ARM处理器重映射原理的分析与实现摘要: 在ARM嵌入式软件开发过程中,经常会遇到一些重要的概念,比如重映射、分散加载等。本文结合具体的实例并以源代码的形式对这些概念进行了详细的分析,并给出了LPC2210处理器片外Flash启动和重映射的实现方法。关键字:启动代码 重映射 ARM多数嵌入式系统中,在进入主程序main之前,需要执行初始化序列对应用程序的运行环境进行配置。启动代码...

weixin_29762151的博客 493

【38】OpenCV C++实战篇——基于多项式插值的亚像素边缘定位算法

亚像素边缘定位算法实现 本文介绍了一种基于多项式插值的亚像素边缘定位算法,用于提高图像边缘检测的精度。文章首先分析了传统像素级边缘检测方法(如Canny、Sobel)的局限性,指出其在测量应用中的精度不足问题。 算法核心 梯度计算:使用8个方向模板进行卷积运算生成梯度图像 亚像素定位:采用多项式插值方法改进边缘定位精度 实现步骤: 生成8个方向的卷积模板(0°、45°、90°等) 利用filter2D函数计算各方向梯度 通过归一化处理显示梯度图像 代码特点 提供完整的C++实现代码 包含模板生成、梯度计算和

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1099

工具变量法入门:解决因果分析中的内生性问题

想知道如何在复杂的数据中精确揭示因果关系?你是否遇到过自变量与误差项相关导致的困惑?工具变量法将为你拨开迷雾,帮助你剖析数据背后的因果链条。这篇文章不仅详细讲解了工具变量法的原理,还结合实际案例,让你轻松掌握这一关键研究工具。点击阅读,开启你的因果分析新篇章!

theskylife的博客 1953

arm内存重映射 转

<br /><br />先说说存储器映射:<br />所谓存储器映射,是指将开发板上不同的存储器映射到开发人员可见的4GB地址空间上,例如,假设开发板上有一个32KB 的片内FLASH,16KB的片内SRAM,那么,将32KBFLASH映射到地址空间的 0x00000000~0x0x00008FFF上,将16KB的SRAM映射到x40000000~0x40004fff上,这样开发者在读写 0x00000000~0x00008fff内的地址时,访问的就是片内FLASH,不同开发板的映射规则是开发板

曹浩洋的专栏 1870

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ARM7内存映射与中断向量重映射机制详解:以LPC2400为例

在嵌入式系统开发中,内存映射是CPU访问物理存储器和外设寄存器的地址规划蓝图,它定义了代码区、数据区和控制寄存器的逻辑布局。其核心原理是通过地址总线将逻辑地址转换为物理地址,实现CPU对硬件资源的统一寻址。这项技术的核心价值在于为系统提供了确定性的内存访问基础,是确保程序正确运行和性能优化的前提。在ARM7这类经典微控制器架构中,中断向量表作为异常处理的入口点,其固定位置与系统启动、运行阶段对执行速度的不同需求产生了矛盾。内存重映射机制,特别是通过MEMMAP寄存器实现的中断向量重映射,应运而生,它允许动态

weixin_27014595的博客 254

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ARM Cortex-A15内存重映射与SCC寄存器配置详解

内存重映射是嵌入式系统开发中的核心技术,通过修改物理地址到存储设备的映射关系,实现灵活的启动配置和运行时内存管理。其原理基于处理器总线架构和地址解码机制,在ARM Cortex-A15等现代处理器中,通过NIC-301互连矩阵和SCC(System Configuration Controller)寄存器实现精确控制。该技术对系统启动优化、固件热升级等场景具有重要价值,特别是在需要多存储设备切换或安全启动的工业控制领域。以Cortex-A15为例,其CFGREG0寄存器的AXI_REMAP位和SMC片选配置

weixin_30463341的博客 382

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

内存地址重映射的选项_ARM芯片的地址重映射

这种机制是纯粹的高速硬件操作,并不需要操作系统来完成。操作系统只要提供内存转换表就可以了,但是需要符合一定的格式。ARM9的MMU映射表分为两种,一级页表的变换和二级页表变换。两者的不同之处就是实现的变换地址空间大小不同。一级页表变换支持1M大小的存储空间的映射,而二级可以支持64kB,4kB和1kB大小地址空间的映射。在LINUX中最终使用了1M一级页表和4kB的二级页表(即1M段区和4KB页...

weixin_39607865的博客 255

arm嵌入式开发关于寻址、内存重映射和启动之间的关系(ARM学习1)

1、存储器的分类,ARM分为片内和片外存储器,分布于4G的内存地址空间内。片外存储器可通过4个band进行扩展,当片外存储器扩展的是Flash(NOR)时,不能通过STR进行写操作,需要专门的代码进行烧写Flash 2、存储器重映射。存储器重映射用于将不同地址映射到同一个地址。

zhangym365的专栏 2754

ARM内存重映射与Keil调试中的执行权限问题解析

内存重映射是嵌入式开发中的关键技术,特别是在ARM架构下,它允许将物理内存映射到不同的逻辑地址空间。其核心原理是通过寄存器配置改变地址映射关系,但关键点在于重映射会继承原内存区域的访问权限。在Keil µVision等仿真环境中,调试器会实施严格的内存权限控制(读/写/执行),这可能导致重映射后的代码区域缺少执行权限,引发Error 65等访问违例。通过MAP命令显式设置RAM区域的执行权限,可以解决中断向量执行失败等典型问题。该技术在Bootloader开发、固件升级等场景中尤为重要,开发者需特别注意仿真

weixin_42523104的博客 291

arm remapping控制输入_arm 外设端口映射

/* 硬件相关的设置 *//* Peri port setupcpu: 外设 | 内存cpu芯片手册上的外设是0x7000_0000 开始所有这里告诉cpu ?我可以骗 cpu 说是0x6000_0000 ?*/ldr r0, =0x70000000 @外设端口的地址 peripheral port memory remap registerorr r0, r0, #0x13...

weixin_34070493的博客 224

ARM地址重映射的通俗解释

https://files.cnblogs.com/pengdonglin137/ARM%E5%9C%B0%E5%9D%80%E9%87%8D%E6%98%A0%E5%B0%84%E7%9A%84%E9%80%9A%E4%BF%97%E8%A7%A3%E9%87%8A.pdf

pengdonglin137的专栏 57
上一篇: linux下S3C2410的DMA驱动程序开发
下一篇: MMU(memory management unit)主要功能介绍
beyondioi
博客等级 码龄17年 111粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值