嵌入式ARM启动代码的工作

版权声明:本文为博主原创文章,未经博主允许不得转载。 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)进入高级应用程序。

猜你喜欢

转载自blog.csdn.net/weibo1230123/article/details/84035631