什么是嵌入式软件?
嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造。
嵌入式软件最基本的理解是软件+硬件结合,来对产品做出定义,而非嵌入式软件又或是纯互联网行业则是单纯的对软件做出定义,其兼容性差,软件移植性差。
传统行业上对嵌入式的应用较为广阔,即便现在互联网行业如此发达,但是不得不承认,传统行业在社会发展中有不可替代的地位。传统行业与互联网的结和的嵌入式开发应用更是具有光明前景的。
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序4个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,同样由程序及其文档组成,是嵌入式系统的重要组成部分。
嵌入式中硬件和软件也不再是截然分开的两个概念,而是紧密结合、相互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软硬件,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。
嵌入式软件的特点:
- 独特的实用性
嵌入式软件要求它与外部硬件和设备联系紧密,嵌入式系统以应用为中心,嵌入式软件是应用系统,根据应用需求定向开发,面向产业、需要特定的行业经验。每种嵌入式软件都有自己独特的应用环境和实用价值。
- 灵活的适用性
嵌入式软件通常可以认为是一种模块化软件,它应该能非常方便灵活地运用到各种嵌入式系统中,而不能破坏或更改原有的系统特性和功能。嵌入式软件要使用灵活,应尽量优化配置,减小对系统的整体继承性,升级更换灵活方便。
- 程序代码精简
由于嵌入式系统本身的应用有小体积、小存储空间、低成本、低功耗等要求,嵌入式软件和大型机上的软件相比,具有代码精简、执行效率高等特点。
- 可靠性、稳定性高
嵌入式系统应用要求一般较为苛刻,特别是在涉及安全相关的领域,如汽车电子(下面会具体说明汽车软件嵌入式的相关内容)、还有工业控制、航空航天等,这些领域的嵌入式系统不仅要求硬件可靠,还对嵌入式软件提出了更高的要求。嵌入式软件需要运行可靠、稳定,具有错误处理及故障恢复等功能。
嵌入式软件分类:
按照通常的分类方法,嵌入式软件可以分为系统软件、应用软件和支撑软件三大类:
- 系统软件
系统软件控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
- 应用软件
应用软件是嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互。应用软件是嵌入式系统功能的体现,如飞行控制软件、手机软件、MP3播放软件、电子地图软件等,一般面向特定的应用领域。
- 支撑软件
支撑软件是指辅助软件开发的工具软件,如在线仿真工具、交叉编译器源程序模拟器和配置管理工具等。
在嵌入式系统当中,系统软件和应用软件运行在目标平台上(即嵌入式设备上),而对于各种软件开发工具来说,它们大部分都运行在开发平台(PC机)上,运行Windows或 Linux操作系统。
嵌入式软件和非嵌入式软件的区别
嵌入式:在已有的硬件上移植(需要修改操作系统源码,安装不需要)操作系统解决软硬件耦合导致的问题。
嵌入式软件和非嵌入式软件的区别(即传统开发和嵌入式开发的优缺点):
传统开发的缺点:
- 软硬件耦合度高导致软件移植性差
- 软件开发人员必须懂硬件
- 软件功能性差
优点:简单,开发成本低
嵌入式开发的优点:
- 解决传统开发软硬件耦合度导致的问题
- 多任务机制
- 提供了丰富的网络协议栈
- 提供了丰富的开源软件和工具
缺点:硬件成本高
汽车嵌入式软件方向
嵌入式软件部分分为软件架构、软件刷写、底层软件、应用层软件和故障诊断等几个部分。
软件架构:
(1)Boot-loader;
(2)软件平台层;
(3)策略应用层。
Boot-loader作为一个单独的工程开发,生成一个独立的二进制文件。
下图为基于UDS协议的Boot-loader架构:
下图为软件架构:
软件刷写:控制器复位后,将根据外部硬件配置选择boot-to-flash模式,跳转到Boot-loader,执行RAM自检。若自检成功并且检测到有效的应用软件,将跳转到应用软件,否则,进入boot-loader模式,等待刷新有效的应用软件。下图是Boot-loader软件逻辑。
底层软件架构
硬件依赖层(底层驱动):包括复杂驱动、看门狗、基础服务(系统调度所需定时器、中断管理和一些通用处理函数,如PLL驱动、Flash驱动、内存管理驱动、定时器驱动)、IO、CAN等其他驱动。
硬件抽象层:对IO口、PWM、CAN、SPI等功能模块进行抽象定义,使得应用程序实现不同底层平台的移植。
软件集成:软件集成就是将应用层软件与底层软件集成为一个可刷写到硬件中的软件,软件集成的变量映射关系详见下图:
底层会根据硬线或者CAN线输入,生成一系列的接口变量(函数),应用层直接调用底层上传的接口变量(函数)。硬件抽象层(HAL)将完成对底层信号到全局变量的映射。为实现硬件更改及平台移植,底层软件平台采用宏和脚本来完成全局变量和API(应用程序接口,例如函数)的自动生成。
VCU整车控制策略:
按功能模块划分有如下功能模块:输入信号处理、输出信号处理、转矩控制、上下电控制、档位模式、系统能力估算、故障诊断处理、附件管理等。
从上图可以看出,整车控制器分为三个层次:最上层为应用层,也称为控制策略层;中间一层为底层,也成为基础平台软件层,它的作用类似电脑中的操作系统,最下面一层为硬件层,就是电脑中的电路板。
作者:819号宇航员
来源:汽车电子与软件
微信公众号:
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。