嵌入式系统及软件架构
1 引言
系统是一种设计安排,在这种设计中,所有的单元都按照一套规则共同工作。
系统也可以被定义为一种工作方式,按照固定的计划组织或完成一项或多项任务。例如,手表是一个时间显示系统。它的部件遵循一套规则来显示时间。如果其中一个部件出现故障,手表就会停止工作。所以我们可以说,在一个系统中,它的所有子部件都是相互依赖的。
2 嵌入式系统
顾名思义,嵌入式就是指附着在另一个事物上的东西。嵌入式系统可以被认为是一个嵌入了软件的计算机硬件系统。嵌入式系统可以是一个独立的系统,也可以是一个大系统的一部分。嵌入式系统是以微控制器或微处理器为基础的系统,它被设计成执行特定的任务。例如,火灾报警器就是一个嵌入式系统: 它可以感应烟雾。
一个嵌入式系统有三个组成部分:
1. 它有硬件。
2. 它有应用软件。
3. 它有实时操作系统(RTOS),它监督应用软件,并提供机制通过控制延迟让处理器按照计划运行进程。RTOS定义了系统的工作方式。它设定了应用程序执行过程中的规则。一个小规模的嵌入式系统可能没有RTOS。
所以我们可以把嵌入式系统定义为基于单片机的、软件驱动的、可靠的、实时的控制系统。
2.1 嵌入式系统的显著特征
1. 单一功能:
嵌入式系统通常执行一个专门的操作,并重复做同样的操作。比如说。寻呼机总是作为寻呼机使用。
2. 严格约束
所有计算系统都有对设计指标的约束,但嵌入式系统上的约束可能特别严格。设计指标是衡量一个实现的特点,如它的成本、大小、功率和性能。它的尺寸必须适合在单个芯片上,必须有足够快的性能来实时处理数据,并且消耗最小的功率来延长电池寿命。
3. 反应式和实时性
许多嵌入式系统必须不断对系统环境的变化做出反应,必须实时计算某些结果,不能有任何延迟。考虑一个汽车巡航控制器的例子;它持续监控并对速度和制动传感器作出反应。它必须在有限的时间内反复计算加速或减速;延迟计算会导致汽车控制失败。
4. 基于微处理器
必须是基于微处理器或微控制器。
5. 存储器
它必须有一个存储器,因为它的软件通常嵌入在ROM中。它不需要计算机中的任何辅助存储器。
6. 连接
它必须有连接的外围设备来连接输入和输出设备。
7. HW-SW系统
软件用于更多的功能和灵活性。硬件用于性能和安全。
2.2 嵌入式系统的优缺点
优点:
l 易于定制
l 低功耗
l 低成本
l 增强的性能
缺点:
l 高开发成本
l 更长的上市时间
2.3 嵌入式系统的基本结构
2.3.1 传感器
它测量物理量,并将其转换为电信号,可由观察者或任何电子仪器如A2D转换器读取。传感器将测量到的量存储到存储器中。
2.3.2 A-D转换器
模数转换器将传感器发送的模拟信号转换为数字信号。
2.3.3 处理器和ASIC
处理器处理数据以测量输出并将其存储到内存中。
2.3.4 D-A转换器
一个数模转换器将处理器送来的数字数据转换为模拟数据。
2.3.5 执行器
执行器将D-A转换器给出的输出与所存储的实际(预期)输出进行比较,并存储批准的输出。
3 嵌入式软件架构
1978年美国国家电气制造商协会发布了可编程微控制器的标准,包括几乎所有基于计算机的控制器,如单板计算机、数字和基于事件的控制器。
目前常用的软件架构有几种不同的类型:
3.1 简单的控制循环
在这种设计中,软件只是有一个循环。循环调用子程序,每个子程序管理一部分硬件或软件。因此,它被称为简单控制循环或控制循环。
3.2 中断控制系统
一些嵌入式系统主要由中断控制。这意味着系统执行的任务是由不同类型的事件触发的;例如,一个中断可以由一个定时器以预定的频率产生,或者由一个串行端口控制器接收一个字节产生。
如果事件处理程序需要低延迟,而且事件处理程序短小简单,就会使用这类系统。通常,这类系统在主循环中也会运行一个简单的任务,但这个任务对意外的延迟不是很敏感。
有时,中断处理程序会将较长的任务添加到队列结构中。之后,在中断处理程序完成后,这些任务由主循环执行。这种方法使系统靠近于具有离散进程的多任务内核。
3.3 协同多任务处理
非先发制人的多任务系统与简单的控制循环方案非常相似,只是循环被隐藏在API中,程序员定义了一系列的任务,每个任务都获取自己的环境来 "运行"。当一个任务处于空闲状态时,它会调用一个空闲例程,通常称为 "暂停"、"等待"、"退让"、"nop"(代表没有操作)等。
其优缺点与控制循环类似,只是增加新的软件比较容易,只需编写一个新的任务,加入队列即可。
3.4 先发制人的多任务或多线程。
在这种类型的系统中,一段低级代码根据定时器(连接到中断)在任务或线程之间切换。这就是一般认为系统具有 "操作系统"内核的层次。根据所需功能的多少,它或多或少地引入了管理多个任务并行运行概念上的复杂性。
由于任何代码都有可能破坏另一个任务的数据(在使用MMU的大型系统中除外),程序必须经过精心设计和测试,对共享数据的访问必须由某种同步策略来控制,如消息队列、信号灯或非阻塞同步方案。
由于这些复杂性,组织通常使用实时操作系统(RTOS),允许应用程序员专注于设备功能,而不是操作系统服务,至少对于大型系统来说是如此。
由于内存大小、性能或电池寿命方面的限制,较小的系统通常无法承受与通用实时系统相关的开销。
然而,使用RTOS的选择带来了自己的问题,因为必须在开始到应用开发过程之前进行选择。这种时机迫使开发人员根据当前的需求来选择设备的嵌入式操作系统,因此在很大程度上限制了未来的选择。随着产品寿命的缩短,对未来选择的限制变得更加严重。
此外,由于设备需要管理串口、USB、TCP/IP、蓝牙、无线局域网、中继无线电、多通道、数据和语音、增强型图形、多状态、多线程、众多等待状态等变量,复杂程度不断提高。这些趋势导致了除了实时操作系统之外,嵌入式中间件的引入。
3.5 微内核和外核
微内核是实时操作系统的逻辑升级。通常的安排是操作系统内核分配内存,并将CPU切换到不同的执行线程。用户模式的进程实现文件系统、网络接口等主要功能。
一般来说,微内核在任务切换和任务间通信速度快时成功,慢时失败。
外核通过普通的子程序调用进行高效通信。系统中的硬件和所有软件都是应用程序员可以使用和扩展的。
3.6 单片内核
在这种情况下,一个相对较大的具有复杂功能的内核被改造成适合嵌入式环境。这给程序员提供了一个类似于Linux或微软Windows等桌面操作系统的环境,因此对于开发来说是非常有成效的。
缺点是,它所需要的硬件资源要多得多,通常比较昂贵,而且由于这些内核的复杂性,其可预测性和可靠性也会降低。
嵌入式单片机内核的常见例子有嵌入式Linux、VXWorks和Windows CE。
尽管硬件成本增加,但这种类型的嵌入式系统越来越受欢迎,特别是在功能更强大的嵌入式设备上,如无线路由器和GPS导航系统。以下是其中的一些原因:
l 可以使用通用嵌入式芯片组的端口。
l 它们允许重用设备驱动程序、Web服务器、防火墙和其他的公开可用代码。
l 开发系统可以从广泛的功能集开始,然后可以配置发行版以排除不需要的功能,并节省消耗内存的费用。
l 许多工程师认为,在用户模式下运行应用程序代码更可靠,也更容易调试,从而使开发过程更容易,代码更容易移植。
l 需要更快的响应速度的功能通常可以放在硬件中。
3.7 额外的软件组件
除了核心操作系统外,许多嵌入式系统还有额外的上层软件组件。
这些组件包括CAN、TCP/IP、FTP、HTTP和HTTPS等网络协议栈,还包括FAT和闪存管理系统等存储功能。
如果嵌入式设备具有音频和视频功能,那么系统中就会出现相应的驱动程序和编解码器。
在单片机内核的情况下,许多这些软件层都包含在内。
在RTOS类别中,附加软件组件的可用性取决于商业产品。
3.8 特定领域架构
在汽车领域,AUTOSAR是嵌入式软件的标准架构。
4 参考
https://en.wikipedia.org/wiki/Embedded_system
https://www.omnisci.com/technical-glossary/embedded-systems
https://www.tutorialspoint.com/embedded_systems/es_overview.htm
https://www.quora.com/What-is-an-embedded-system
https://www.itpro.co.uk/hardware/30317/what-is-an-embedded-system
- 点赞
- 收藏
- 关注作者
评论(0)