欢迎光临散文网 会员登陆 & 注册

刚入坑的小伙伴看过来,嵌入式系统在今年的实用性展望

2022-05-12 15:44 作者:大方老师单片机课堂  | 我要投稿

刚入坑的小伙伴看过来,嵌入式系统在今年的实用性展望


///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比///


在嵌入式领域,可以arm架构的处理器占据了半壁江山,arm公司也成为著名的科技公司,而它却没有生产任何处理器,而只是提供IP,可以看出一流公司做标准。而其他用的比较多的架构就sparcpowerpc等。

arm公司有各种各样的处理器架构,最经典cortex系列,它属ARMv7架构,这是2010年为ARM公司最新的指令集架构ARMv7架构定义了三大分工明确的系列A系列面向尖端的基于虚拟内存的操作系统和用户应用R系列针对实时系统M系列对微控制器。

嵌入式系统和外界交互需要一定形式的通用设备接口,A/DD/AI/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂802.11无线设备。

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

嵌入式的软件层

也就是操作系统了,包括内核和文件系统,还有就是更为顶层的应用程序,嵌入式操作系统一般都Linux或者其他Unix,还有一些实时操作系(RTOS)VxWorksRTEMSucOS等。

Linux还包括不同distribuTIon,比UbuntuRedhatDebiancentos等,他们都是采Linux的内核,不同的是上面softwaretools,当然不用太过于担心标准问题,这Linux发行版选择的软件几乎都是比较通用的,比如网页服务器Apache、电子邮件服务器postfixsendmail、文件服务器Samba等。此外还Linuxstandard base等标准来规范开发者。Unix主要FreeBSDSolaris等。

嵌入式领域最常用的还是一些实时操作系统,实时操作系统的核心就是实时性,本质就是任务处理所华为时间的可预测性,即任务需要在规定内时限内完成IEEE对实时系统的定义那些正确性不仅取决于计算的逻辑结果也取决于产生结果所花费时间的系

实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。

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

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

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

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

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

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

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

嵌入式的中间层

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

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

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

嵌入式系统应该跑在什么样的硬件?

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

TIBeagleboneblack板子,体积大小和树莓派类似,外设包括USBhostUSBmini以及网卡接口,背面还有一sd卡槽HDMI接口BBB的处理器采用的是当前嵌入式系统中最流行ARMv7指令集。采用当今广泛使用的指令集的处理器可以被更多的软件支持。例如,一些操作系统已经不支持ARMv6指令集上运行,例如Ubuntu20124月放弃了ARMv6指令集的支持。

ARMv7相对ARMv6指令集的另一个优势在于,使ARMv7的处理器的实际性能更加强劲ARMv7相对ARMv6的优势还有很多,比如一些显著的改进:实现了超标量架构、包含SIMD操作指令、改进了分支预测算法从而极大的提高了某些性能。

总结

以上就是一块基本的嵌入式核心板所具有的性能参数,和上面说到的单片机的性能参数相比较,单片机的处理能力较低,主频大多在几M上下,和嵌入式动辄上百上M的处理速度还是相差较多,此外单片机并不具有图形界面的处理能力,也就GPU的缺乏导致单片机几乎不可能带动图形界面。

单片机的存储空间和嵌入式处理器也不是一个等级的,单片机通常片内存储只有k大小,而由于外设的限制也不太可能大范围增加外emmc,而嵌入式处理器通常有几百兆RAM,如此巨大的差别导致单片机几乎不可能像嵌入式处理器那样运行操作系统,甚至TCP/IP协议栈USB协议栈都跑不起来,一些高端的单片机比ST公司STM32系列,可能可以跑一些轻量级的系os和嵌入式网络协议栈,比IwIP协议栈。

嵌入式处理器丰富强大的性能决定它能完成更多单片机不能完成的应用,比如网络通信功能,视频传输处理功能等,而当外设存储增加后,嵌入式处理器能够轻松运行各Linux系统,以及图GUI界面。


在开发方式上单片机和嵌入式也有较大差别,也就是编译过程的区别,单片机主要Windows等图形界面下开发,目前有很多成熟IDE工具比keilIAR、以tiCCS等,这些工具集编译、汇编、链接、仿真为一体,并且由于Windows下开发,具有友好的用户界面,开发者只需编c代码,然后点击编译链接按键即可,出现错误还可debug或者仿真,上手还是非常快的。

而嵌入式开发一般是Linux下进行的,要c代码在自己主机上编译完成,然后通过系统镜像或uboot引导将编译好的文件烧入开发板,由于主机的处理器x86架构,而编写的代码是为了运行arm架构sparc架构的处理器上,因此存在一个交叉编译链的安装,此外Linux下没Windows那样IDE,也就是编译,链接源代码都需要开发者自己完成,一般都是利GNUmake脚本编Makefileconfigure文件来完成Makefile文件中编写如何ch文件编译,也就是编译规则以及依赖文件是什么。这些都需要开发者自己完成。

刚入坑的小伙伴看过来,嵌入式系统在今年的实用性展望的评论 (共 条)

分享到微博请遵守国家法律