赞
踩
嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。
————来自百度百科
我个人觉得百度百科这一段解释很贴切。计算机系统有许多的分类,同时也有许多的功能,而在实际的业务需求中,计算机系统的很多功能是不需要的,而为了避免浪费空间和资源,则需要对系统的多余部分进行阉割,只留下实际业务需要的,尽可能地实现系统的效率最大化。
在我们的生活中,嵌入式系统其实无处不在。智能家居、智能手环、车载导航、监控系统等等,都是属于嵌入式系统的应用实例。我们几乎人手一部的手机,还有平板、电脑,都是属于嵌入式设备。可以说,嵌入式设备对于便利我们的生活和满足实际工业、农业、服务业等各行业具有十分深远的意义。
嵌入式系统主要有硬件系统、软件系统和连接软硬件层的中间件。
如上图所示,嵌入式硬件系统主要由三大部分组成:处理器、存储器、外围硬件设备。
嵌入式处理器,是嵌入式系统的核心,跟电脑的CPU处理器一样,它犹如是人的大脑,负责对整体系统进行控制、协调,对各种情况进行处理。
嵌入式存储器,是数据存储单位。负责对嵌入式系统的各项数据进行存储,或控制电路与外界进行数据交换。根据断电后,数据是否丢失,可以分为易失性存储器(RAM)、非易失性存储器(ROM)。
外围硬件设备,包括了多种设备,输入输出串口、音频接口、液晶显示屏、摄像头、USB、晶振电路等等,根据实际业务需求,不同的嵌入式设备具有不同的外围硬件设备。
如上图,嵌入式软件系统分为三大部分:操作系统、应用程序、底层驱动。
嵌入式操作系统(EOS),负责对嵌入式系统的软硬件资源的调度、分配、协调和各项活动进行操作控制。EOS主要分为实时操作系统(RTOS)和分时操作系统(TSOS)。实时操作系统(RTOS)是在嵌入式开发过程中十分重要、常见的操作系统,同时也是一种广泛应用于工业控制、国防等领域。
实时操作系统(RTOS)顾名思义,即是可以控制所有的实时任务协调一直运行的操作系统,在嵌入式系统中,时常需要同时执行多项任务,而RTOS可以实行同时运行多任务,并进行任务优先级调度和资源共享,RTOS对于任务响应时间的控制相当严格,因为一旦任务调度发生错误,将会发生严重的错误。在工业控制、自动化控制和嵌入式设备中应用极广。(在招聘网上可以看到,许多公司都会要求或者优先考虑熟悉RTOS系统的)。常见的RTOS系统有Vxworks、OSE、FreeRTOS等。
分时操作系统(TSOS)则是按照时间序列,对任务进行轮流调度、分时控制。相比于RTOS,TSOS对于响应时间的控制上并没有那么严格,即使是某一个任务的响应时间超时了,或者错过了该任务的最后期限时间,也不会造成系统崩溃等灾难性的后果。常见的TSOS系统有我们的Harmony、Android、Linux、Windows等等。
在学习的过程中,我有个疑问:为什么我们的手机、电脑、平板的系统都是属于分时操作系统呢?我们明明可以在后台同时运行多个程序,执行多个任务。
翻阅了许多的资料和网上的一些文章,个人觉得下面这个解释相对比较好理解一点。
分时操作系统:
使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用(时间片的概念)。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。
————电子发烧友
这里的“用户”,实际指的是系统中所执行的任务,由不同的应用程序(用户)在后台运行相应的程序(任务),实际运行过程中,TSOS为每一个任务进程分配了相应的时间,而由于时间间隔较短的原因,才会看起来好像是每个程序任务都在同时独立运行。(个人理解,感觉还是不够深刻,有待继续加深.....)
嵌入式应用程序,其实跟我们手机、电脑中的应用程序的概念相似,只不过嵌入式应用程序在不同的嵌入式设备中不同,会根据实际业务需求安装相应的应用程序。
底层驱动,则像是我们电脑中的网卡驱动、音频驱动、蓝牙驱动等等设备的驱动程序,我们要想使用外部设备,必须有相应的程序代码执行,以驱动相应的模块可以正常工作。例如,我们想要使用电脑扩音器、麦克风,则我们必须有相应的扩音器、麦克风的驱动程序,使得我们的电脑知道应该怎么正常地给相应的模块供电并进行音频传输。
硬件层与软件层之间为中间层,也称为硬件抽象层( Hardware Abstract Layer,HAL)或板级支持包( Board support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无须关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
其实很典型的例子就是STM32的开发。
STM32CubeMX是ST公司为STM32系列单片机快速建立工程,并快速初始化使用到的外设、GPIO等专门设计的应用程序。我们可以使用这个软件,对外设、GPIO口等进行快速初始化,在可视化界面进行相应的设置即可,而至于底层的逻辑(引脚编号、寄存器原理等)无需过多的关心,快速调用HAL库中的函数即可。
以上均为个人参考网上文章及知识所理解的内容,初学者的浅显理解,总会有不足或有误之处,欢迎各位大佬指正交流!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。