关于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

openEuler 欧拉 安装Oracle19c数据库RPM包安装

欧拉系统安装部署oracle 19c rpm方式

陈苏漾的IT生涯 6894

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

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

Andysun1986的专栏 1177

Cadence Allegro 17.4学习记录开始01-原理图Capture CIS 17.4

Orcad的学习记录

qq_31444421的博客 1万+

存储器映射、位带操作

存储器映射,位带区操作

hold_time的博客 1620

Windows加域迁移避坑指南:Profwiz工具实战中的5个常见问题与解决方案

本文详细解析了使用Profwiz工具进行Windows加域迁移时的5个常见问题及解决方案,包括临时配置文件生成、密码策略冲突、SID冲突等。通过实战案例和优化技巧,帮助IT运维团队高效完成账户配置文件迁移,确保Active Directory环境下的数据完整性和权限无缝衔接。

q9r0s的博客 519

ResNet理论基础与具体实现(详细教程)

论文地址:Deep Residual Learning for Image Recognition ​ Identity Mappings in Deep Residual Networks pytroch源码地址:resnet 0x00 前言 ResNet是2015年就提出的网络结构,中文名字叫作深度残差网络,主要作用是图像分类。现在在图像分割、目标检测等领域都有很...

coordinate的博客 8332

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

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

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

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2331

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

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

weixin_29762151的博客 493

声发射传感器的工作原理是什么?

介绍声发射传感器的工作原理。

qq_39948394的博客 9246

《MySQL 入门教程》第 03 篇 管理数据库

本篇主要介绍 MySQL 数据库的创建、查看、选择和删除操作,包括使用 mysql 命令行和 MySQL Workbench 图形工具两种方式。

Tony.Dong的专栏 3525

arm内存重映射 转

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

曹浩洋的专栏 1870

详解【异质图卷积网络 RGCN】回顾:图神经网络问题的三大处理步骤 | 从起源说起,RGCN核心公式解释,两种降低模型参数量/优化的方式,附核心代码实现讲解

本篇,我们深入分析和学习RGCN的原理以及为何要这么做。首先让我们来回顾对于图神经网络问题的三大处理步骤,可以说,这是该深度学习模型的基本理解,后续都是在深化其中的细节处理。然后以容易理解的方式,引出异质图卷积网络RGCN的由来,主要讲解其核心公式和论文中作者所提出的两种降低模型参数量/优化的处理办法,并给出基础分解以及块对角分解的核心实现代码讲解。最后附上RGCN源代码及说明。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1280

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

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

weixin_27014595的博客 254

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

weixin_30463341的博客 382

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

weixin_39607865的博客 255

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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、付费专栏及课程。

余额充值