快捷搜索:  as

嵌入式开发比单片机要难的原因是什么

单片机和嵌入式,着实没有什么标准的定义来区分他们,对付进行过单片机和嵌入式开拓的开拓者来说,都有他们自己的定义,接下来,就谈谈本人对这两个观点的理解和感悟。

首先明确观点,什么是单片机,单片机是一种集成电路芯片,是采纳超大年夜规模集成电路技巧把具稀有据处置惩罚能力的中央处置惩罚器CPU、随机存储器RAM、只读存储ROM、多种I/O口和中断系统、准时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型谋略机系统,在工业节制领域广泛利用。从上世纪80年代,由当时的4位、8位单片机,成长到现在的300M的高速单片机。

比如最经典的51系列单片机,如下图所示,外不雅只是一块一个拇指大年夜小的长方体芯片,共40个引脚,里面包孕了逻辑运算单元。实际上也便是一个cpu。

在最开始打仗单片机的时刻,还曾经有过一个疑问,为什么单片机是玄色的而弗成所以其余颜色,后来才知道是单片机材料的限定。

对单片机而言,着实一个芯片便是整个,其他的比如单片机最小系统都是为了单片机的正常运作而加入其他元件,比如晶振,5v电源,电感电阻等。当然最小系统只能包管单片机正常运行,险些实现不了基于单片机的任何利用。

为了使单片机实现利用,必须要加入其他外设。比如按键,led灯,led屏,蜂鸣器,各类sensor。这也便是市道市面上很多公司都在做的单片机开拓板。

总结,单片机便是完成运算、逻辑节制、通信等功能的单一模块。也便是单片机真的姓“单”。DSP芯片也可以觉得是一个单片机。当然它们机能很强大年夜,然则功能依然很单一,总之便是处置惩罚数据、逻辑。

