关键词不能为空

当前您在: 主页 > 英语 >

ARM启动及工作模式切换.

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 23:45
tags:

-

2021年2月1日发(作者:甘蔗的英文)



ARM


启动及工作模式切换



一、原理







如何让嵌入式系统快速稳定地启动 是一个重要问题。嵌入式系统的资源有限,程序通常都是


固化在


ROM


中运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启 动后程


序往往要被搬移到


RAM


中,因为


RAM


的存取速度要比


ROM


快得多,这样 大大提升系统的性能。启动


程序要完成的任务包括:硬件初始化,系统存储系统的配置, 复制二级中断向量表。




二、启动程序过程



● 系统硬件初始化



系统上电或复位后,程序从位于地址


0x0



Reset


Exception


Vector


处开始执行,因此需要在这里

< br>放置


Bootloader


的第一条指令:


b ResetHandler


,跳转到标号为


ResetHandler


处进行第 一阶段的


硬件初始化,主要内容为:关看门狗定时器,关中断,初始化

< br>PLL


和时钟,初始化存储器系统。执


行完以上程序后 ,系统进行堆栈和存储器的初始化。系统堆栈初始化取决于用户使用了哪些中断,以


及系 统需要处理哪些错误类型。


一般情况下,


管理者堆栈必须设置,


如果使用了


IRQ


中断,



IRQ


栈也必须设置。如果系统使用了外设,则需要设置相关的寄存器,以确定其刷新频 率、总线宽度等信


息。



● 代码段复制到


RAM


中运行



因为嵌入式系统的代码通常都是固化在


ROM


或者


Flash


中,上电后开始运行。由于

< br>ROM



Flash



读取速度相对较慢,这样无疑会降低代码的执行速度和系统的运行效率。为此,需要把系统的代 码复


制到


RAM


中运行。


使用


SDT


链接器


ARMLink


产生的定位信息,



RO


的有效代码和数据段到


RAM


中。


ARMLink


将编译后的程序链接成


ELF


文件。映像文件内部共有三种输出段:


RO


段、


RW


段和


ZI


段。


这三种输出段分别包含了只读代码及包含在代码段中的少量数据、可读写的数据、初始化为

0


的数


据,


ARMLink


同时还产生了这三种输出段的起始和终止定位信息:


Image$$$$RO$$$$Base



Image$$$$RO$$$$Limit



image$$$$RW$$$$Base



Image$$$$Limit



Image$$$$Linit < /p>



Image$$$$ZI$$$$Limit


。 可以


在程序中使用这些定位信息。将


ROM


中的代码和数据搬移到


RAM


中。



● 建立二级中断向量表




ARM


系统中,中断向量表位于


0x000000000

< p>
开始的地址处,意味着无论运行什么样的上层软件,


一旦发生中断,


程序就得到


Flash


存储器中的中断向量 表里去,


降低系统的运行效率。


因此在


RAM



建立自己的二级中断向量表,当中断发生后,程序直 接从


RAM


中取中断向量进入中断子程序。尤其


是在中断频繁发生的系统里,这种方法可以大大提高系统的运行效率。



● MMU 的应用



MMU


是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。


MMU


通常是


CPU


的一部分,本身有



少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作


TLB


(转换旁置缓冲区)。所有数据请


求都 送往


MMU


,由


MMU


决定数据是在


RAM


内还是在大容量 外部存储器设备内。如果数据不在存储空


间内,


MMU


将产生页面错误中断。


MMU


存储器 系统的结构允许对存储器系统的精细控制,大部分的控


制细节由存在存储器中的转换表提 供。



这些表的入口定义了从


1KB< /p>



1MB


的各种存储器区域的属性。


MMU


完 成的两个主要功能是:将虚地址


转换成物理地址,控制存储器存取允许。


MMU


关掉时,虚地址直接输出到物理地址总线。



SDRAM


地址分配






三、启动代码完成的主要功能



1




建立异常中断的入口向量



2




建立中断向量表



3





ARM


每种运行模式设置堆栈



4




初始化


ARM



MPLL


时钟



5




初始化


MMU


(内存管理单元)



6




初始化存储器控制器



7




关闭看门狗、关闭中断



8




判断


IRQ


中断的中断入口



9





RW


段的内容从


flash


拷贝到


SDRAM


,初始化


ZI


段为


0


10




跳转到应用程序(


C


代码)




四、


S3C2410


初始化说明



1


创建中断向量表



中断向量表创建到


SDRAM


高位地址上,主要是因为


SDRAM


的地址位置需要放置执行的映象程序,而


且在


SDRAM


中查找向量表速度会快很多。中断向量表放置时需要字对齐。









ALIGN ;


通过添加补丁字节使当前位置满足一定的对齐方式





















;


可读写的数据段









AREA RamData, DATA, READWRITE


;^=MAP:


定义一个结构化的内存表 (


storage map


)的首地址,地址为


0x33ff8000








^ _ISR_STARTADDRESS 0x33ff8000


HandleReset # 4 #


--

< br>Field


:定义一个结构化内存表中的数据域,该域为


4


个字节




HandleUndef # 4


HandleSWI # 4


HandlePabort # 4


HandleDabort # 4


HandleReserved # 4


HandleIRQ # 4


HandleFIQ # 4


;Don





< br>'













t


use


the


label





< p>












IntVectorTable


















,


;The value of IntVectorTable is different with the address you think it may be.


;IntVectorTable


''''''''''''''''



HandleEINT0 # 4


HandleEINT1 # 4


HandleEINT2 # 4


HandleEINT3 # 4


HandleEINT4_7 # 4


HandleEINT8_23 # 4


HandleRSV6 # 4


HandleBATFLT # 4


HandleTICK # 4


HandleWDT # 4


HandleTIMER0 # 4


HandleTIMER1 # 4


HandleTIMER2 # 4


HandleTIMER3 # 4


HandleTIMER4 # 4


HandleUART2 # 4


HandleLCD # 4


HandleDMA0 # 4


HandleDMA1 # 4


HandleDMA2 # 4


HandleDMA3 # 4


HandleMMC # 4


HandleSPI0 # 4


HandleUART1 # 4


HandleRSV24 # 4



HandleUSBD # 4


HandleUSBH # 4


HandleIIC # 4


HandleUART0 # 4


HandleSPI1 # 4


HandleRTC # 4


HandleADC # 4


2


创建异常中断的入口函数



b ResetHandler


b HandlerUndef handler for Undefined mode


b HandlerSWI ;handler for SWI interrupt


b HandlerPabort handler for PAbort


b HandlerDabort handler for DAbort


b . ;reserved


b HandlerIRQ handler for IRQ interrupt


b HandlerFIQ handler for FIQ interrupt


异常向量的入口函数是由


8


个跳转指令组成的,



8

< p>
个跳转指令需要按照顺序放置到固定的地址上,


地址是

0x00



0x1c


,这


8


个跳转指令是


ARM


汇编指令,所以条指令占


4


个字节的位置。




3


关闭看门狗、关闭中断



ldr r0,=WTCON watch dog disable


ldr r1,=0x0


str r1,[r0]



ldr r0,=INTMSK


ldr r1,=0xffffffff all interrupt disable


str r1,[r0]



ldr r0,=INTSUBMSK


ldr r1,=0x3ff all sub interrupt disable


str r1,[r0]

-


-


-


-


-


-


-


-



本文更新与2021-02-01 23:45,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595891.html

ARM启动及工作模式切换.的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文