版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weibo1230123/article/details/84035631
嵌入式ARM启动代码的工作
(1)定义代码的初始入口点:初始入口点是指代码运行时的起始点,它在每个映像文件中是唯一的,也是每个可执行的映像文件 所必须含有的,而且必须位于映像文件的可执行域内。
(2)设置中断向量表,链接到包括复位、未定义指令,软件中断、取指中断、取数中断、IRQ和FIQ等异常或中断的处理程序。
(3)初始化存储系统。
(4)初始化ARM各个模式下的堆栈:根据应用程序使用资源的情况,设置每种或者某些ARM处理器模式下的堆栈区域。
(5)始化关键的I/O设备:用于防止在使能中断时产生不必要的开销。
(6)初始化中断时需要使用的一些变量。
(7)中断使能。
(8)根据情况切换处理器的模式和状态:ARM在运行启动代码时处于特权模式,用户在进入应用程序之前,可以将其切换到用户 模式,也可以进行ARM状态和Thumb状态的切换。
(9)初始化高级程序运行时用到的存储区,例如将RW属性的数据和ZI属性的数据移动到ARM等可以写的储存器,因为这些数据
在程序加载时是保存在ROM等储存介质内的。
(10)进入高级应用程序。