单片机和嵌入式的开发者是怎样的一种体验?

也就是说嵌入式系统是软硬件结合体,国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统应该跑在什么样的硬件上

事实上,微控制器和嵌入式之间并没有标准的定义来区分。 对于进行过单片机和嵌入式开发的开发者来说,都有自己的定义。 接下来我们就来谈谈对这两个概念的深入理解。

什么是微控制器

首先明确一个概念,什么是单片机? 微控制器是一种集成电路芯片,采用超大规模集成电路技术,将具有数据处理能力的中央处理单元(CPU)、随机存取存储器RAM、只读存储器ROM、各种I/O端口和中断系统、定时器组合在一起。 /计数器等功能(还可能包括显示驱动电路、脉宽调制电路、模拟多路复用器、A/D转换器等电路)集成到一块硅芯片上,形成一个小而完整的微型计算机系统,广泛应用于计算机领域工业控制。

从20世纪80年代开始,从当时的4位、8位单片机发展到现在的300M高速单片机。 例如,最经典的51系列单片机,看起来像一个拇指大小的长方体芯片,共有40个引脚,其中包含逻辑运算单元。 事实上,它是一个CPU。

当我第一次接触单片机时,我曾经有一个疑问,为什么单片机是黑色而不是其他颜色。 后来发现是因为单片机材料的限制。

对于微控制器来说,一颗芯片实际上就是一切。 其他的元件,比如单片机的最小系统,是为了单片机的正常工作而添加的,比如晶振、5v电源、电感和电阻等。当然,最小系统只能保证单片机的正常工作。单片机,几乎无法实现任何基于单片机的应用。

为了让微控制器实现应用程序,必须添加其他外设。 例如按钮、LED灯、LED屏、蜂鸣器以及各种传感器。 这是市面上很多公司都在做的单片机开发板。

综上所述,单片机是完成计算、逻辑控制、通信等功能的单个模块。 也就是说,该单片机真正命名为“Single”。 DSP芯片也可以被视为微控制器。 当然,它们的性能非常强大,但是功能仍然很简单。 简而言之,它们只是处理数据和逻辑。

嵌入了什么

