补补嵌入式系统基础知识

(本文的大部分内容总结自网络,感谢作者的贡献!)

在物联网技术如火如荼的今天,嵌入式开发重新得到了广大IT从业人员的关注。那么,什么是嵌入式系统?嵌入式系统由哪几部分组成?嵌入式系统的特点都有哪些?嵌入式系统的开发流程是怎样的?本文将带领大家重温这些基础知识。

嵌入式系统简介
嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统一般应用于消费电子、智能家电、网络设备、医疗仪器、航天设备、工业控制等行业中。

嵌入式系统组成
一个嵌入式系统一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
下面,我们来了解一下嵌入式计算机系统的各个部分。

1.硬件层
硬件层中包含嵌入式微处理器、存储器(RAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一块嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。
嵌入式系统硬件层的核心是嵌入式微处理器,它与通用CPU最大的不同在于它大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。
嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器。
Cache是一种容量小、速度快的存储器阵列,它位于主存和嵌入式微处理器内核之间,存放的是一段时间微处理器使用最多的程序代码和数据;在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率;Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强;在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定,一般中高档的嵌入式微处理器才会把Cache集成进去。
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据;它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。
辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息;嵌入式系统中常用的外存有:硬盘、NAND Flash、CF卡、MMC和SD卡等。
嵌入式系统和外界交互需要一定形式的通用设备接口,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的无线设备。嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。

2.中间层
硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
BSP具有以下两个特点:
第一,硬件相关性。因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。
第二,操作系统相关性。不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块,它的一个主要功能是硬件相关的设备驱动。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。

3.系统软件和应用软件
系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。
嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的,它除具有了一般操作系统最基本的功能,还有以下功能:如任务调度、同步机制、中断处理、文件处理等。
嵌入式文件系统比较简单,主要提供文件存储、检索和更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供文件的各种操作,主要有:1)设置、修改对文件和目录的存取权限;2)提供建立、修改、改变和删除目录等服务;3)提供创建、打开、读写、关闭和撤销文件等服务。文件系统的特点:1)兼容性;2)实时文件系统;3)可裁剪、可配置;4)支持多种存储设备。
嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。嵌入式系统中的图形界面,一般采用下面的几种方法实现:1)针对特定的图形设备输出接口,自行开发相关的功能函数;2)购买针对特定嵌入式系统的图形中间软件包;3)采用源码开放的嵌入式GUI系统;4)使用独立软件开发商提供的嵌入式GUI产品。
应用软件层是由基于实时系统开发的应用程序组成,用来实现对被控对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面。对于一些复杂的系统,在系统设计的初期阶段就要对系统的需求进行分析,确定系统的功能,然后将系统的功能映射到整个系统的硬件、软件和执行装置的设计过程中,称为系统的功能实现。

嵌入式系统特点
嵌入式系统的特点包括:系统内核小、专用性强、系统精简、实时性等。具体而言,它主要有如下八个特点:
1)可裁剪性。支持开放性和可伸缩性的体系结构。
2)强实时性。EOS实时性一般较强,可用于各种设备控制中。
3)统一的接口。提供设备统一的驱动接口。
4)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用;提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。
7)更好的硬件适应性。也就是良好的移植性。
8)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

嵌入式系统开发流程
嵌入式系统的开发分为不带操作系统(裸机开发)和带操作系统的开发两种。裸机开发是指对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序。带操作系统的开发是由一个操作系统(OS)来管理控制内存、多任务、周边资源等。
通常基于Linux系统的嵌入式开发步骤有如下七步:
1)开发目标硬件系统:如选择微处理器、Flash及其它外设等。
2)建立交叉开发环境:安装交叉编译工具链、安装开发调试工具。
3)开发Bootloader:移植uboot。
4)移植Linux内核:如Linux 3.0.25内核。
5)开发根文件系统:如CRAMFS,YAFFS等。
6)开发相关硬件的驱动程序:如led,adc等驱动。
7)开发上层的应用程序:如QT GUI开发。

嵌入式系统初始化
嵌入式系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
片级初始化完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
系统级初始化以软件初始化为主,主要进行操作系统的初始化。BSP(中间层)将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。

时间: 2024-11-05 06:26:19

补补嵌入式系统基础知识的相关文章

《嵌入式 Linux C 语言应用程序设计(修订版)》——第 1 章 嵌入式系统基础知识 1.1 嵌入式系统概述

