从网上转载一份文档,先了解一下基本术语。
Arduino、ARM、Raspberry Pi 和微控制器之间有什么区别?
今天我就给大家介绍一些专业术语。
许多初学者对 Arnduino、ARM、Raspberry Pi 和微控制器之间的区别感到困惑。
事实上,将这四者进行比较,本身就是一件错误的事情。
这四个就像是大众汽车、12缸发动机、保时捷和轿车之间的区别。
我从一开始就走错了方向,以为如果我想学习嵌入式系统,我就必须学习以上所有的东西。
好不容易熬过来几个月,还是感觉一事无成,什么项目都做不完,经常感觉好像懂了点什么,又好像什么都不懂。
这是因为定位不准确,分散了所有的精力,最终无人能出力。
这四个都属于嵌入式技术的范畴,嵌入式技术涉及到的技术知识体系非常庞大。
理论上来说,一个人不可能吃完所有食物,除非你从大学开始就把所有的时间都花在约会、玩游戏、看视频上。
对于大多数普通人来说,专注于嵌入式系统的某个细分领域就足够了。
下面就这四点进行分析:
1.Arduino
微控制器有很多不同的品牌和型号,Arduino 就是其中之一。
一般来说以AVR单片机为首的集成电路板就叫做Arduino(当然也有使用STM32或者其他单片机开发的非官方版本,这里就不细说了)。
从专业术语来讲,Arduino是一个开源硬件开发和学习平台,其中包括多款Arduino电路板以及专用的编程开发工具(Arduino IDE)。
Arduino SKD有许多现成的库函数用于控制硬件层。
开发人员可以通过调用库函数很方便地使用AVR芯片的功能,然后使用不同的程序实现不同的硬件控制,比如控制灯光、继电器、电机、蜂鸣器等。
不需要像单片机开发那样查看芯片数据手册来配置寄存器、使用芯片功能。
虽然使用Arduino开发电子产品效率极高,但是在实际产品中却很少使用。
因为实际产品在成本、尺寸、性能、功耗等方面都有特定的要求。
Arduino一般是给你用来学习和提高C语言的,通过这个平台,你可以快速的了解C语言是如何控制硬件的。
还有一些创客需要快速实现一些独特的想法。
所以如果你是往Linux软件方向走的话,从Arduino入手比较合适,如果是想往硬件方向搞单片机开发的话,我建议直接从51单片机入手。
2.ARM
之前我们将 Arduino 比作大众汽车,将 Raspberry Pi 比作保时捷,将 ARM 比作 V12 发动机。
Arm本身是英国一家公司的缩写(Advanced RISC Machines),arm也是一种芯片核心技术。
我们的单片机一般都有内核,比如51内核,以前是intel公司设计的,主要针对控制和计算比较简单的电子产品。
另外还有ARM内核,主要针对计算和控制比较复杂的电子产品。
Arduino 的 AVR 微控制器介于两者之间,比 51 内核强大,但比 ARM 内核弱。
单纯的内核无法直接应用到产品中,需要进行二次开发,所以ARM一般会把这个内核技术卖给半导体公司进行二次设计。
一般来说,ARM有三个级别的授权:
①.架构层授权
这个级别意味着可以对ARM核心架构进行非常多的修改,包括汇编指令集的扩充和缩减,比如苹果在ARMV7-A架构基础上扩展出了Swift架构。
除苹果外,海思麒麟、联发科、三星、高通等的CPU大多都是ARM架构。
②. 内核层授权
在这个层面上,你可以在这个核心的基础上添加你需要的外设,比如GPIO,USART,ADC,DMA等等,最终制作出你自己的微控制器。
STM32就是干这个的,类似的芯片还有很多,大部分SOC单片机都属于这一层。
③.使用层授权
这个级别的权限最低,只能使用,不能修改。
ARM核心也分为很多版本,ARM7,ARM9,ARM11,ARM11以后就被命名为Cortex。
Cortex架构也从低性能到高性能分为三个系列:M、R、A。
Cortex-M是定位在中低端市场,也就是我们的单片机,也叫微控制器,我们最常用的STM32F103就是Cortex-M3内核的。
Cortex-R定位于高端实时系统,例如医疗、工业、汽车、基带等领域。
Cortex-A定位于通用市场,典型的应用在平板电脑、手机、数字电视、机顶盒、服务器、打印机等领域。
3.树莓派
Raspberry Pi有点像Arduino,但是它不是芯片,而是集成电路板。
树莓派的性能比Arduino强大很多,树莓派采用ARM核心处理器,连接鼠标键盘就可以当做一台迷你电脑使用。
不过电脑一般都是采用Windows系统,而树莓派则多是Linux。
很多想学习Linux,从事纯嵌入式软件开发的人都是基于Raspberry Pi平台进行学习的。
4.单片机
这是我最熟悉的,毕竟我已经做了10年了。
单片机就是一种芯片,有很多品牌和型号,例如GD、ST、TI、STC、Nuvoton、NXP等等。
单片机需要进行电路和程序的二次开发才能实现完整电子产品的功能。
这个方向有几种职位:MCU工程师、STM32工程师、嵌入式工程师。
要学习的知识体系也比较多,总体来说基本就是三部分:基础电路,C语言,单片机(51,STM32)。
更详细的学习路径和步骤可以通过Wuji MCU编程了解。
Arduino相当于用AVR单片机帮你做出了底层硬件和基本的单片机寄存器配置程序,你直接用它来实现就可以了。
从难度上来说,单片机开发难度较大,Arduino较简单。
从产品角度来看,微控制器的应用也比 Arduino 更为广泛。
单纯学习Arduino基本没什么职业前景,Arduino有C语言的基础,还需要继续学习Raspberry Pi,主要在Linux应用开发方面。
———————————————————————————————————————————
什么是单片机、51单片机、stm32、ARM、开发板?
什么是单片机、51单片机、stm32、ARM、开发板?
很多初学者在书本或者看视频中或多或少接触过这些知识,但是很多人并没有立刻想到这些概念的区别。大家都急于快速提升自己的技能,却忘记了这些最基础的东西。现在有时间了,我就来为大家梳理一下它们之间的关系。这些知识在求职的时候可能会遇到。
手臂
ARM是微处理器行业的知名公司,总部位于英国的ARM公司是全球领先的半导体知识产权提供商,全球大部分智能手机都采用了ARM架构,ARM设计了大量性价比高、能耗低的精简指令集计算(RISC)处理器,有时我们用ARM来表示处理器,处理器也代表CPU,所以ARM处理器就是CPU的意思。ARM公司不生产也不销售芯片,它生产的是CPU,是一种32位的精简指令集处理器架构,ARM处理器包括以下系列的处理器产品以及其他厂商基于ARM架构实现的处理器,如ARM7系列、ARM9系列、ARM9E系列、ARM10E系列等,这些处理器广泛应用于实时嵌入式应用,存储设备、汽车、工业和网络设备都是常见的应用。
STM32
上面提到的ARM处理器内核目前主要有ARM7、ARM9、ARM9E、ARM10E、SecurCore以及最新的ARM11系列。STM32采用的是ARM公司提供的Cortex-M3内核,当时arm7的能效比较低,arm9的硬件和编程比较复杂,为了满足消费级市场的需求,ARM选择对arm7进行改进,改进后被称为cortex-m。这样st或者nxp等厂商利用这个新的内核添加自己的外设就得到了stm32或者lpc系列的微控制器。可以很明显的看到stm32是基于ARM Cortex-M3内核的,但是它不属于ARM,因为ARM只提供处理器,所以st(意法半导体)和nxp(恩智浦半导体)等厂商利用这个内核作为核心添加外设就得到了stm32或者lpc系列的微控制器。 只能说stm32是基于ARM Cortex-M3内核的,但是不属于ARM,ARM Cortex-M3内核具有高性能,低成本,低功耗等特点,是ARM7架构中的一员。
51单片机
51单片机和STM32单片机有什么区别?我们先来了解一下什么是MCU,MCU是单片机的缩写,简单来说就是集成了CPU(计算、控制)、RAM(数据存储器-内存)、ROM(程序存储器)、输入输出设备(串口、并口等)、中断系统的设备。
51单片机是兼容Intel 8031指令系统的所有单片机的统称,该系列单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机有了很大的发展,成为目前应用最为广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列。STM32单片机是ST(意法半导体)公司以ARM的cortex-M为核心生产的32位系列单片机,其内部资源(寄存器和外设功能)比8051、AVR、PIC多很多,基本上已经非常接近电脑的CPU了,适用于手机、路由器等。
开发板和单片机的区别
像我们平时说的51、STM32这样的单片机就是一块单片机,单片机芯片加上一些我们要用的电源电路、晶振电路、复位电路以及一些外设就是一块开发板,目的就是为了方便初学者学习和使用,上面常用的外设有LED灯、数码管、独立按键、矩阵按键、液晶屏、红外接收头等等,简单来说开发板就是一块板子,单片机只是板上最重要的一个芯片而已。
—————————————————————————————————————————————