当前位置: 首页 > 科技观察

预热物联网,回顾嵌入式系统基础知识

时间:2023-03-22 12:38:45 科技观察

在物联网技术如火如荼的今天,嵌入式开发重新获得了IT从业者的关注。那么,什么是嵌入式系统?嵌入式系统由哪些部分组成?嵌入式系统有哪些特点?嵌入式系统的开发流程是怎样的?本文将带领您回顾这些基础知识。1.嵌入式系统简介嵌入式系统是指以应用为中心,以计算机为基础,具有可裁剪的硬件和软件以满足应用系统对功能、可靠性、成本、体积和功耗的严格要求的计算机系统。嵌入式系统一般应用于消费电子、智能家电、网络设备、医疗设备、航空航天设备、工业控制等行业。2.嵌入式系统组成嵌入式系统一般由嵌入式计算机系统和执行装置组成。嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行规定的操作或任务。接下来,让我们来看看嵌入式计算机系统的各个部分。1、硬件层硬件层包括嵌入式微处理器、存储器(RAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。嵌入式核心控制模块是在嵌入式处理器的基础上增加电源电路、时钟电路和存储电路构成的。操作系统和应用程序都可以固化在ROM中。嵌入式系统硬件层的核心是嵌入式微处理器,它与通用CPU的不同之处在于它大多工作在专门为特定用户群设计的系统中,它集成了通用CPU的许多任务由董事会完成。在芯片内部,设计时有利于嵌入式系统的小型化,同时还具有高效率和可靠性。嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选择精简指令集计算机(RISC)和复杂指令集计算机(CISC)。嵌入式微处理器有各种各样的系统,即使在同一个系统中,它们也可能有不同的时钟频率和数据总线宽度,或者集成不同的外设和接口。嵌入式系统需要内存来存储和执行代码。嵌入式系统的存储器包括Cache、主存储器和辅助存储器。缓存是一种容量小、速度快的内存阵列。它位于主存储器和嵌入式微处理器内核之间。存放一段时间内微处理器使用最多的程序代码和数据;当需要进行数据读取操作时,微处理器尽量从Cache中读取数据,而不是从主存中读取数据,这大大提高了系统的性能,提高了微处理器与主存之间的数据传输速率;Cache的主要部分目标是:减少内存(如主存和辅存)对微处理器核心造成的内存访问瓶颈,使处理速度更快,实时性更强;在嵌入式系统中,Cache都集成在嵌入式微处理器中,可分为数据缓存、指令缓存或混合缓存。缓存的大小取决于不同的处理器。一般中高端的嵌入式微处理器都会集成缓存。主存储器是嵌入式微处理器可以直接访问的寄存器,用于存储系统和用户的程序和数据;可位于微处理器内部或外部,容量为256KB~1GB,视具体应用而定,一般On-chipmemory容量小、速度快,而off-chipmemory容量大。辅助存储器用于存储程序代码或数据量大的信息。容量大,但读取速度比主存慢很多,用于长期存储用户信息;嵌入式系统常用的外部存储器有:硬盘、NANDFlash、CF卡、MMC和SD卡等。嵌入式系统与外界交互需要一定形式的通用设备接口,外设实现输入/通过与芯片外部的其他设备或传感器连接实现微处理器的输出功能。每个外设通常只有一个功能,可以在片上也可以在片外。外围设备有很多种,从简单的串行通信设备到非常复杂的无线设备。嵌入式系统中常用的通用设备接口有A/D(模拟/数字转换接口)、D/A(数字/模拟转换接口),I/O接口有RS-232接口(串行通信接口)、以太网(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。2.中间层中间层介于硬件层和软件层之间的也称为硬件抽象层(HardwareAbstractLayer,HAL)或板级支持包(BoardSupportPackage,BSP),它将系统的上层软件与底层硬件公开分开,系统底层驱动与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,可以根据接口进行开发BSP层提供的rface。该层一般包括相关底层硬件的初始化、数据输入/输出操作和硬件设备的配置功能。BSP有以下两个特点:***,硬件依赖。由于嵌入式实时系统的硬件环境具有应用依赖性,作为上层软件与硬件平台的接口,BSP需要为操作系统提供操作和控制特定硬件的方法。第二,操作系统依赖性。不同的操作系统有自己的软件层次结构,因此,不同的操作系统有特定的硬件接口形式。实际上,BSP是介于操作系统和底层硬件之间的软件层,包括了系统中大部分与硬件密切相关的软件模块,其主要功能之一就是与硬件相关的设备驱动程序。设计一个完整的BSP需要完成两部分:嵌入式系统的硬件初始化和BSP功能,以及硬件相关设备驱动的设计。3.系统软件和应用软件系统软件层由实时多任务操作系统(Real-timeOperationSystem,RTOS)、文件系统、图形用户界面(GraphicUserInterface,GUI)、网络系统和通用组件模块组成.RTOS是嵌入式应用软件的基础和开发平台。嵌入式操作系统(EmbeddedOperationSystem,EOS)是一种用途广泛的系统软件。过去主要应用于工业控制和国防系统领域。EOS负责嵌入式系统所有软硬件资源的分配、任务调度、并发活动的控制和协调。它必须体现其所在系统的特点,能够通过加载和卸载某些模块来实现系统所需要的功能。随着互联网技术的发展,信息家电的普及和应用,以及EOS的小型化和专业化,EOS开始从单一的弱功能向高度专业化的强功能发展。嵌入式操作系统在系统实时性、硬件依赖性、软件固化性、应用专用性等方面具有突出的特点。EOS是相对于通用操作系统而言的。除了一般操作系统最基本的功能外,它还具有以下功能:如任务调度、同步机制、中断处理、文件处理等。嵌入式文件系统比较简单,主要提供文件等功能存储、检索和更新,一般不提供保护和加密等安全机制。它以系统调用和命令的形式提供对文件的各种操作,主要包括:1)设置和修改对文件和目录的访问权限;2)提供目录的创建、修改、变更、删除等服务;3)提供创建、打开、读写、关闭和撤销文件等服务。文件系统的特点:1)兼容性;2)实时文件系统;3)可裁剪和可配置;4)支持多种存储设备。嵌入式GUI具有以下基本要求:重量轻、占用资源少、高性能、高可靠性、易移植、可配置等特点。嵌入式系统中的图形界面一般通过以下方法实现:1)针对特定的图形设备输出接口开发相关的功能函数;2)购买特定嵌入式系统的图形中间软件包;3)采用开源代码的嵌入式GUI系统;4)使用独立软件开发商提供的嵌入式GUI产品。应用软件层由基于实时系统开发的应用程序组成,用于实现对被控对象的控制功能。功能层面向被控对象和用户。为了方便用户操作,往往需要提供友好的人机界面。对于一些复杂的系统,需要在系统设计的初始阶段分析系统的需求,确定系统的功能,然后将系统的功能映射到硬件、软件和执行设备的设计过程中整个系统,称为系统。功能实现。3、嵌入式系统的特点嵌入式系统的特点包括:系统内核小、专用性强、系统精简、实时性强。具体来说,它主要有以下八个特点:1)可裁剪性。一种支持开放性和可扩展性的架构。2)实时性强。EOS一般实时性强,可用于各种设备控制。3)统一接口。为设备提供统一的驱动接口。4)操作方便简单,提供友好的图形化GUI和图形界面,追求易学易用;提供强大的网络功能,支持TCP/IP协议等协议,提供TCP/UDP/IP/PPP协议支持和统一的MAC接入层接口,为各种移动计算设备预留。5)稳定性强,相互作用弱。嵌入式系统一旦开始运行,不需要过多的用户干预,这就要求负责系统管理的EOS具有很强的稳定性。嵌入式操作系统的用户界面一般不提供操作命令,它通过系统调用命令为用户程序提供服务。6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件都固化在嵌入式系统计算机的ROM中。7)更好的硬件适应性。即便携性好。8)嵌入式系统与具体应用有机结合,其升级与具体产品同步进行。因此,嵌入式系统产品一旦进入市场,就具有很长的生命周期。4、嵌入式系统开发流程嵌入式系统开发分为无操作系统开发(裸机开发)和有操作系统开发两种。裸机开发是指对于功能简单、只有应用程序的嵌入式系统,一般不使用操作系统,只使用应用程序和设备驱动程序。用操作系统开发就是通过操作系统(OS)来管理和控制内存、多任务、外设资源等。通常,基于Linux系统的嵌入式开发步骤有以下七个步骤:1)开发目标硬件系统:如选择微处理器、Flash等外设等2)建立交叉开发环境:安装交叉编译工具链,并安装开发调试工具。3)开发Bootloader:移植uboot。4)移植Linux内核:如Linux3.0.25内核。5)开发根文件系统:如CRAMFS、YAFFS等。6)开发相关硬件驱动:如led、adc等驱动。7)开发上层应用:如QTGUI开发。5.嵌入式系统初始化嵌入式系统初始化过程主要分为3个环节,从下到上,从硬件到软件依次为:芯片级初始化、板级初始化和系统级初始化。芯片级初始化完成对嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器的核心工作模式、嵌入式微处理器的本地总线模式。芯片级初始化将嵌入式微处理器从上电时的默认状态逐渐设置为系统所需的工作状态。这是一个纯硬件初始化过程。板级初始化完成除嵌入式微处理器之外的其他硬件设备的初始化。此外,还需要设置一些软件数据结构和参数,为后续的系统级初始化和应用程序执行建立硬件和软件环境。这是一个包括硬件和软件的初始化过程。系统级初始化主要是基于软件的初始化,主要是针对操作系统的初始化。BSP(中间层)将嵌入式微处理器的控制权交给嵌入式操作系统,由操作系统完成剩下的初始化操作,包括加载和初始化独立于硬件的设备驱动程序,建立系统内存区,加载和初始化其他系统软件***,操作系统创建应用程序环境,将控制权交给应用程序的入口。【本文为专栏作家周兆雄原创文章,作者微信公众号:周氏逻辑(logiczhou)】点此阅读更多本作者好文