一. 引导Bootstrap在ROM中执行
romInit.s:romInit
目标板加电后,程序指针指向RESET中断程序入口处,开始执行初始化程序romInit.s,设置机器状态字及其他硬件相关寄存器,关闭中断,禁止程序和数据CACAHE,初始化内存,并设置堆栈指针,保存启动类型,调用romStart.c中的romStart().
bootInit.c:romStart()
这是上电后第一个执行的C函数,根据堆栈中的参数决定是否清零内存RAM(如果是冷启动cold start,则清零),根据不同的bootRom文件,把ROM中数据段和文本段拷贝到RAM,(如果ROM代码是压缩的,还要解压).
二. ROM中的引导程序被搬移到RAM中,开始在RAM中执行映像
sysALib.s:sysInit()
该函数为RAM入口地址,是引导启动后执行的第一个函数,它主要是非能中断,初始化堆栈指针,tlb页表初始化等,并跳转到usrInit中执行。
prjConfig.c:usrInit()
此处需注意,在下图的流程图中调用的是usrConfig.c中的usrInit,这种可能是对于指定bsp中没有实现usrInit情况而言,实际使用中,会在prjConfig.c中自动生成usrInit函数,因此实际使用中,不会调用usrConfig.c中的函数,而是使用prjConfig.c中的函数。
主要功能是: