今天我就跟大家科普一下一些专业术语。
很多初学者搞不清楚Arnduino、arm、Raspberry Pi和单片机之间的区别。
事实上,比较这4个人是错误的。
这四者就像:大众、12缸发动机、保时捷、轿车的区别。
我从一开始就走错了方向,以为要学嵌入式就必须把上面的东西都学会。
努力了几个月,我还是感觉自己一事无成,什么项目都做不成。 我常常觉得自己明白了一些事情,但同时又什么都不懂。
这是由于定位不够造成的,分散了所有的能量,最终没有人能占到便宜。
这四者都属于嵌入式技术的范畴,嵌入式涉及的技术知识体系非常庞大。
理论上来说,一个人不可能把它们全部吃完,除非你从大学起就把所有的时间都投入到约会、打游戏、看视频上。
对于大多数普通人来说,专注于某个嵌入式细分领域就足够了。
我们分别分析一下这四个:
Arduino
微控制器有许多不同的品牌和型号,Arduino 是微控制器的一种。
一般来说,以AVR单片机为首的集成电路板称为Arduino(当然也有使用STM32或其他单片机开发的非官方版本,这里就不一一解释了)。
从专业的角度来说,Arduino是一个开源的硬件开发学习平台,其中包括各类Arduino电路板和专用编程开发工具(Arduino IDE)。
Arduino SKD 有许多现成的库函数用于控制硬件层。
开发者可以通过调用库函数轻松使用AVR芯片的功能,然后使用不同的程序实现不同的硬件控制,如控制灯、继电器、电机、蜂鸣器等。
无需像单片机开发那样,通过阅读芯片数据手册来配置寄存器来使用芯片功能。
虽然用Arduino开发电子产品就像作弊一样高效,但实际产品却很少使用。
因为实际产品在成本、尺寸、性能、功耗等方面都有特定的要求。
Arduino一般用于你学习和提高C语言。 通过这个平台,您可以快速了解C语言如何控制硬件。
也有一些创客需要快速实现一些奇怪的想法。
因此,如果你打算往Linux软件方向发展,从Arduino入手是比较合适的。 如果你想从事单片机开发并且专注于硬件,我建议直接从51单片机开始。
2. 手臂
之前我们将 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,不是芯片,而是集成电路板。
Raspberry Pi 比 Arduino 强大得多。 Raspberry Pi采用ARM核心处理器,连接鼠标和键盘后可以用作迷你电脑。
不过,电脑一般都是Windows系统,而树莓派大多是Linux系统。
很多想学习Linux、从事嵌入式纯软件的人都是基于Raspberry Pi平台来做的。
4、单片机
这是我最熟悉的,毕竟我已经做了10年了。
微控制器只是一颗芯片,有很多品牌和型号,如GD、ST、TI、STC、Nuvoton、NXP等。
单片机需要对电路和程序进行二次开发才能实现完整的电子产品功能。
这个方向有几个职位:单片机工程师、STM32工程师、嵌入式工程师。
还有更多的知识体系需要学习。 一般来说,有基本电路、C语言、单片机(51、STM32)三个基本部分。
更详细的学习路径和步骤可以通过无极单片机编程来学习。
Arduino相当于使用AVR的单片机来帮助你完成底层硬件和基本的单片机寄存器配置程序。 您可以直接使用它。
从难度上来说,单片机开发更难,Arduino更容易。
从产品角度来看,微控制器的应用也比Arduino更广泛。
单纯学习Arduino是没有职业前景的。 Arduino有C语言基础,需要继续学习Raspberry Pi,主要是Linux应用程序开发。