嵌入式开发比单片机要难很多吗?

想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。单片机和嵌入式,其实每个编程者心中都有自己的定义。我们要去学它首先要明确概念。

嵌入式开发比单片机要难很多吗?_第1张图片

什么是单片机,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理才能的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,开展到此时的300M的高速单片机。

最典型的51系列单片机,它的外观只是一块一个拇指大小的长方体芯片,共40个引脚,里面包含了逻辑运算单元。实际上也算是一个cpu。

第一眼看到单片机的时候都会产生一个疑问,为什么单片机只有黑色没有其他颜色,后来才知道是单片机材料的原因。对单片机而言,其实一个芯片就是全部,像最小系统都是为了单片机的正常运作而加入晶振,5v电源,电感电阻等元件。当然最小系统只能保证单片机正常运行让初学者知道单片机的工作原理,是实现不了任何功能的。

要想单片机实现某些功能,必需要加入功能外设。假如按键,led灯,led屏,蜂鸣器。市面上多数很单片机学习板都带有这些外设。

总结,单片机就是完成运算、逻辑控制、通信等功能的单一模块。这就是单片机为什么姓“单”的原因。DSP芯片也能够认为是一个单片机。尽管它们性能很强大,但是功能依然很单一,就是处理数据、逻辑。

那么什么是嵌入式呢,一般广义的嵌入式都是指嵌入式系统,嵌入式系统是将应用程序、操作系统、和计算机硬件在一起的系统,是指以应用为中心,以计算机技术为根底,软硬件可裁剪,其针对的用户应用对功能、可靠性、老本、体积、功耗和使用环境有特殊要求的专用计算机系统。

嵌入式系统是一种专用的计算机系统,作为装置或设备的一局部。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。这是由于嵌入式系统一般用于工业控制,也就是说对外设的控制都是写死的,并不须要人工干预,同时也为了保证系统的稳定和可靠。

嵌入式也分成为硬件和软件两部分。

硬件层:

硬件层中包含嵌入式微处理器、存储器(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市场不同的是,没有一种嵌入式微处理器能够主导市场,仅以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等鄙訇准来规范开发者。

嵌入式领域最常用的还是一些实时操作系统,实时操作系统的核心就是实时性,本质就是任务处理所华为时长的可预测性,即任务须要在规定内时限内完成。IEEE对实时系统的定义是“那些正确性不仅取决于计算的逻辑结果也取决于产生结果所花费时长的系统”。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时长内必需完成操作,这是在操作系统设计时保证的;软实时则只有依照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定变更之后就能够变成实时操作系统。

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

(1)多路性。实时信息处理系统与分时系统一样具有多路性。系统按分时原则为多个终端用户效劳;而对实时控制系统,其多路性则主要表此时经常对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。

(2)独立性。实时信息处理系统与分时系统一样具有独立性。每个终端用户在向分时系统提出效劳请求时,是彼此独立的操作,互不干扰;而在实时控制系统中信息的采集和对对象的控制,也彼此互不干扰。

(3)及时性。实时信息系统对实时性的要求与分时系统类似,都是以人所能承受的等待时长来确定;而实时控制系统的及时性,则是以控制对象所要求的初始截止时长或完成截止时长来确定的,一般为秒级、百毫秒级直至毫秒级,甚至有的要低于100微秒。

(4)交互性。实时信息处理系统具有交互性,但这里人与系统的交互,仅限于访问系统中某些特定的专用效劳程序。它不像分时系统那样能向终端用户提供数据处理效劳、资源共享等效劳。

(5)可靠性。分时系统要求系统可靠,相比之下,实时系统则要求系统高度可靠。由于任何差错都可能带来宏大的经济损失甚至没法预料的灾难性后果。因此,在实时系统中,采取了多级容错措施来保证系统的安全及数据的安全。

由于愈加可靠和及时。嵌入式实时操作系统愈加广泛应用于工业控制、航空航天、军工等领域,假如美国航天局NASA近几年发射的火星探测器等都是采用的RTEMS实时操作系统。

中间层:

所谓的中间层就是软件层和硬件层之间的接口层,其实严格而言也属于软件层。一般开发者称之为BSP,这一层主要负责的是向下提供硬件的驱动,硬件的配置等操作,向上则向软件开发者提供规范API,进行中间层开发的开发者通常称为嵌入式驱动工程师。

从这里也能够看出来,嵌入式设计和软硬都分不开,既要掌握底层硬件的特性以及如何驱动其工作,也要了解操作系统的相关知识,才能够编写相应功能的应用。

因此看一个操作系统是否支持某个芯片或者某个开发板,只有看其源码中是否包含相应芯片或开发板的板级支持包。

在开发方式上单片机和嵌入式也有较大差别,也就是编译过程的区别,单片机主要在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下的终端也就是命令行中完成,这也给嵌入式开发增加了难度。

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!单从涉及的内容来看嵌入式的知识涉及量会比较广,所以嵌入式的开发会比单片机更加难。

你可能感兴趣的:(单片机,单片机)