历史上的今天
返回首页

历史上的今天

今天是:2025年02月20日(星期四)

正在发生

2021年02月20日 | 基于S3C6410的ARM11学习(八) 核心初始化之设置外设基地址

2021-02-20 来源:eefocus

下面就是核心初始化的最后一个了。外设基地址初始化。这个操作是告诉CPU外设的基地址是多少。

之前,对这个很疑惑,外设的基地址对于芯片来说,不是已经固定了,还要告诉他基地址是多少干嘛了。STM32就不用这一步操作。这个时候,就要去研究这两种芯片的内核了。S3C6410用的是ARM11的核,而STM32用的是CORTEX-M3的内核。

         clip_image002

对于cortex-m3内核,外设的地址就已经是固定了,从0x40000000开始,大小是0.5G。所以不管你是什么芯片,只要你使用了cortex-m3内核,你的外设的基地址就变不了,变的是外设地址对应的外设不一样。所以,就没有必要告诉CPU外设的基地址了,直接操作这些地址即可。CPU会自己识别这个地址是外设地址还是内存地址,从而采用不同的总线去访问。


对于ARM11.我没有在内核中找到cortex-m3内核的存储器映射的图。就可能ARM11核,就没有对外设的地址进行固定。所以,不同的芯片,即使使用的是ARM11的内核,那外设地址也有可能不一样。所以ARM11就加了一个告诉CPU外设基地址这个东西,当地址属于外设地址,CPU就使用外设总线去访问。


既然要告诉CPU外设的地址,那么肯定就是要对一个寄存器操作了。这个寄存器就在CP15下的某个寄存器。

clip_image004

就在c15组下的c2寄存器。

clip_image006

上面是对这个寄存器的说明。


ARM11将存储空间分为memory接口和peripheral接口。解释说,这个寄存器的作用是将memory属性重定向为不共享的设备。这样可以强制访问外设端口并且重写这些页表。


clip_image008

clip_image010

红色处说明,复位值,表明重定向没有发生。


对于S3C6410来说,该外设基地址是0x7000_0000。所以我们就要把这个地址写入到这个寄存器中。


写入该寄存器,手册中也有说明该汇编代码

clip_image012

所以,代码也很简单了。

clip_image014

1、将r0寄存器的值赋值为0x7000_0000(S3C6410外设基地址)

2、将r0寄存器中的值的后8位改为8’b00010011。对照手册,就是将外设地址空间大小是256M。

clip_image016

从S3C6410手册115也有说明。外设通过PERI总线访问,地址范围是0x7000_0000到0x7FFF_FFFF。大小总共是256M。所以这里要设置寄存器的后面5位为10011。即256M。


3、将r0的值写入到Peripheral Port Memory Remap Register。

4、程序返回


这样,就完成了外设地址的设置了。但是,这里我们要注意了,这个外设地址的设置应该要在访问外设之前设置,否则外设访问就不成功了。回想前面的核心初始化,我们对看门狗进行了关闭,看门狗也是外设的一种。因为他地址空间是在外设空间里面的。所以呢,我们要在看门狗关闭前进行外设地址的设置。


所以,最终reset中的核心初始化代码为:

clip_image018

其实就是调用之间说的核心初始化的各个函数。但是要注意设置外围基地址是要放在看门狗关闭之前的。


这样,就完成了核心初始化了。完成了核心初始化,就要先测试我们写的代码到底对不对了。怎么测试了?相信学过51的都知道,学51的第一个实验是什么,点亮led。所以这里就用点亮led要测试核心初始化代码到底是否正确。下次,我们就要来点灯了。


对比STM32


就没有上述操作了,因为外设的地址已经固定了。所以就不用写代码了。


推荐阅读

史海拾趣

Barnbrook Systems Limited公司的发展小趣事

随着技术的不断进步,Barnbrook意识到单一的电路板产品已经无法满足市场的多元化需求。于是,公司开始拓展产品线,逐步推出了包括服务器、存储设备以及网络设备在内的一系列电子产品。同时,Barnbrook也积极开拓国内外市场,通过参加国际电子展会、建立销售网络等方式,不断提升品牌知名度和市场份额。

意华(CZT)公司的发展小趣事

为了提高产品质量,意华先后通过了ISO9001、ISO14001、IECQC080000等多项国际质量管理体系认证。这些认证不仅证明了公司的质量管理水平,也为客户提供了更可靠的产品保障。通过持续的质量改进和过程控制,意华的产品质量得到了显著提升,赢得了更多客户的认可。

