想学单片机的同学可以关注,给我发私信,或者在评论区回复。单片机和嵌入式,其实每个编程师心里都有自己的定义。要学,首先要明确概念。
什么是单片机?单片机是集成电路芯片,具有数据处理能力的中央处理器采用超大规模集成电路技术CPU、随机存储器RAM、只读存储器ROM、多种I/O开口和中断系统、定时器/计数器等功能(也可能包括显示驱动电路、脉宽调制电路、模拟多路转换器A/D转换器等电路)集成到一个小而完美的微型计算机系统,由硅片组成,广泛应用于工业控制领域。从20世纪80年代开始,从当时的从当时的单片机到300台M高速单片机。
最典型的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市场不同的是,没有一种嵌入式微处理器可以主导市场位的产品,才有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毫秒至毫秒,有些甚至低于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下一个终端是在命令行中完成的,这也增加了嵌入式开发的难度。
本期首先在这里分享。想加入小组学习单片机编程的同学可以给我发私信,回复我和我们一起成长。喜欢的可以点个赞关注我们!单从涉及的内容来看嵌入式的知识涉及量会比较广,所以嵌入式的开发会比单片机更加难。