那么什么是嵌入呢? 一般来说,嵌入式是指嵌入式系统。 IEEE(InsTItute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义是:“用于控制、监视或协助操作机器和设备”。

嵌入式系统是一种专用计算机系统,是装置或设备的一部分。 通常,嵌入式系统是一个嵌入式处理器控制板,其控制程序存储在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等。

但与全球个人电脑市场不同的是,没有嵌入式微处理器能够主导市场。 仅就32位产品而言,嵌入式微处理器就有100多种类型。 嵌入式微处理器的选择取决于具体的应用。

在嵌入式领域,可以说ARM架构处理器占据了市场的半壁江山,ARM也成为了知名的科技公司。 不过,它不生产任何处理器,而只提供IP。 可见,一流企业制定标准。 其他常用的架构还有sparc、powerpc等。

比如ARM有多种处理器架构,最经典的cortex系列,就属于ARMv7架构,这是ARM截至2010年最新的指令集架构。ARMv7架构定义了三个分工明确的系列: “A”系列适用于尖端的基于虚拟内存的操作系统和用户应用程序; “R”系列适用于实时系统; “M”系列用于微控制器。

嵌入式系统需要一定形式的通用设备接口来与外界交互,如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还包括不同的发行版,例如Ubuntu、Redhat、Debian、centos等,它们都使用Linux内核。 不同的是上面的软件和工具。 当然,你不必太担心标准问题。 这些 Linux 发行版所选择的软件几乎都是比较常见的,比如用于 Web 服务器的 Apache、用于电子邮件服务器的 postfix 和 sendmail、用于文件服务器的 Samba 等。此外,还有 Linuxstandard base 等标准来规范开发人员。 类Unix的主要有FreeBSD和Solaris。

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

实时操作系统分为硬实时和软实时。 硬实时要求操作必须在指定时间内完成,这一点在操作系统设计时就得到了保证; 软实时只需根据任务的优先级尽快完成操作即可。 就是这样。 我们平时使用的操作系统经过一定的改变就可以成为实时操作系统。

实时操作系统与Linux等分时操作系统的区别如下:

(1)复用。 实时信息处理系统与分时系统一样是多路复用的。 系统基于分时原则为多个最终用户提供服务; 对于实时控制系统来说,其多通道性质主要体现在频繁采集多通道现场信息以及对多个对象或多执行器进行控制。

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

(3)时效性。 实时信息系统的实时性要求与分时系统类似,由可接受的等待时间决定; 而实时控制系统的时效性是根据控制对象要求的启动时限或完成时限来确定的,一般为秒级,数百毫秒,甚至毫秒级,有的甚至低于100微秒。

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

(5)可靠性。 分时系统要求系统可靠性,相反,实时系统要求系统高可靠性。 因为任何一个错误都可能带来巨大的经济损失,甚至带来难以预料的灾难性后果。 因此,在实时系统中,采取多级容错措施来保证系统和数据的安全。

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

嵌入式中间层

所谓中间层,就是软件层和硬件层之间的接口层。 其实严格来说,它也属于软件层。 一般开发者称之为BSP。 该层主要负责向下提供硬件驱动、硬件配置等操作,向上向软件开发者提供标准API。 开发中间层的开发人员通常被称为嵌入式驱动工程师。

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

因此,要查看某个操作系统是否支持某个芯片或某个开发板,只需检查其源代码中是否包含对应芯片或开发板的板级支持包即可。

嵌入式系统应该运行在什么样的硬件上?

当谈到嵌入式硬件或者开发板时,我想很多人的第一印象就是Raspberry Pi,它是一个信用卡大小的微型计算机。 虽然外表看起来“娇小”,但内部却非常强大,视频、音频等功能齐全。 真可谓“麻雀虽小,五脏俱全”。 树莓派推出后,很多厂商都争相推出类似的产品,比如Banana Pi等。

还有TI的Beagleboneblack板,其尺寸与Raspberry Pi类似。 其外设包括USBhost、USBmini和网卡接口。 背面还有一个SD卡插槽和HDMI接口。 BBB的处理器采用当前嵌入式系统中最流行的ARMv7指令集。 使用当今广泛使用的指令集的处理器可以得到更多软件的支持。 例如,某些操作系统不再支持在 ARMv6 指令集上运行。 例如,Ubuntu 于 2012 年 4 月放弃了对 ARMv6 指令集的支持。

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

总结

以上是一款基本嵌入式核心板的性能参数。 与上述单片机的性能参数相比,单片机的处理能力较低,主频大多在几十MHz左右,而嵌入式频率很容易达到几百MHz。 1000M的处理速度还是相差很大的。 另外,单片机不具备图形界面的处理能力。 也就是说,缺少GPU使得单片机几乎无法驱动图形界面。

单片机的存储空间与嵌入式处理器不是一个级别的。 单片机的片上存储器通常只有几千字节大小。 由于外设的限制,大规模增加外设emmc不太可能,而嵌入式处理器通常有几千字节的存储空间。 数百兆的RAM,如此巨大的差异使得微控制器几乎不可能像嵌入式处理器那样运行操作系统。 甚至无法运行TCP/IP协议栈和USB协议栈。 一些高端微控制器如ST的STM32系列,可能可以运行一些轻量级的系统操作系统和嵌入式网络协议栈,如IwIP协议栈。

嵌入式处理器丰富而强大的性能决定了它可以完成更多单片机无法完成的应用,例如网络通信功能、视频传输和处理功能等。当外围存储增加时,嵌入式处理器可以轻松运行各种Linux系统,图形GUI界面。

单片机和嵌入式系统在开发方式上也有很大的区别,即编译过程的区别。 微控制器主要是在Windows等图形界面下开发。 目前有很多成熟的IDE工具如keil、IAR、ti的CCS等。 这些工具集编译、汇编、链接和仿真于一体,并且由于是在Windows下开发的,因此具有友好的用户界面。 开发者只需编写C代码,然后点击编译链接按钮即可。 如果出现错误,他们也可以调试或者模拟,而且还是很容易上手的。 非常快。

嵌入式开发一般是在Linux下进行的。 需要在自己的主机上编译C代码,然后通过系统镜像或者uboot引导将编译好的文件烧录到开发板中。 由于主机处理器是x86架构,编写的代码是为了在arm架构或sparc架构处理器上运行,所以存在交叉编译链安装。 另外,Linux下没有像Windows那样的IDE,即编译和链接源码需要开发者自己完成。 这通常是通过使用 GNUmake 脚本编写 Makefile 和配置文件来完成的。 Makefile文件写的是如何编译c或h文件,即编译规则和依赖文件是什么。 这些都需要开发者自己完成。 而上述过程全部在Linux下的终端,即命令行中完成,这也使得嵌入式开发变得更加困难。

单片机

51单片机的40个管脚具体的作用,你知道吗?

2024-1-23 15:58:52

单片机

51单片机的兼容机型有哪些?有什么作用??

2024-1-23 16:58:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索