那么什么是嵌入式呢,一样平常说嵌入式都是指嵌入式系统,嵌入式系统是将利用法度榜样、操作系统、和谋略机硬件在一路的系统,是指以利用为中间,以谋略机技巧为根基,软硬件可裁剪,其针对的用户利用对功能、靠得住性、资源、体积、功耗和应用情况有特殊要求的专用谋略机系统。IEEE(Instituteof Electrical and ElectronicsEngineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于节制、监视或者帮助操作机械和设备的装配”。

嵌入式系统是一种专用的谋略机系统,作为装配或设备的一部分。平日,嵌入式系统是一个节制法度榜样存储在ROM中的嵌入式处置惩罚器节制板。事实上,所有带稀有字接口的设备,如腕表、微波炉、录像机、汽车等,都应用嵌入式系统,有些嵌入式系统还包孕操作系统,但大年夜多半嵌入式系统都是由单个法度榜样实现全部节制逻辑。这是由于嵌入式系统一样平常用于工业节制,也便是说对外设的节制都是写逝世的,并不必要人工干预,同时也为了包管系统的稳定和靠得住。

我们常常可以听到公司招聘的要求是嵌入式软件工程师或者嵌入式硬件工程师,也便是说嵌入式系统包括软件和硬件,着实仔细想想也能明白,都已经跑系统了,当然有软件也有bsp硬件啦。也便是说嵌入式系统是软硬件结合体,海内普遍认同的嵌入式系统定义为:以利用为中间,以谋略机技巧为根基,软硬件可裁剪,适应利用系统对功能、靠得住性、资源、体积、功耗等严格要求的专用谋略机系统。

接下来将嵌入式分成硬件和软件具体阐明。

硬件层:

硬件层中包孕嵌入衰落处置惩罚器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处置惩罚器根基上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心节制模块。此中操作系统和利用法度榜样都可以固化在ROM中。

此中核心便是微处置惩罚器,嵌入式处置惩罚器和一样平常的电脑cpu还有差别,嵌入衰落处置惩罚器大年夜多事情在特定设计的系统中,比如TI或者Atmel公司都有很多定位不合的处置惩罚器,Atmel的SAM系列是专门为物联网设计的,AVR则因为机能十分凸起,广泛利用于工业领域。

嵌入衰落处置惩罚器有各类不合的体系,纵然在同一体系中也可能具有不合的时钟频率和数据总线宽度,或集成了不合的外设和接口。据不完全统计,全天下嵌入衰落处置惩罚器已经跨越1000多种,体系布局有30多个系列,此中主流的体系有ARMMIPS、PowerPC、X86和SH等。但与举世PC市场不合的是,没有一种嵌入衰落处置惩罚器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入衰落处置惩罚器。嵌入衰落处置惩罚器的选择是根据详细的利用而抉择的。

比如arm公司有各类各样的处置惩罚器架构,最经典的cortex系列,它属于ARMv7架构,这是到2010年为止ARM公司最新的指令集架构。ARMv7架构定义了三大年夜分工明确的系列:“A”系列面向尖真个基于虚拟内存的操作系统和用户利用;“R”系列针对实时系统;“M”系列对微节制器。下图便是cortex系列的不合定位。

在嵌入式领域,可以说arm架构的处置惩罚器盘踞了荆棘铜驼,而arm公司也成为闻名的科技公司,而它却没有临盆任何处置惩罚器,而只是供给了IP,可以看出一流公司做标准。而其他用的对照多的架构便是sparc、powerpc等。

嵌入式系统和外界交互必要必然形式的通用设备接口,如A/D、D/A、I/O等,外设经由过程和片外其他设备的或传感器的连接来实现微处置惩罚器的输入/输出功能。每个外设平日都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到异常繁杂的802.11无线设备。

嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。这一点着实和单片机类似。

软件层:

也便是操作系统了,包括内核和文件系统,还有便是更为顶层的利用法度榜样,嵌入式操作系统一样平常都是Linux或者其他类Unix,还有一些实时操作系统(RTOS)比如VxWorks、RTEMS、ucOS等。

此中Linux还包括不合的distribuTIon,比如Ubuntu、Redhat、Debian、centos等,他们都是采纳Linux的内核,不合的是上面的software和tools,当然不用太过于担心标准问题,这些Linux发行版选择的软件险些都是对照通用的,比如网页办事器的Apache、电子邮件办事器的postfix、sendmail、文件办事器的Samba等。此外还有Linuxstandard base等标准来规范开拓者。

类Unix主如果FreeBSD以及Solaris等。

嵌入式领域最常用的照样一些实时操作系统,实时操作系统的核心便是实时性,本色便是义务处置惩罚所华为光阴的可猜测性,即义务必要在规定内时限内完成。IEEE对实时系统的定义是“那些精确性不仅取决于谋略的逻辑结果也取决于孕育发生结果所花费光阴的系统”。实时操作系统有硬实时和软实时之分,硬实时要求在规定的光阴内必须完成操作,这是在操作系统设计时包管的;软实时则只要按照义务的优先级,尽可能快地完成操作即可。我们平日应用的操作系统在颠末必然改变之后就可以变成实时操作系统。

那么实时操作系统和Linux这种分时操作系统的差别枚举如下:

(1)多路性。 实时信息处置惩罚系统与分时系统一样具有多路性。系统按分时原则为多个终端用户办事;而对实时节制系统,其多路性则主要表现在常常对多路的现场信息进行采集以及对多个工具或多个履行机构进行节制。

(2)自力性。实时信息处置惩罚系统与分时系统一样具有自力性。每个终端用户在向分时系统提出办事哀求时,是彼此自力的操作,互不滋扰;而在实时节制系统中信息的采集和对工具的节制,也彼此互不滋扰。

(3)及时性。实时信息系统对实时性的要求与分时系统类似,都因此人所能吸收的等待光阴来确定;而实时节制系统的及时性,则因此节制工具所要求的开始截止光阴或完成截止光阴来确定的,一样平常为秒级、百毫秒级直至毫秒级,以致有的要低于100微秒。

(4)交互性。实时信息处置惩罚系统具有交互性,但这里人与系统的交互,仅限于造访系统中某些特定的专用办事法度榜样。它不像分时系统那样能向终端用户供给数据处置惩罚办事、资本共享等办事。

(5)靠得住性。分时系统要求系统靠得住,比拟之下,实时系统则要求系统高度靠得住。由于任何缺点都可能带来伟大年夜的经济丧掉以致无法预感的劫难性后果。是以,在实时系统中,采取了多级容错步伐来包管系统的安然及数据的安然。

因为加倍靠得住和及时。嵌入式实时操作系统加倍广泛利用于工业节制、航空航天、军工等领域,比如美国航天局NASA近几年发射的火星探测器等都是采纳的RTEMS实时操作系统。

中心层:

所谓的中心层便是软件层和硬件层之间的接口层,着实严格而言也属于软件层。一样平常开拓者称之为BSP,这一层主要认真的是向下供给硬件的驱动,硬件的设置设置设备摆设摆设等操作,向上则向软件开拓者供给标准API,进行中心层开拓的开拓者平日称为嵌入式驱动工程师。

从这里也可以看出来,嵌入式设计和软硬都分不开,既要掌握底层硬件的特点以及若何驱动其事情,也要懂得操作系统的相关常识,才可以编写响应功能的利用。

是以看一个操作系统是否支持某个芯片或者某个开拓板,只要看其源码中是否包孕响应芯片或开拓板的板级支持包。

以上便是本人对嵌入式系统系统的理解,接下来再来谈谈嵌入式系统应该跑在什么样的硬件上。

谈起嵌入式硬件或者开拓板,我想很多人第一印象便是RaspberryPi,是一块只有信用卡大年夜小的微型电脑,别看其外表“娇小”,内“心”却很强大年夜,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。树莓派推出后,很多厂商争相推出类似产品,比如喷鼻蕉派之类的。

可以看出体积大年夜小和树莓派类似,外设包括有USBhost和USBmini以及网卡接口,,后头还有一个sd卡槽和HDMI接口。接下来看看它的机能参数:

Beagleboneblack的处置惩罚器是一块主频达到1GHZ的TI处置惩罚器,基于arm的cortexa8架构,RAM是512M的DDR3,存储器大年夜小为2GB,支持的操作系统包括Ubuntu、archLinux、Android等。外设有USBhost和一块百兆网卡。

BBB的处置惩罚器采纳的是当前嵌入式系统中最盛行的ARMv7指令集。采纳当今广泛应用的指令集的处置惩罚器可以被更多的软件支持。例如,一些操作系统已经不支持在ARMv6指令集上运行,例如,Ubuntu在2012年4月放弃了对ARMv6指令集的支持。

ARMv7相对与ARMv6指令集的另一个上风在于,应用ARMv7的处置惩罚器的实际机能加倍强劲。ARMv7相对与ARMv6的上风还有很多,比如一些显明的改进:实现了超标量架构、包孕了SIMD操作指令、改进了分支猜测算法从而极大年夜的前进了某些机能。

着末总结:

以上便是一块基础的嵌入式核心板所具有的机能参数,和上面说到的单片机的机能参数相对照,单片机的处置惩罚能力较低,主频大年夜多在几十M高低,和嵌入式动辄上百上千M的处置惩罚速率照样相差较多,此外单片机并不具有图形界面的处置惩罚能力,也便是GPU的短缺导致单片机险些弗成能带动图形界面;单片机的存储空间和嵌入式处置惩罚器也不是一个等级的,单片机平日片内存储只有几k大年夜小,而因为外设的限定也不太可能大年夜范围增添外设emmc,而嵌入式处置惩罚器平日有几百兆的RAM,如斯伟大年夜的区别导致单片机险些弗成能像嵌入式处置惩罚器那样运行操作系统,以致连TCP/IP协议栈和USB协议栈都跑不起来,一些高真个单片机比如ST公司的STM32系列,可能可以跑一些轻量级的系统os和嵌入式收集协议栈,比如IwIP协议栈。嵌入式处置惩罚器富厚强大年夜的机能抉择它能完成更多单片机不能完成的利用,比如收集通信功能,视频传输处置惩罚功能等,而当外设存储增添后,嵌入式处置惩罚器能够轻松运行各类Linux系统,以及图形GUI界面。

在开拓要领上单片机和嵌入式也有较大年夜区别,也便是编译历程的差别,单片机主要在Windows等图形界面下开拓,今朝有很多成熟的IDE对象比如keil、IAR、以及TI的CCS等,这些对象集编译、汇编、链接、仿真为一体,并且因为在Windows下开拓,具有友好的用户界面,开拓者只需编写c代码,然后点击编译链接按键即可,呈现差错还可以debug或者仿真,上手照样异常快的。而嵌入式开拓一样平常是在Linux下进行的,要将c代码在自己主机上编译完成,然后经由过程系统镜像或者uboot向导将编译好的文件烧入开拓板,因为主机的处置惩罚器的x86架构,而编写的代码是为了运行在arm架构或sparc架构的处置惩罚器上,是以存在一个交叉编译链的安装,此外,Linux下没有Windows那样的IDE,也便是编译,链接源代码都必要开拓者自己完成,一样平常都是使用GNUmake脚本编写Makefile以及configure文件来完成,Makefile文件中编写若何对c或者h文件编译,也便是编译规则以及依附文件是什么。这些都必要开拓者自己完成。并且以上历程都是在Linux下的终端也便是敕令行中完成,这也给嵌入式开拓增添了难度。

责任编辑:Ct

您可能还会对下面的文章感兴趣: