资讯详情

嵌入式开发比单片机开发难?

嵌入式开发比单片机开发更难?

\\\插播:文末有惊喜~///

事实上,没有标准的定义来区分机器和嵌入式机器。对于单片机和嵌入式开发的开发人员,他们都有自己的定义。接下来,让我们谈谈我对这两个概念的理解和感知。

首先明确概念,什么是单片机,单片机是集成电路芯片,具有数据处理能力的中央处理器采用超大规模集成电路技术CPU、随机存储器RAM、只读存储器ROM、多种I/O开口和中断系统、定时器/计数器等功能(也可能包括显示驱动电路、脉宽调制电路、模拟多路转换器A/D转换器等电路)集成到一个小而完美的微型计算机系统,由硅片组成,广泛应用于工业控制领域。从20世纪80年代开始,从当时的从当时的单片机到300台M的高速单片机。

如果最典型的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多个系列,其中主流系统有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场位的产品,才有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,是一块独有信誉卡大小的微型电脑,别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。树莓派推出后,很多厂商争相推出类似产品,假如香蕉派之类的。在这里用TI的Beagleboneblack板子进行说明,Beagleboneblack板如下图所示:

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

下表是BBB板和树莓派的性能参数比较:

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下的终端也就是命令行中完成,这也给嵌入式开发增加了难度。

51单片机和STM32单片机区别在那里

  大局部朋友可能都知道51单片机和stm32单片机也知道一般入门会先进修51单片机在进修stm32单片时机简略一些,但是对于51单片机和stm32单片机的详细区别却不知道了,有些人觉得没必要,但是我个人认为独有在你搞懂了其中的差异之后对于其自身进修是有莫大的益处的。

  下面我们就来进入今天的主题

  单片机简介

  单片微型计算机简称单片机,简略来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输写输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上罢了。

51单片机和STM32单片机

51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的开展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,他的代表型号就是ATMEL公司的AT89系列。

STM32单片机则是ST(意法半导体)公司使用arm公司的cortex-M为核心出产的32bit系列的单片机,他的内部资源(寄存器和外设功能)较8051、AVR和PIC都要多的多,根本上接近于计算机的CPU了,适用于手机、路由器等等。

DSP、AVR和PIC单片机、8051单片机之间区别

AVR和PIC都是跟8051单片机的机构不同的8位单片机,由于构造不同,所以他的汇编指令也不同,并且他们都是使用的RISC指令集,独有几十条指令,大局部的还都是单周期的指令,所以在相同的晶振频次下,比8051速度要快。

DSP其实也是一种特殊的单片机,他从8bit到32bit的都有,他专门是用来计算数字信号的,在某些计算公式上,他甚至比此时的家用计算机的最快CPU还要快,假如说一个32bit的DSP能在一个指令周期内完成一个32bit数乘以32bit数再加上一个32bit数的计算。

8051、8031、89C51和89S51关系

  我们平常老是讲8051,又有什么8031,此时又有89C51,89s51它们之间究竟是什么关系?

MCS51是指由美国INTEL公司出产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的根底上进行功能的增、减、变更而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最时兴的单片机,所以很多场合会看到8031的名称。

INTEL公司将MCS51的核心技术授权(卖)给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些变更,以满足不同的需求,其中89C51就是这几年在我国非常时兴的单片机。至于国内用到的很多的AT系列的单片机其实就是ATMEL公司在8031内核之外添加其他功能出产了系列的单片机。

  这里要补充说明下,最先出现先的单片机其实是Intel公司的8031单片机,他是单片机的鼻祖,但是它自身是没有内部程序存储器的,之后随着flash ROM技术的开展,出现了能够存储程序的8051系列单片机

彩蛋:最近有同学跟我要单片机的资料,我特意花几个月时间,总结了我10年产品研发经验,资料包几乎覆盖了C语言、单片机、模电数电、原理图和PCB设计、单片机高级编程等等,非常适合初学者入门和进阶。除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,不是市面上打包卖的那种课程,我认为教程多未必是好事,10年前我自学快,除了自身执行力以外,还有就是教程少。不要害羞做伸手党,等你一个小红点。后期我也会组建一些纯技术交流的小圈子,让大家能认识更多的大佬,有个好的圈子,你对行业的认知一定是最前沿的。47c9cacda2a92dfac6afcc1b94aebe5e.png

标签: 国内高端电感

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台