嵌入式入门基础知识

文章目录

  • 前言
  • 嵌入式基本知识
    • ARM的理解
      • ARM是一家公司
      • 一类芯片或产品的统称
      • 一项技术的名称,即采用RISC处理器体系架构
      • ARM和intel的区分
      • ARM和STM32的关系
  • 处理器的基本概念
    • MCU
    • MPU
    • DSP
    • FPGA
    • 总结
  • ARM开发
    • MCU开发和MPU开发的区别
    • 开源硬件 Arduino 和 Raspberry Pi
    • 总结
  • 总结


前言

今天是参加百问网组织的物联网智能家居项目第一天,很幸运能够抓住这次机会来更好的学习嵌入式,也非常感谢百问网的老师们辛勤教导。


嵌入式基本知识

ARM的理解

ARM是一家公司

ARM首先是一个公司,是一家全球半导体行业技术领先的公司,主要业务是设计RISC嵌入式处理器;
RISC:精简指令集,指的是一种指令类型比较少的计算机指令,因为其执行速度快而 被广泛应用,缺点就是指令类型少,实现的功能相对单一。
CISC:复杂指令集,指的是一种指令类型比较丰富的计算机指令,因为其指令丰富,运算效率高而被广泛使用,缺点就是指令执行速度相对较慢(它是通过微程序触发实现)。

ARM公司的发展历程
嵌入式入门基础知识_第1张图片

一类芯片或产品的统称

因为很多的公司,再拿到ARM公司的授权以后生产了很多的芯片或产品,像我们使用的STM32F103这一系列就是Cortex-M3系列,就是使用的ARM的M系列的核等等
嵌入式入门基础知识_第2张图片

一项技术的名称,即采用RISC处理器体系架构

现在几乎大家都把RISC处理器架构称为ARM架构了,所以ARM也指一种体系架构,即RISC处理器体系架构。

ARM和intel的区分

其实就是RISC和CISC的区分,两家公司代表计算机指令集的两个极端。区别也在于两种指令集的区别。
ARM因其精简指令集,指令执行速度快,所以广泛应用于嵌入式领域,实现一些功能相对单一的产品。
intel因其CISC指令类型丰富,执行效率高,所以广泛应用于PC,高级智能机等领域。

针对应用场景的不同,所有使用的指令集架构自然也就不同。

ARM和STM32的关系

ARM和STM32的关系就是,STM32的体系结构就是ARM架构。
STM32是由ST公司研发的产品,而这个产品的产生是ST公司在购买到了ARM公司的授权以后,经过ST公司自己的添加外设,设置结构等方式而生产的产品。但是这个产品的核心,内核的结构是由ARM公司设计的。里面的IP核的设计就是ARM公司授权给ST公司,ST公司根据这个IP核的设计结构进行添加,设计进而生产,就有了我们日常使用的一系列STM32产品。

处理器的基本概念

MCU

微 控 制 器 (Micro-Controller Unit , MCU) , 俗 称 单 片 机 。 之 所 以 称 之 为 单 片 机 (Single ChipMicrocomputer), 是因为不同于其它处理器,它将CPU、 RAM(随机存储器)、 ROM(只读存储器)、 I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。 这个芯片就是一个完整的微型计算机,只需要供电或加上极少的外围电路即可工作。
常见的MCU有80C51系列单片机、 Atmel公司的AVR系列单片机、 Microchip公司的PIC系列单片机、 TI公司的MSP430系列单片机、 ST公司的STM32系列单片机、 NXP公司的LPC1700系列单片机。早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。此外,主频不断提高、 ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大

MPU

微处理器(Micro-Processor Unit, MPU)。类似通用计算机的CPU,主要负责处理计算,需要外加RAM、Flash、电源等电路。
MCU和MPU的本质区别是因为应用场景的定位不同。 MPU注重通过相对强大的运算/处理能力,执行复杂多样的大型程序,因此常需要外挂运行内存(RAM)、存储器(Flash)等。 MCU注重功能较为单一、价格敏感的应用场景,不需要相对强大的运算/处理能力,更多的是对设备管理/控制,因此不需要大容量的RAM、 Flash来运行大型程序,于是将RAM、 Flash全集成在一起,大家也就俗称“单片机”

嵌入式入门基础知识_第3张图片如今,随着技术的发展,市场及需求的变化, MPU和MCU的界限日趋模糊。高端的32位MCU主频越来越高,已经反超低端MPU主频, MCU也有外挂RAM和Flash的场景,依靠硬件结构去区分逐渐困难。读者可以简单的认为,嵌入式微处理器MPU,通常运行Linux、 Android等非实时操作系统,应用在高端应用市场,比如智能手机、 路由器等消费电子市场领域,而嵌入式微控制器MCU,常用运行裸机或实时性操作系统,应用在中、低端应用市场,比如家电控制领域、工业控制领域等。

总的来说MCU:主要应用于微控制领域,运行逻辑程序或实时性操作系统的场合。
而MPU:主要就是针对跑Linux,Android操作系统等程序复杂,需要操作系统进行资源管理的应用。

DSP

