ARM处理器系统初始化过程.docx
《ARM处理器系统初始化过程.docx》由会员分享,可在线阅读,更多相关《ARM处理器系统初始化过程.docx(50页珍藏版)》请在课桌文档上搜索。
1、ARM处理器系统初始化过程1禁止MMU,关闭中断,禁止CaChe:2根据硬件设计配制好处理器时钟、DRAM时钟、定时器时钟;3根据系统中所用的f1.ash和DRAM芯片容量和电气参数设置它们的起始地址、容量、刷新频率等:4将固化在门ash芯片中的程序搬移到DRAM内存中:5使能CaChe,使能MM3跳转到DRAM内存中运行继续初始化,包括根据具体应用以及系统中的硬件配置初始化各个功能模块、安装好异常中断处理程序、使能中断等:6进行操作系统相关初始化;禁止MMU,关闭中断,禁止CaChe通过。系统控制协处理器的存放器1的第O位可以允许和禁止在4位后这位是o.被禁止。关闭中断与翻开中断中断是一种高
2、笠的对话机制,但有时并不想程序运行的过程中中断运行,比方正在打卬东西,但程序突然中断了,又让另外个程序输出打印内容,这样在打印机上就会乱得不得了.问时有两份以上的文件交错地打印在一张纸上像不可剥夺的资源.就一定要关闭中断.让它占有这个资源.在ARN里.没有像86那样有去除中断指令C1.I.那么在ARM里是怎么样实现关中断和开中断的呢?下面就来看看ARM的美中断和开中断实现。void1.ock(void)stmdbsp!,IrO)nrsr.cpsrorrr.H),SOxCOtsrCPSr-CXSf,r。Idminsp!1(r)上面这段程序是通过设置CPSR的第6,,位来实现的,因为第6,7位是设
3、置为1时,就不再叫应中断.voidUn1.ock(void)Stindbsp!,h-0)nrsr,cpsrbicr.r.SOxCOnsrcpsr_cxsf,rIdmiasp!,(r)上而是臾新开中断的命令,同样是设置CPSR的第6.7位.但它的值是O.就可接收中断了.如果在多个任务之间进行共享数据,一般是需瞿使用关中断和开中断实现数据同步的,其实中这种关中断和开中.收是进入临界区和退出临界区.如果是像PC机那样为多个CPt的话,关中断并不能防止这种情况.系统的在应用编程(IAP)以及在系统编程功能(ISP)等“中断向盘表RM要求中断向量表必须放置在从O地址开始,连续8X4字节的空间内。每当个中
4、断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向身表中1个字的存储空间,只能放理条AKM指令,使程序跳转到存储淞的其他地方,再执行中断处理。中断向量表的程序实现通常如卜.表示:AREABoot,CODE,READoN1.YENTRYBReset1.1.and1.erBUndefHand1.erBSWIHand1.erBPreAbortHand1.erBDataAbortHand1.erBBIRQHand1.erBFIQHand1.er其中关键字ENTRY是指定编译器保存这段代码,因为编译器可能会认为这是一段云余代码而加以优化。链接的时候要确保这段代
5、码被链接在。地址处,并且作为整个程序的入口。MHMMI0:开机默认值,Boot袋栽模式向盘表(OX(KKK)OOOoOXoooOOO3c)映射的是BootB1.oCk中的Ox7HEOOO-Ox7FH03c中的ft:芯片复位时.启动boot袋段程序.boot装我程序检住PO.14口的状态和用户的异常向量,判断是迸入ISP状态还是启动用户程序,若后动用户程序,则自动设双MEWtAP=I(片内f1.ash启动)或3(片外程序存储寄启动.很奇怪的,我在实验中,当使用无片内f1.ash的1.pC221。时即使设置PO.14为上下都没关系,芯片会跳过域而执行片外f1.ash中的代吗.MBwAI,=h中断向
6、显龙就在片内f1.ash中,地址就是OXOoO(Xx)OO-OXOoOoOO3c,相当于汉仃映射:MEMMAP=2:G为主要的设置.即是JR唉射的关键之所在,当设置NEw1.AP=2时,中断向此表(OXOoOOQ(KK)-CIXoI)DC1.oo30映射的是片内SRAM中的(MQ(KK)O(KH)EOoOocI%中的俯,而因为是SRAV,所以在程序运行的过程中是可以改变的.这样所可以到达成映射的目的啦(中断向盘表可以防时脩改).MEMMAP=3:中断向员表就在片外f1.ash中.中断向显&9x00000000-0x0000003C)映射到足片外f1.ash中的0x800000000x80000
7、03c中的曲;功能上与MEMUAP=I时的差不多,因为旦程序固化到门ash中,即为只读,只是数假映则而己!设置ME三P:MemoryMapping(whenInterniptVectorsareinRAM)MEMMAPEQ1.OxEOIFCO1.O;IkxnoryMappingContro1.IF:DEF:REMAP1.DRRO,MEMMAPIF:DEF:EXTMEMMODEMOVR1.,#3E1.IF:DEF:RAMMODEMOTR1.#2B1.SEMOVR1.tnENDIFSTRR1.,R0BDIFMI三IM两个控制位MEMMAPU:000BOOT装毂程序模式01UserF1.ASH模式1
8、0 用户RAM模式11 用户外部存体满根式10模式也就是RAM梭式我的访问地址OXOo是跟访问KAMOXWWOOOO中的数据是完全一样的向RAM中写进数据然后通过数据窗口观察0X0地址的变化应该是I可步变化的存储器类型和时序配置主要是对系统存储器控制寄(MD的初始化,由于存储!潺控制器并不是ARM架构的一局部,不同芯片的实现方式各不相同.由于运口能力和寺址能力的强大.葩于ARM内核的微处理器系统般都需要外扩展各种类型的存铭器.对干存储器系统的初始化一般包括如下儿个方面;一一存储潺类型、时序和总处宽度的配Bt一一存储寄地址的限置(1)存储网类型星rARN微处理系统的存储器般有如下几类:SARM.
9、DRAM1F1.ahJn1.W,即使同类存储器也行访问速度上的不同.其中,SRAM和F1.ahJa于静态存储器,可以共用存储器端口,而DRAM有动态刷新和地址复用等格征,需要门的存储器端1.1.(2)时序存储器端口的接口时序优化对系统性能影响非常火,因为系统运行的速度瓶颈搬都存在于存储器的访问,因此希望在健等的访问尽可能快,但乂要考虑由此带来的系统程定性问题.(3)总线宽度ARM微处理器架构支持8/16/32位的数据总线宽度访问存储器和外设,对于特定的存赭器说,霜要设定数据总践的宽度.(4)存储涔地址的配置ARM点处理器架构理论卜.可以支持IGB的地址空间,而对于个实际的系统来说,配置的物理地
10、址远没有这么多.因此,如何配置存储寄的地址,也是一个里要的问即.(5)存储器地址乐映射存储器地址重映射就是可以通过枕件配置来改变块存储腓物理地址的方法,是当前许多先进控制牌所具有的功能,进行地址重映射的原因:提高系统的运行效率.进行地址血映射的注意:保证程序流程的连续性。有的ARM处理腓不具有地址水映射的功能,可以采样代码搬移加跳收的方式完成上述功能.初始化堆栈因为ARM有7种执行状态,每种状态的堆栈指针存放器(SP)都是独立的。因此,对程序中需要用到的每一种模苴都要给SP定义一个堆栈地址.方法是改变状态存放器内的状态位,使处理器切换到不同的状态,让后给SP赋值。注意:不要切换到USer模式进
11、行USer模式的堆栈设置,因为进入USer模式后就不能再操作CPSR回到别的模式了,可能会对接卜.去的程序执行造成影响。这是段堆栈初始化的代码例如,其中只定义了三种模式的SP指针:MRSRO,CPSRB1.CRO,RO,三)DEMSK平安起见,屏蔽模式位以外的我他位ORRR1.R0,IRQMODEMSRCPSR_cxfs,R1.1.DRSP,=UndefStackORRri,rokfiqmodeMSRCPSI1.CXSf,R1.1.DRSP,=FIQStackORRR1.R0,#SyCMoDEMSRCPSR_cxsf,R1.1.DRSP,=SVCStack初始化应用程序执行环境如果使用分散加载
12、描述文件调整堆栈和堆放置,则链接器创立一userinitia1.stackheap()函数,并使用链接器定义的符号作为这些区域的名称。映像一开始总是存储在ROM/E1.ash里面的,其RO局部即可以在RoM/F1.ash里面执行,也可以转移到速度更快的RAN中执行;而RW和Z1.这两局部是必须转移到可写的RAM里去。所谓应用程序执行环境的初始化,就是完成必要的从ROM到RAM的数据传输和内容清零。下面是在ADS下,一种常用存储器模型的直接实现:1.DRr,=Iinage$SRO$S1.iini1.得到牌数据源的起始地址1.DRr1I1.nage$RW$BaSeRW区在RAM里的执行区起始地址1
13、.DRr2,=ImagcJSZUSBaseZI区在RAM里面的起始地址CMPr,r1.比较它们是否相等BEQ%F10CMPr1.,r31.DRCCr2,10,#4STRCCr2,r1.,if4BCC%B01 1.DRr1.,=IImagesJZISS1.imitIMOVr2,W)2 CMPr3,r1.STRCCr2,(r3,#4BCC%B2程序实现了RW数据的拷贝和ZI区域的清零功能。其中引用到的4个符号是由链接罂第输出的.IinageSSROSS1.imitI:表示Ro区木地址后面的地址,即RW数据源的起始地址IinageSSRWSSBHse:1湛区在RAY里.的执行区起始地址,也就是编译器
14、选项RWBaSe指定的地址ImageJSZIJSBase:Z1.区在RAM里面的起始地址Image$ZI$1.imitI:Z1.区在RAM里面的结束地址后面的个地址程序先把R(W里hnagc$6RO$61.imt开始的演初始数据拷贝到RAM里面I1.mage$1JRWSSBaseI开始的地址,当RAM这边的目标地址到达Image$ZI$BaSe1.后就表示RW区的结束和Z1.区的开始,接下去就对这片Z1.区进行清零操作,直到遇到结束地址IEage1.imit1.改变处理器模式因为在初始化过程中,许多操作需要在特权模式下才能进行(比方对CPSR的修改),所以要特别注意不能过早的进入用户模式。内核
15、级的中断使能也可以考虑在这一步进行。如果系统中另外存在一个专门的中断控制器,这么做总是平安的。呼叫主应用程序当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序。最简雌的一种情况是:IMPORTmainBmain直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。在ARVADS环境中,还另外提供了套系统级的呼叫机制。IMPORT_mainB_mainMin()是编译系统提供的个函数,负费完成库函数的初始化和初始化应用程序执行环境,最后自动跳转到Inaino函数。ARM介绍ARM很处理器的工作状态一般有两种.并可在两种状态之间切换:第一种为ARM壮态.此时处理器
16、执行32位的字对齐的ARM指令:第二种为ThUmb状态,比时处理需执行16位的、半字对齐的ThuMh指令.在程序的执行过程中,微处理器可以拔时在两种工作状态之间切换,并R,处理器工作状态的转变并不影响处理器的工作模式和相应存放潺中的内容.但ARM微处理票在开始执行代码时,应该处于ARM状态.ARM处理器状态进入ThUMb状态:当操作数存放器的状态位(位0)为I时,可以来川执行BX指令的方法,使微处理器从ARN状态切换到ThUnb*火态.此外.当处理器处于ThUmb状态时发生异常(如IRQ.FIQ.Undef.Abort.SW1.等).则异常处理返回时.自动切换到ThUnb状态.进入ARM状态:
17、当操作数存放器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态.此外.在处理器进行异常处理时,把PC指针放入异常模式燧接存放器中,并从异常向盘地址开始执行程序,也可以使处理腓切换到ARM状态.ARM处理潺根式ARM微处理器支持7种运行模式,分别为:用户模式(USr):RM处理器正常的程序执行状态.快速中断模式(fiq):用于高速数据传输或通道处理,外部中断模式(irq)用于通用的中断处理.管理模式(SVC):操作系统使用的保护模式.数据访问终止模式Gbt):当数据或指令预取终止时进入该模式,可用于起拟存储及存储保护.系统模式($ys):运行具有特权的操作系统任务,定
18、义指令中止模式(Undh当未定义的指令执行时进入该模式,可用于支林饿件协处理零的软件仿女ARM处理器模式ARM微处理器的运行模式可以通过软件改变,也可以通过外制中断或异常处理改变,大多数的应用程序运行在用户模式下,当处理腓运行在用户模式下时,某些被保护的系统坡双是不能被访问的,除用户模式以外.其余的所有6种模式称之为非用户模式,或特权模式:其中除去用户模式和系统模式以外的5种又称为井常模式,常用于处理中断或弁行,以及需要访向受保护的系统货源等情况.ARM存放器ARM处理共有37个存放器.其中包括:31个通用存放寄,包恬程序计数落(PC)在内.这些存放网都是32位存放器.以及6个32位状态存放器
19、.关于存放器这里.就不详细介绍了,有兴趣的人可以上网找找,很多这方面的资料.异常处理当正常的程序执行流程发生为时的停止时,称之为弁常,例如处理个外部的中断请求,在处理弁常之前.当前处理港的状态必很保存,这样当异常处理完成之后,当前程序可以继续执行。处理器允泞多个异常.同时发生,它们将会按固定的优先级进行处理,当一个异常出现以后,ARY也处理牌公执行以下几步操作I进入界常处理的根本步躲:将下一条指令的地址存入相应连接存放涔1.R,以便程序在处理异常返回时能从正确的位W近新开始执行,将CPSRU制到相应的SPSR中,根据异常类型,强制设KtCPSR的运行模式位。强制PC从相关的异常向fit地址取下
20、一条指令执行.从而跳转到相应的异常处埋程序处.加果异常发生时.处理器处于ThU曲状态,则当界常向量施址加我入PC时,处理器自动切换到ARM状态.ARM微处理器对异常的响应过程用伪码可以描述为:R14Return1.inkSPSR一=CPSRCPSR4:0=ExceptionModeNumberCPSR5=0i当运行于ARM工作状态时IfResetorFIQthen:当响应FIQ异常时.禁止新的FIQ异常CPSR6=1PSR7=1PC=ExceptionVectorAddress异常处理完毕之后.AM微处理器会执行以下几步操作从弁常返回:将连接存放器I.R的值减去相应的偏移fit后送到PC中.将
21、SPSR复制回CpSR中.若在进入异常处理时设置了中断禁止位.要在此去除式专用的栈地址-JUiATTrtSIRAIijJVAVfIfu女H311JIruX侑怵什什NI,HTHTITJ1.请问cache和write-buffer的关系,在IB和cache同时翻开的时候,数据是如何流动的呢?考虑到WB的特性,是不是较大段的数据被写入WB?RB的设计是为了防止处理涔流水线被写数据总线操作(写主存,写外困设备存放器等)拉住。典型写数据总线时机有三种:是cache处于Writethrough策略下的写操作;二是cache处于Writeback策略下,dirty数据由于CaChe行替换或者被程序主动清空而
22、写回主存,-:是不经过CaChe,直接对数据总线的写操作。有了B之后,被写回数据总线的内容在进入MB之后,处理器和CaChe就可以立刻继续使用了。这就是WB和CaChe的关系。2。还有就是所谓mcachab1.ebit*f11wbufferab1.ebit的问题,这个问题来自于CamrarmBpartB的5.4节,那里有一张表,我对这个表死活不理解。这个问题以前也问过,但是没有人答复。ARM各系歹IJ的处理器上的CaChe设汁有所不同,所以有的CUChe只有writeIhrOUgh策略,有的CaChe只有writeback策略,还有的cache是writeback策略但允许一定的Writeth
23、rough行为,因此C和B位的四种组合对这三种cache而言有不同的含义。第列和第二列分别针对writethrough型CaChQ和Writeback型CaChe进行解释,其含义可以参考我对第1个问眶的答复,第三列针对UTiIebaCk策略但允许一定的Wri1.eIhroUgh行为的CaChe,第一行好理解,第二行之所以在B位为。的情况卜依然是bufferab1.e,应该是因为硬件上的设计原因(节省硬件资源或者由于目标设计频率限制),第三行的含义是,当C=I,B=O时,CaChe使用Writethrough策略,WB开启,第四行的含义是,当C=1.B=I时,CaChe使用Wrisback策略,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 处理器 系统 初始化 过程

链接地址:https://www.desk33.com/p-1677763.html