如题
以uboot为例,开头部分裸机程序日常,根据soc的要求设置复位向量,然后做些基本的初始化设置,设置堆栈地址,开始执行c程序,做些串口,设备驱动管理,环境变量初始化之后,把自己搬运到内存高地址空间,然后再执行些具体功能化的驱动。最后就开始找操作系统镜像和相关的信息,找到后就跳转到操作系统的entry addr执行。大概这样吧
补充一下楼上的朋友,如果是MCU程序中和App对应的Bootloader(执行程序升级),可能在初始化必要的通信接口(向量表是否处理看需不需要支持中断,业务少的时候查询效率和中断差不了多少)之后,通过通信接口(CAN/UART/I2C等)与外部升级主机(可能是设备或PC端GUI)通信,接收升级包并写入存储器指定地址。处理完成后跳转到升级包的入口处执行App。当然根据具体的设计和协议实现过程或有不同。