DSP通常有两个含义。

  • 数字信号处理(Digital Signal Processing, DSP),是一门学科技术,使用数值计算的方式对信号进行加工处理的理论和技术。
  • 数字信号处理器(Digital Signal Processor, DSP),是一种专门用于数字信号处理领域的微处理器。
    嵌入式入门基础知识_第4张图片DSP芯片为了达到快速处理数字信号处理的目的,采用了许多特殊软硬件结构。首先是采用哈佛结构,(哈佛结构就是将程序指令和存储数据存在不同的存储器上)将程序和数据分开,同时为处理器提供指令和数据。然后采用多级流水线技术,在指令周期内可以执行更多指令。加上专用的硬件乘法器、特殊的DSP指令, 使得DSP芯片在计算处理上,远超同主频的MCU或MPU。
    DSP芯片拥有强大的数据处理能力,在数字信号处理领域,如调制/解调、数据加密/解密、图形处理、数字滤波、音频处理等计算密集型的场景广泛应用。

FPGA

现场可编程门阵列( Field- Programmable Gate Array, FPGA), 由可编程互连连接的可配置逻辑块(CLB) 矩阵构成的半导体器件。 通俗地说, FPGA就是一个可以通过编程改变内部硬件结构,实现所需功能的芯片。 前面的MCU、 DSP等都是硬件资源固定,只能通过修改软件实现所需功能。而FPGA是通过硬件描述语言或其它方式修改硬件,将FPGA变为CPU或专用芯片,来实现控制或算法。因此, MCU、 DSP能够实现的功能, FPGA理论上都可以实现,反之则不一定。
如图为Xilinx公司的FPGA芯片XC3S400A。
嵌入式入门基础知识_第5张图片
FPGA主要有两大优势: 高速和灵活。 FPGA使用硬件处理数据,采用并发和流水技术,多个模块之间可以同时并行执行。 FPGA可以根据现场情况配置器件功能,能够在技术和需求变化时重新配置,实现系统优化升级。**在某些通信领域,需要处理高速的通信协议,同时通信协议随时都可能修改,不适合做成专门的芯片,FPGA的高速、灵活就便成了首选。**虽然FPGA功能强大,但实际工程项目中,还需考虑硬件成本、开发难度和市场需求等因素。 一些简单的控制场合, 尽管FPGA和MCU都能胜任,但MCU价格低廉和研发简单,更划算。

总结

如今复杂的嵌入式系统往往是复合架构, 比如“ MPU+FPGA”、“ MPU+DSP”、“ MCU+FPGA”、“ MCU+DSP”,甚至“ MCU +MPU+FPGA+DSP”。 控制、显示、通信一般选择MCU或MPU, 通信和数据处理算法选择DSP,大量的数据处理和特定实现选择FPGA。
MCU开发需要C语言基础,然后学习各类资源、接口,再到RTOS; MPU通常运行Linux,需要Linux基础、操作系统、网络编程等知识; DSP开发需要具备数据信号处理算法的理论知识; FPGA开发需要了解高速接口或音/视处理算法等。
一般来说, MCU相对比较简单,适合作为入门学习,待MCU学习完后,再结合实际情况选择深入学习方向。

ARM开发

MCU开发和MPU开发的区别

MCU开发就是指的单片机开发,着重是对寄存器操作,传感器工作原理,通信协议,外设接口资源等的熟悉和掌握。
MPU开发就是带有操作系统的开发。包括系统的移植,驱动的编写,网络编程,页面设计(Qt)等。
嵌入式入门基础知识_第6张图片

开源硬件 Arduino 和 Raspberry Pi

在开源硬件领域, Arduino和Raspberry Pi(树莓派)都是电子创意设计常用的开发平台和工具。它们使用简单的开发方式,使初学者能快速搭建其创意原型,有效降低了学习难度,缩短了开发周期。
嵌入式入门基础知识_第7张图片
Arduino是一款基于微控制器( MCU)的开发板,它可以运行一些相对比较简单的应用程序,成本低廉,适合用于与传感器、外围电路进行控制和通信。

Raspberry Pi是一款基于微处理器( MPU)的开发板,可以看作是一台小型计算机,板载RAM、 HDMI接口、 USB接口、音频接口、网络接口等。通常运行发行版Linux操作系统,可以运行功能更丰富的应用程序,适合用于一些需要较多运算和功能的项目,比如游戏虚拟机、网页服务器、机器人、家庭智能控制系统
等。

总结

MCU和MPU的开发主要是侧重点不同,而这个侧重点就是指的运行于不同的场景和需求。(需求是否复杂,是否需要操作系统进行资源的管理和调度)。

开源硬件面向的群体主要还是电子爱好者,帮助他们无需深入了解相关知识的情况下,快速验证自己的创意想法。对于嵌入式开发人员, Arduino过于简单, Raspberry Pi底层不开源,都不适合深入研究,开发人员应选一款采用常见主控芯片设计的开发板进行学习、研究。

总结

对于想深入了解的同学,推荐到百问网官网找老师进行咨询。相信你一定能学到你想学的东西!

你可能感兴趣的:(智能家居项目,arm开发,嵌入式)