1. CPU到特定地址获取第一行指令来执行,实现方式通常有2中:
(1) 指定特定地址为启动地址---CPU reset后,将PC(Program Counter)寄存器设为特定地址,只要user的程序确实存储在这个地址,就能正确执行。
(2)通过中断矢量表存储程序启动地址---CPU reset后,会将CPU中存储中断矢量表(Interrupt Vector Table)地址的寄存器设为某特定地址,接着引发 Reset中断, 所以只要user将中断矢量表存储在这个地址,并指定Reset中断的中断处理程序(Interrupt Service Routine)为的某个函数(如boot()),这样该函数就可以在开机后被CPU执行。
2. User的程序开始运行后,会对CPU做初始化动作。
3. 将程序的数据段从只读存储器(ROM或Flash)载入RAM中。
4. CPU初始化完成后,之后初始化应用程序用到的硬件设备。
5. 初始化各个子系统,如RTOS(嵌入式OS)、动态存储器管理、图形界面系统等。
6. 执行应用程序的主程序。
Boot程序的运行流程
1. 设置某些重要的CPU寄存器,如堆栈指针寄存器(Stack Pointer)、状态寄存器(Status Register)。
eg.在初始化动作还没完成之前,不能产生中断,通过设置SR来实现。
2. CPU各部分功能初始化。
3. 系统初始化。
4. 调用应用程序的主程序。
5.结束退出。