断电后或者复位后,程序去哪里了?
先去到复位向量那里地址为0x0000,然后跳转到对应的启动函数_start:完成一些堆栈,ROM的初始化。然后跳转到main函数执行逻辑。当有硬件中断时,会查看是配置为可屏蔽中断,通过后,跳转到向量表对应的中断函数。
那么带boot的程序又是否一样呢?
其实是一样的
先去到复位向量那里地址为0x0000,然后跳转到boot的启动函数_start,无需求时在跳转到app程序的_start启动函数。在app程序需要用.CSEG指令指示汇编器一个段的起始,手动将_start的地址改为romflash中app的首地址。
唯一需要注意的是在boot程序中只能用查询法响应中断,每个中断向量只能绑定一个入口地址,因此boot函数不能用中断。要留给app程序。
原因:
FSL_ChangeInterruptTable瑞萨flash自编程库T01说可以将中断向量偏移到ram中但是手册里有Therefore, if there are multiple interrupt sources for which you want to execute
different processing, the interrupt sources need to be identified中断类型需要识别,也就是需要查询,不能自动跳转到对应的中断函数入口。