这次主要说说第一次搞ARM特别是从51直接跳到ARM的必须面对的几个概念:REMAP、Bootloader、Flashloader。
1、REMAP:
提到REMAP。首先应想到什么是MAP,英语不好,开始就断章取义,MAP就是地图嘛,Memory Map就是存储器地图,不过这个地图的参考坐标不是经纬度,而是地址,进而叫做存储器映射。由于要适应不同存储器容量要求的用途,ARM处理器本身的RAM、ROM并不是足够大,所以很多时候要外扩一些存储器,Norflash、NANDFlash、SDRAM、SRAM……而对于ARM来说怎么识别这些不同的存储器呢,只能给每个分配一个独立的地址,就相当于每个人有不同的名字。片内存储器的地址一般出厂就固化好的,片外的话就根据每个存储器所连接的外部总线片选而具有不同的地址。
所以REMAP,顾名思义就是存储器的重新映射,即某些存储器的地址又发生了变化。我就很不理解了,这地址本来就不好记,还变来变去的,麻不麻烦呀,学51的时候咋就没这玩意呢?后来查了些资料,有些明白了,51是8位机,更重要的是51的主频不高,8位的ROM或Flash足够匹配51的主频,不用插入等待指令,所以程序直接在ROM或Flash中跑影响不到系统的速度。而ARM就不同了,ARM是32位机,但是Flash一般是8位或16位,32位的也有吧,好像价格很高。而且ARM的制品很高,动辄上百M,所以Flash的工艺达不到这个速度。如果程序跑在Flash中就要插入过多的等待指令,所以会影响ARM的性能。而RAM一般存取速度比较快,很容易构成32位,可以与高速的ARM匹配。更重要的是ARM上电后必须从0x0地址处取得指令,因此上电后必须将ROM或Flash映射位0X0地址处,当时还产生了一个弱智的想法,既然RAM这么好,为啥还要ROM或Flash,直接将程序下载到RAM中不就得了,后来才猛地想到RAM是易失型存储器,掉电后啥也没了,再上电后0X0处啥都没有。而且还有一条,ARM的中断向量表,既存放各个中断入口地址的地方,一般放在0x0处,即ROM或Flash中,为了加快中断响应速度,也应该将0X0映射到RAM中去。因此,ARM一般从ROM或Flash启动完成初始化,然后将应用程序拷贝到RAM,然后跳到RAM执行。
刚才说的是,为啥要REMAP,接下来说怎么REMAP。开始的时候我就不清楚,都说REMAP,那怎么才能完成REMAP呢?都是手册看得少呀,其实上面说的已经很清楚了,我们用的at91sam9260更是简单,有专门的寄存器可以配置,MATRIX_MRCR—Master Remap Control Register,向这个寄存器相应位写1就可以了。网上还看到Samsung的某些ARM可以通过编程相应Bank寄存器改变其起始地址,来实现REMAP。
下面以我们的at91sam9260的板子为例详细说说我对at91sam9260 REMAP的理解,开始Flash没有任何程序,当然也没有REMAP,此时将BMS接高,然后上电,此时的0X0地址处位于片内的ROM,由于ROM内好像固化了引导程序,所以此时串口会输出“Rom Boot…>”字样。而内部的SRAM0的起始地址还是在0x20 0000处,而片外Norflash起始地址是0x1000 0000处。然后我们利用h-flasher或J-Flash将生成的Bin文件下载到Norflash内,即起始地址为0x1000 0000处。然后将BMS接低,此时Norflash被映射在0X0地址处,即此时Norflash的起始地址为0X0,(你可能要问那ROM的地址现在在哪儿呢?我也不知道,因为Norflash的地址范围是0X0~0X1F FFFF,而ROM的起始地址默认是0X10 0000,恰好在Norflash的范围内,所以此时ROM哪儿去了?)此时上电,因为0X0地址处即Norflash起始地址有八个合法的中断向量,程序会从Norflash启动,接着执行启动代码,初始化SMC、PMC,然后Copy中断向量表到内部SRAM0,然后,将MATRIX_MRCR寄存器相应位置1,实现REMAP,此时,Norflash的起始地址又变回0X1000 0000,而内部的SRAM0的起始地址又变回0x0了,系统如果发生异常,将从地址0X0处即内部SRAM0取中断向量,而内部SRAM的访问速度显然高于外部的Norflash,所以提高程序性能。这是我对at91sam9260 REMAP的理解,欢迎讨论指教。
2、Bootloader:
说实话,这个概念到现在也不是很明白。可能对于裸奔的系统来说,Bootloader这个概念本身就比较模糊吧,望文生义的话,Boot,靴子,Load,穿上靴子走路才比较舒服(这个比喻好像比较烂喔),对于ARM来说,初始化好,并将向量表以及数据什么的拷贝到RAM,运行起来才顺畅。就是传说中的引导装载。所以我理解的Bootloader就是完成ARM的初始化、建立中断向量表并映射到RAM中、将数据段和必要的代码段拷贝到RAM、完成REMAP、跳转到Main,这一系列过程。说白了就是启动代码干的活。这个理解我自己都感觉很牵强,还请大家多多指点。
3、Flashloader:
这个概念更是模糊,总感觉跟Bootloader差不多,只不过Flashloader可以实现对Flash的读写、擦除等操作,并与调试软件配合实现将程序下载到Flash中。IAR中有一个选项:Use Flashloader,不过好像一般都是针对片内Flash的,我们的板子是外扩的Norflash,好像就没有用到这个东东。
接下来准备说说基于KEIL MDK下的启动代码的理解。
关键字:ARM 菜鸟成长记
引用地址:
ARM菜鸟成长记--之二
推荐阅读最新更新时间:2024-03-16 14:43
ARM9嵌入式系统在励磁调节装置的应用
前 言 励磁系统是发电机组重要的辅助装置,它对发电厂的自动化、发电机组运行的可靠性有着重要作用。随着科学技术发展,励磁方式已从直流电机励磁系统发展到可控硅励磁,自动调节器从原来的模拟式发展到微机数字式。 本文所研究的励磁调节装置,它是以经典和现代控制理论与数字信号处理器DSP技术与嵌入式技术相结合的微机励磁调节器。它继承了过去的微机励磁调节器的全部调节、控制及限制保护功能,同时在计算速度、抗电磁干扰、可靠性等方面有了极大的改进,有效保证整个系统调节、控制功能的实现; 外围采用先进的大规模可编程逻辑器件,以提高整个系统的可靠性,并形成对用户开放的逻辑系统。 1、励磁调节器的组成原理 图1 励磁调节系统原理图 所示
[单片机]
ARM紧致内存TCM的解释
TCM简介 TCM :TIghtly Coupled Memory的缩写。为了弥补Cache访问的不确定性,而增加的OnChip Memory.有的CPU含有分立的InstrucTIon TCM / Data TCM.TCM包含在存储器的地址映射空间中,可以作为快速存储器来访问。TCM使用物理地址,对TCM的写访问,受到MMU内部保护信息的控制。向TCM中的内存位置写入时,不会发生任何外部写入。 TCM用于向处理器提供低延迟内存,它没有高速缓存特有的不可预测性。 可以使用 TCM 来存放重要例程,如中断处理例程或者极需要避免高速缓存不确定性的实时任务。此外,可以使用 TCM 来保存暂时寄存器数据、局部属性不适合高速
[单片机]
基于ARM Linux的图像采集与蓝牙传输
嵌入式Linux系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用ARM920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。 本文介绍基于嵌入式Linux的USB图像采集系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。 1 软硬件平台概述 系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2
[应用]
ARM推动物联网设备生态链创新
在亚洲,中国科技界的几家领导品牌正陆续借助ARM mbed 物联网设备平台推出许多实际应用的解决方案。上海世界移动大会 (MWC Shanghai)正是一个绝佳时机,让我们可以开始看到商业可用的IoT设备如何将智能创新元素带入品牌体验。 两大关键趋势: 家用安全启用语音人工智能 协议栈认证让创新者迅速将产品推向市场 领先的安全技术,用于语音AI的智能家庭IoT体验 当前物联网时代最重要的趋势之一,是能针对消费电子产品及服务型企业提供更具价值的新客户接触点,便是在物联网设备中扩展语音AI功能。亚太区是该趋势很重要的一个市场,到2021年,在亚洲和大洋洲地区,预估将有超过47%具有声音AI功能的设备。ARM mbe
[网络通信]
Cadence优化全流程数字与签核及验证套装
楷登电子(美国Cadence公司,NASDAQ: CDNS)今日宣布,其全流程数字签核工具和Cadence®验证套装的优化工作已经发布,支持最新Arm® Cortex®-A75和Cortex-A55 CP,基于Arm DynamIQ™技术的设计,及Arm Mali™-G72 GPU,可广泛用于最新一代的高端移动应用、机器学习及消费电子类芯片。下面就随手机便携小编一起来了解一下相关内容吧。 为加速针对Arm最新处理器的设计,Cadence为Cortex-A75和Cortex-A55 CPU量身开发全新7nm快速应用工具(RAK),包括可实现CPU间互联和3级缓存共享的DynamIQ共享单元(DSU),以及专为Mali-G72 GP
[手机便携]
基于μC/OS-II嵌入式操作系统的TCSC实验控制器前置单元设计
可控串联补偿( TCSC) 是柔性交流输电系统( FACTS)概念提出后的第一个FACTS装置。由于TCSC直接串入输电线路,可以连续、快速、大范围地调节线路阻抗(本身的阻抗从容性到感性变化) ,和其自身的数据采集与监控( SCADA)系统相配合,可以实现远方阻抗和功率潮流调节,平息地区性功率振荡,提高系统暂态稳定性,抑制次同步谐振。本文通过一个在研项目——福建-华东电网互联的可控串补研究,详细介绍了可控串联补偿( TCSC)实验控制器的前置单元部分设计,以便于为实际决策提供完整准确的实验数据。
TCSC的稳态特性分析电路模型
TCSC的基本结构是固定的串补电容C并联一个由双向晶闸管(实际也可把两个单向晶闸管并联反接在一起
[嵌入式]
ARM芯片的地址重映射
映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。 我们可以把存储器看成一个具有输出和输入口的黑盒子。如下图所示,输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路具 现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应 的存储单元上存储的数据就会出现在数据总线上面。 图1 普通的单片机把可执行代码和数据存放到存储器中。单片机中的CPU从储器中取指令代码和数据。其中存储器中每个物理存储单元与其地址是一一对应而且是不可变的。如图1,CPU读取0x00000000地址上存储单元的过程。
[单片机]
ARM新推出高效能Cortex-M7处理器
ARM推出最新的32位元Cortex-M处理器Cortex-M7。(取自www.computerworld.com) ARM宣布推出最新的32位元Cortex-M处理器Cortex-M7,相较于现今效能最强的ARM架构微控制器(MCU),其运算及数位讯号处理(DSP)效能均提升了两倍之多。ARM Cortex-M7处理器锁定高阶嵌入式应用,适用于新世代的汽车、连网装置以及智慧家庭和工厂应用。首批获得ARM Cortex-M7处理器授权的厂商包括Atmel、飞思卡尔与意法半导体。 ARM处理器部门负责人Noel Hurley指出:「Cortex-M7加入Cortex-M系列处理器后,ARM与合作伙伴将能为连网世界提供最具扩
[手机便携]