Black Box Corporation公司的发展小趣事

在成立初期,Black Box Corporation主要以提供语音通信解决方案为主。随着科技的快速发展,公司意识到单纯依赖语音通信已无法满足市场的多元化需求。于是,公司开始着手研发并推广全面的网络解决方案,包括数据传输、网络安全、云计算等。这一转型不仅使Black Box在行业内获得了更高的知名度,也为其带来了更多的商业机会。

Abbotec Incorporated公司的发展小趣事

Abbotec深知人才是企业发展的核心。因此,公司一直注重人才培养和团队建设。公司定期举办各种培训活动,提升员工的专业技能和管理能力。同时,Abbotec还积极引进外部优秀人才,为公司的发展注入新的活力。

ABI Electronics公司的发展小趣事

ABI Electronics公司的起点可以追溯到其对电路板测试技术的深入研究。在创立初期,ABI便以开发出高精度、高效率的电路板故障检测仪为目标。通过对电路板测试技术的不断钻研和创新,ABI成功推出了一系列性能卓越的测试设备,这些设备不仅提高了电路板测试的准确性和效率,也极大地降低了测试成本,赢得了市场的广泛认可。

Hasco Relays and Electronics International Corp公司的发展小趣事

Harris公司最初成立于1890年代,起初以无线电通信技术为核心业务。在早期,公司凭借其创新的无线电通信技术,在通信领域迅速崭露头角。这一时期,Harris不仅为军事领域提供了关键的通信解决方案,还逐步拓展到商业和民用市场,为当时的电话、电报等通信方式带来了革命性的变化。通过不断的技术研发和产品创新,Harris逐渐奠定了其在电子行业的重要地位。

问答坊 | AI 解惑

电源产业的发展趋势

[&]纵观当今国内外电源,不难看出显著的特点是:电源门类多,涉及技术相当全面,且技术含量高,但核心技术应是电能变换和功率传递技术,是光、机、电一体化,新能源与高效节能等多个高新技术领域的复合。当今的开关电源门类就是这些技术复合型的 ...…

查看全部问答>

PCB地与地的问题

一块PCB板子的地与接插件的地不通会怎样?怎样才会不通?各位大大99…

查看全部问答>

求教:功耗问题

    我用的是飞思卡尔的射频芯片MC13213,需要完成的功能是:用MC13213的I2C接口接收数据,当从机有中断信号的时侯开始接收数据,接收到的数据不为0时才通过射频发送数据。    可是在功耗上出现了问题:不管有没有中断产生, ...…

查看全部问答>

RELEASETYPE is not set. Using default settings.

今天编译CE5.0内核遇到这么个警告: RELEASETYPE is not set. Using default settings. 结果导致编译出错,而用同样的BSP在我同事的机子上却没事,所以我怀疑是PB出了问题,哪位大侠给指点一下…

查看全部问答>

Unicode问题 进来看看

用c# 调用ril 函数发送at 命令,可是 发送命令貌似发送到底层貌似解码是错的 求高手解释一下  字符串应该怎么重新编码。 …

查看全部问答>

怎么构建PXA270的交叉编译环境

我买了一本书《ARM嵌入式从入门到精通》其中第二章有关于分步构建交叉编译环境的内容,但是按书上说的去做总是有错,已经失败了N次,。。。。…

查看全部问答>

帮忙看一下,输入的信号被忽略了!

程序实现功能如下: 通过clk的脉冲,在recive=0时统计clk的跳变数,达到计时的目的,再把时间通过4个七段数码管显示出来。 程序代码如下: library ieee; use ieee.std_logic_1164.all; entity device is port(clk        ...…

查看全部问答>

我的ZLG M0估计杯具了

今天兴高采烈的在调 PWM程序 弄示波器探头接触引脚的时候 貌似出现了点火花  我也没太在意 出现了波形 可是频率差了点 于是乎准备重新载程序 突然就出现了 我想估计芯片毁了…

查看全部问答>

BIOS\"任务\"对象的问题.

请教各位:      在BIOS中,我用TSK0调用函数test(),硬件中断INT1调用T0ISR().运行程序后,程序一直进入T0ISR(),而不调用\\"任务\\"对象.不应该是在两次中断之间的时间里,会调用TSK0吗?或者是需要什么API函数调用? 部分程序 ...…

查看全部问答>

AT89C51控制M62429的程序谁有?

AT89C51控制M62429程序中的发送6位数据和发送5位数据子程序我不会作,谁能教教我?…

查看全部问答>