第 1 章 嵌入式系统基础知识 本章目标 嵌入式系统产业作为朝阳产业正在蓬勃发展,优秀的操作系统Linux也凭借其高效.开放等优势在嵌入式领域占据了一席之地. 本章首先带领读者走近嵌入式系统,从整体上把握什么是嵌入式系统以及如何开发嵌入式系统的应用程序.通过本章的学习,读者将会掌握如下内容: 1.1 嵌入式系统概述 正如尼葛洛庞帝在2001年预言的一样,如今,嵌入式系统已成为最为热门的领域之一.从市场观点来看,PC已经从高速增长时期进入平稳发展时期,其年增长率由20世纪90年代中期的35%逐年下

《嵌入式 Linux C 语言应用程序设计(修订版)》一第1章 嵌入式系统基础知识1.1 嵌入式系统概述

第 1 章 嵌入式系统基础知识 嵌入式 Linux C 语言应用程序设计(修订版)本章目标 嵌入式系统产业作为朝阳产业正在蓬勃发展,优秀的操作系统Linux也凭借其高效.开放等优势在嵌入式领域占据了一席之地. 本章首先带领读者走近嵌入式系统,从整体上把握什么是嵌入式系统以及如何开发嵌入式系统的应用程序.通过本章的学习,读者将会掌握如下内容: anniu嵌入式系统的基本概念 anniu嵌入式系统的特点以及与PC的区别 anniu嵌入式系统的现状与发展前景 anniu嵌入式系统的硬件架构 anniu

嵌入式开发基础知识:Linux支持的多种文件系统类型

Linux支持多种文件系统类型,在嵌入式开发中上常用有:ROMFS.JFFS2.NFS.CRAMFS.YAFFS.UBIFS等. JFFS文件系统 JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统.JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中. Jffs2: 日志闪存文件系统版本2 (J

跟老男孩学Linux运维:Shell编程实战1.2 学好Shell编程所需的基础知识

1.2 学好Shell编程所需的基础知识 本节首先来探讨一下在学习Shell编程之前需要掌握的基础知识,需要说明的是,并不是必须具备这些基础知识才可以学习Shell编程,而是,如果具备了这些基础知识,那么就可以把Shell编程学得更好,领悟得更深.如果只是想简单地了解Shell脚本语言,那么就无须掌握太多的系统基础知识,只需要会一些简单的命令行操作即可. 学好Shell编程并通过Shell脚本轻松地实现自动化管理企业生产系统的必备基础如下: 1)能够熟练使用vim编辑器,熟悉SSH终端及".vi

C# 系统应用之Cookie\Session基础知识及php读取Cookie\Session

本文主要是毕业设计"个人电脑使用记录清除软件"系列系统应用文章中关于Cookie方面的知识,主要从介绍Cookie的基础知识和PHP关于Cookie\Session两个会话管理机制的讲述.结合自己的PHP课程及Cookie方面的文章.提醒:由于作者写时有点晚,思路有些乱,文章论述和排版都不太满意,太杂乱无章,请海涵! 一. cookie基础知识 <一>.什么是Cookie?Cookie/Cookies置某些网站为了辩护用户身份而存储在本地终端(Client Side)上的数

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,

《嵌入式Linux基础教程(第2版)》——2.2 剖析嵌入式系统

2.2 剖析嵌入式系统 图2-1是一个典型嵌入式系统的框图.这个例子很简单,描述了一个系统的高层硬件架构,无线接入点设备可能就是采用这种硬件构架.这个系统架构以一个32位的RISC处理器为中心,系统中的闪存用于存储非易失性程序和数据,主存储器是SDRAM(同步动态随机存储器),其容量可以从几兆至几百兆字节,视应用而定.一个通常由电池供电的实时时钟模块记录着当前时间(包括日期).这个例子里面包含以太网和USB接口,也包含串行端口,利用串行端口可基于RS-232标准访问控制台.802.11芯片组或模

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

黑马程序员 一、java 概述与基础知识

获取更多资源关注Java帮帮IT资源分享网 一.黑马程序员-java 概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果 的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路.方法.和手段通 过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完 成某种特定的任务.这种人和计算机之间交流的过程就是编程.   2.Java 语言概述,历史.特点 是 SUN(Stanford Universit