前言

内容:

  • 嵌入式软件

中论

嵌入式软件

分类

  • 系统软件:控制和管理嵌入式系统资源,比如设备驱动程序、嵌入式操作系统、嵌入式中间件
  • 应用程序:嵌入式系统中的上层软件,比如飞控软件、手机软件
  • 支撑软件:辅助软件开发的工具软件,比如系统分析设计工具、在线仿真工具

板级支持包(BSP)

介于主板硬件和操作系统中驱动层程序之间的一层。主要包括两个方面:引导加载程序BootLoader和设备驱动程序

功能:

  • 单板硬件初始化,主要是CPU的初始化
  • 为操作系统提供设备驱动程序和程序中断服务程序
  • 定制操作系统的功能,为软件系统提供一个实时的多任务的运行环境
  • 初始化操作系统,为操作系统的正常运行做好准备

特点:

  • 硬件相关性
  • 操作系统相关性

BootLoader

嵌入式系统加电后运行的第一段软件代码,在操作系统内核运行之前的一小段程序。主要是初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态。

功能:

  • 片级初始化。主要完成微处理器初始化
  • 板级初始化。主要完成微处理器以外的其他硬件设备初始化。
  • 加载内核(系统级初始化)。将操作系统和应用程序的映像从Flash存储器复制到系统的内存中,然后跳转到系统内核的第一条指令处继续执行。

在一个嵌入式系统中,操作系统是可有可无的。但设备驱动程序是必不可少的。

设备驱动程序:一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。

设备驱动程序基本功能:

  • 硬件启动
  • 硬件关闭
  • 硬件停用
  • 硬件启用
  • 读操作
  • 写操作

嵌入式系统

嵌入式系统的组成

  • 嵌入式处理器
  • 相关支撑硬件
  • 嵌入式操作系统
  • 支撑软件
  • 应用软件

嵌入式系统的特点

  • 专用型强
  • 技术融合
  • 软硬一体软件为主
  • 比通用计算机资源少
  • 程序代码固化在非易失的存储器中
  • 需专门开发工具和环境
  • 体积小、价格低
  • 对安全性和可靠性要求高

嵌入式系统的分类

用途:嵌入式实时(强实时和弱实时)和嵌入式非实时

安全:安全攸关和非安全攸关系统

嵌入式系统的层级

  1. 硬件层
  2. 抽象层(驱动)
  3. 操作系统层
  4. 中间件层
  5. 应用层

嵌入式数据库系统

特点:

  1. 设备随时移动性
  2. 网络频繁断接
  3. 网络条件多样化
  4. 信息能力不对称

组成:

  • 主数据库
  • 同步服务器
  • 嵌入式数据库
  • 网络连接

嵌入式移动数据库比如满足数据一致性(复制性)、高校的事务处理以及数据的安全性等关键问题。

嵌入式操作系统EOS

特点:

  • 微型化
  • 代码质量高
  • 专业化
  • 实时性强
  • 可裁减和可配置

实时操作系统RTOS

特点:能够接受并以足够快的速度予以处理,能够提供及时响应和高可靠性。

特征:高精度计时系统;多级中断机制;实时调度机制

嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性

  • 可预测性:在运行之前,其功能、响应特性和执行结果是可预测的。
  • 确定性:系统在给定的初试状态和输入条件下,在确定的时间内给出确定的结果。

嵌入式软件设计

嵌入式软件开发是一个典型的交叉平台开发环境,包含三个高度集成的部分

  1. 运行在宿主机和目标机上的强有力的交叉开发工具和实时程序
  2. 运行在目标机上的高性能、可裁剪的实时操作系统
  3. 连接宿主机和目标机的多种通信方式。

image-20240424212859949

特点:

  • 交叉编译:在一个平台上生成可以在另一个平台上执行的代码。(嵌入式系统的开发需要借助宿主机【通用计算机】来编译出目标机的可执行代码)
  • 交叉调试:调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,二者通过串口或者网络进行通信。

软件开发工具

  • 嵌入式软件开发阶段:编码、交叉编译、交叉调试

  • 编辑器:用于编写嵌入式源代码程序,比如keil

  • 编译器gcc:根据源代码交叉编译生成可执行的目标文件

  • 调试器gdb:调试器运行在宿主机上,被调试程序运行在目标机上。二者通过通信(串口、并口、网络、JTAG)等方式建立联系。

后记

生活中真正的勇士向来默默无闻,喧哗不止的永远是自视高贵的一群。——————路遥《平凡的世界》