嵌入式软件运行流程
上电复位
加电后从起始地址开始执行板机初始化
板级初始化
板级初始化程序具有完全的硬件特性,一般采用汇编语言实现。
其中一定要完成以下内容:
- CPU中堆栈指针寄存器初始化
- BSS段初始化
- 中断控制器、内存等初始化
板级初始化后进入引导/升级阶段
引导/升级
根据需要进入系统软件引导或系统软件升级。可通过测试通信端口数据或判断特定开关的方式进入不同阶段
系统引导
系统引导有几种情况:
- 将系统软件从NOR Flash读取到RAM中运行。可以解决成本以及Flash速度比RAM慢的问题
- 让软件直接在NOR Flash上运行
- 将软件从外存中加载到RAM中运行。
引导后进入系统初始化阶段。
系统升级
系统可通过网络进行远程升级(TFTP、FTP、HTTP)或通过串口进行本地升级
系统初始化
该阶段操作系统等系统软件进行初始化工作,如初始化数据空间、初始化接口和外设等。该阶段需按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化。
系统初始化后进入应用初始化阶段
应用初始化
该阶段进行应用任务的创建,包括信号量、消息队列的创建和与应用相关的其他初始化工作。
多任务应用运行阶段
各种初始化工作完成后,系统进入多任务昨天,操作系统开始任务调度,各应用开始完成功能。
板级支持包
BSP是一段启动代码,与计算机主板的BIOS差不多,但功能差别很大。
BSP在嵌入式系统中介于硬件与OS内核之间。
驱动程序
BSP中包含驱动程序,用于管理设备的操作。
和BIOS/UEFI的区别
BIOS主要是在电脑开启时检测、初始化系统设备、装入操作系统并调度操作系统向硬件发出的指令。UEFI旨在代替BIOS,提高软件互操作性和解决BIOS的局限性。
BSP是和操作系统捆绑运行,BSP还包含和系统有关的基本驱动。
BIOS是不可修改、不可编程的,只能修改参数。但BSP是可以编程修改的,可以添加系统无关的驱动和程序。