2. 微控制器
微控制器是中文名称,对应的英文名称是“Single Chip Microcomputer”。 很多人可能会疑惑,我们平时不都叫MCU(Micro Control Unit)吗? 其实MCU准确的翻译应该叫微控制器。 现在很多中文书籍都用这个术语来代替微控制器。 因为微控制器这个词是很多年前的一个概念。 当时半导体技术还处于起步阶段,集成能力很差。 通常有一颗 CPU 芯片、一颗 SRAM 芯片和一颗 Flash 芯片。 如果需要中断,则必须有专用的处理程序。 它是中档芯片,所以一个完整的、可用的计算机系统是由PCB板上的许多芯片(Chip)组成的。
那么微控制器呢? 它将CPU、SRAM、Flash等所需模块集成在一个芯片(Chip)上,实现了一个芯片上的微型计算机系统,所以称为单片机(Single Chip Microcomputer),即单片机。 其实从这个角度来说,单片机这个词现在已经没有任何意义了,因为现在的半导体技术早已非常先进了。 现在买的都是“单片机”,不存在单独的所谓“多片机”了。 而且,现代微控制器不仅集成了CPU、SRAM、Flash等微型计算机不可缺少的部件,而且大多还集成了许多内部外设,如Nand控制器、LCD控制器、串行通信、定时器、RTC等,所以现在微控制器实际上应该称为SoC(System on Chip)。
3. 嵌入式
嵌入式的全称是嵌入式系统,英文是Embeded system,由此可见嵌入式是一个系统。 为什么叫嵌入式呢? 这里的嵌入是指我们把这个系统(在硬件中表现为芯片)嵌入到某个设备中。 例如,冰箱板上的芯片是嵌入在冰箱中的系统,负责控制用户按钮、冰箱照明、制冷系统等。可见,嵌入式系统的名称主要是从组织形式来命名的。使用时的芯片。 所以从这个角度来说,任何嵌入设备中的芯片都可以称为嵌入式系统。
那么这个范围就太广了。 说实话,很难找到一个非嵌入式的系统……所以我常常认为嵌入式这个词是无稽之谈,根本没有任何意义。 幸运的是,这种理解只是嵌入式的广义定义,但当我们谈论嵌入式时,大多数时候我们都是狭义地理解它。
狭义上的嵌入式是为了区别于微控制器。 我们常称芯片中没有MMU(内存管理单元)因而不支持虚拟地址,只能运行裸机或RTOS(典型如ucos、Huawei LiteOS、RT-Thread、freertos等)的系统。 )作为微控制器(典型如STM32、NXP LPC系列、新NXP imxRT1052系列等),以及芯片自带MMU的系统,可以支持虚拟地址,可以运行Linux、Vxworks、WinCE等操作系统Android被称为嵌入式。 因此,linux、WinCE等通常被称为嵌入式操作系统,仅此而已。 如果仔细回顾一下,其实大多数人谈论微控制器和嵌入式系统都是从狭隘的角度,而不是广阔的角度。
4、微控制器的技术和市场状况
微控制器是出货量最大的计算机类型。 这很容易理解,因为微控制器的应用非常广泛。 几乎所有家用电器内置的控制系统都是微控制器。 这个数字是惊人的。 还有各种公共设施、工厂自动化设备等,几乎都是由单片机控制的。 微控制器有许多制造商和类别。 下面我就列举几个常用的。
8 位和 4 位机器。 这类单片机性能低、配置低,但优点是价格便宜。 因此,很多低端家电产品都被使用,而小家电是此类微控制器的最大市场。 为了降低成本,这些微控制器很多只能用汇编来编程(当然,近年来很多也提供了C编译器),而且很多芯片都是采用bounding封装的(即芯片核心直接贴在芯片上)。 PCB然后用黑色硬胶粘住),如果你玩过LCD1602,看后面那个圆盘状的黑色)。 以前生产此类产品的都是台湾的一些小型芯片厂商。 近年来,中国大陆涌现出不少这样的芯片厂商。 这些微控制器行业大多针对特定应用领域,熟悉行业需求,直接推出适合该行业的解决方案。 外行人可能没有听说过这款单片机的型号及相关信息。 总体来说,这是一个比较低端的行业,不建议大家学习和进入。 特别是现在我国正在进行产业升级,落后的传统家电仍在降价销售。 相反,各种高端功能、外观的“产业升级”家电利润丰厚。 因此,这种适合传统老旧电子产品的芯片和技术其实并不值得投资。
51微控制器。 事实上,51单片机也是一台8位计算机。 之所以单独提及,是因为51单片机太出名了。 事实上,当时(大约 20 世纪 80 年代)当一百种思想流派与微控制器竞争时,51 微控制器只是其中之一。 还有很多非常强大的,可惜都被时间给消散了。 51单片机之所以名声大噪并且至今仍然存活,是因为Intel后来开放了51核心的版权,所以很多公司、很多人都可以使用它,而不用担心付费或版权风险。 其实截至目前(2018年),51单片机已经是一个很老的方案了,没有任何技术优势,但为什么仍然大量使用呢? 主要原因有几个:一是现有项目和开发商数量较多。 这些人对51单片机都非常熟悉。 甚至很多老工程师可能也只知道51单片机。 很多老项目无法重新开发,所以继续使用51 MCU。 。 其次,51单片机足够便宜。 很多性能要求不高的产品可以干脆用51。第三是51内核开放,所以很多需要内置微控制器内核的SoC(比如很多电容式触摸屏芯片、很多指纹识别芯片等) .)会选择使用51核心。 价格不贵,而且够用了。 你还会选择谁? 很多同学问我还想学51单片机吗? 我想我们还是需要学习的。 原因之一是开发51单片机时用到的技术技巧在开发其他单片机时仍然有用,所以以后学完51再学习其他单片机会快很多,不会浪费时间。 还有一个原因是,实际开发中有时会用到51单片机,所以学习它是一门可以用得上的技能。 所以如果你想学习单片机开发,从51单片机开始是不会出错的。 但切记不要迷恋51,快速学习51单片机后,快速继续学习其他更现代实用的单片机(如stm32)。 很多人学了51就不再动了,这就像幼儿园毕业后不继续学习一样。 这是错误的。
STM32 微控制器。 终于到了热门的STM32了。 ST于2007年发布了第一款STM32,距今已有11年了。 STM32是一款具有ARM Cortex-M内核的微控制器。 其实还有很多微控制器也采用ARM Cortex-M系列内核(如NXP的LPC系列、原飞思卡尔K60系列、台湾新唐的M051系列、国内的如GigaDevice GD32系列等),STM32只是其中之一杰作。 ARM近年来非常受欢迎,在应用级SoC方面击败了Intel。 现在手机行业所有的芯片都被ARM吃掉了,MIPS之类的更是被压死了。 在微控制器领域,ARM的Cortex-M系列(M0、M3、M4、M7)也取得了巨大的成功。 许多半导体制造商放弃了原有的架构,转而采用ARM内核的微控制器。 怎么说呢,我个人认为ARM内核的微控制器非常适合当前时代,尤其是STM32。 无论是硬件配置还是开发工具都得到了市场的认可,并且越来越受欢迎。 强烈建议大学学习单片机的时候学习STM32。 能够玩转STM32是非常有价值的。 至于GD32等类似STM32的国产单片机,我认为未来会越来越强,甚至有可能占领市场,将国外品牌赶出中国。 这些芯片的开发方式也和STM32非常相似,所以很容易切换到STM32开发,不用担心。
其他微控制器。 我指的是PIC、ATmega、MSP430、STM8等,这些不是很熟悉所以我不会详细讨论它们。 总体来说,这些微控制器性价比较高,在各自领域具有一定的竞争力,但应用领域仍然不如STM32那么广泛。 因此,除非是用于公司研发,否则不建议主动学习。
高性能、高价格的微控制器。 这里我特指STM32F7、STM32H7、NXP imxRT1052等微控制器。 这类单片机虽然是单片机,但其性能比普通单片机要强很多,外围设备也复杂很多。 甚至需要外部SDRAM来提供更大的内存,以及外部SLC Nand或Spiflash来提供存储。 同时,从价格上来看,这些单片机大多在30元以上,甚至高达100多元。 这些确实是微控制器中的战斗机,而且价格也很恐怖。 我个人不太看好这类单片机。 其实我写这篇长文只是为了解释为什么我不看好这类单片机。 有兴趣的同学可以继续看下面的分析。
5、嵌入式技术及市场状况
嵌入式领域最流行的是ARM+linux和ARM+android。
芯片均基于ARM,低端包括ARM9、ARM11,高端包括Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A53、Cortex-A57等。从单核到双核、四核和八核。 生产厂家也很多,有国产的,有进口的,也有台湾的。 覆盖范围也很广,包括消费级、工业级、汽车级。
嵌入式级ARM由于其MMU而可以很好地运行复杂的操作系统。 因此,虽然芯片本身也可以运行在裸机上,但基本上没有人使用这一类芯片来运行裸机或RTOS。 都有操作系统。 简单来说,如果产品不需要华丽漂亮的人机界面,就使用Linux(如路由器、网络摄像机)。 如果一个产品需要人机界面,但界面简单,注重功能和稳定性,那么使用Linux+QT(如工控HMI,电动…汽车充电桩,停车场显示屏),如果产品付费非常注重人机交互的用户体验,那就用Android(比如智能手机、智能电视、游戏机等)。
一般来说,嵌入式系统非常复杂,开发难度大,学习曲线长。 由于软件的复杂性,出现错误的可能性很高。 一旦出现错误,发现它需要更多的技能和经验。 因此,很多公司在使用嵌入式Linux或者Android来制作产品时存在很多问题。 这一方面与开发者的技术能力有关,另一方面与公司无法花费时间和成本让产品稳定成熟有关。
6.嵌入式和微控制器之间的真正区别
其实分析到这里,大家也知道了嵌入式和单片机的真正区别,那就是是否有Linux或者Android等复杂的操作系统。
MCU 要么是裸奔的,要么是 RTOS。 其实玩过RTOS和Linux的同学都知道,RTOS虽然也被称为操作系统,但是和Linux不是一个级别的。 已经远远落后了,更不用说Android了。 Android中任何模块的代码量都比完整的RTOS更大、更复杂。 所以是否有像linux/android这样复杂的OS对于开发来说确实是不同的。
比如,从C语言的角度出发,我的《嵌入式Linux核心课程》第4部分《4.C语言深入剖析》就是专门针对嵌入式Linux开发中缺乏C语言技能的人推出的。 很多从事单片机工作多年的同学读后感叹,除非在Linux上工作,否则真的不知道C语言的深度。 结构体和指针等元素在微控制器编程中毫无魅力,但它们在Linux内核中得到了完美的利用和释放。 不真正研究它,真的很难领略它的美丽和震撼。
7.嵌入式和微控制器的交叉点
嵌入式和微控制器之间有交叉点吗? 这里的交集意味着:有些产品可以通过嵌入式或微控制器来解决。
它以前不存在。 想想看,一般的单片机要几元、十几元,而嵌入式系统SoC加上DDR和Flash至少要几十元。 怎么可能有重叠呢? 即使你可以用嵌入式系统做微控制器可以做的事情,当我可以完成只需要十几美元的工作时,为什么我要花几十美元在嵌入式系统上呢? 所以过去两者之间并没有交集。 根本就不是同一个范围之内的东西。
但近两年情况发生了变化。 首先,很多高端单片机的配置和价格越来越高。 例如,2017年10月发布的NXP imxRT1052系列微控制器被称为跨界处理器。 为什么叫跨境呢? 跨越了哪两个领域?
我们知道,单片机需要一块芯片来提供整个系统。 简单来说,至少CPU、SRAM、闪存三大部件缺一不可,否则根本无法独立运行。 所以你看,无论是51单片机还是STM32,它们内部都有CPU、SRAM和Flash。 这是一个典型的微控制器。 嵌入式SoC则不同。 例如S5PV210内部只有一个CPU和少量的SRAM。 为了正常工作,需要外部集成DDR SDRAM和闪存(EMMC)。 因此,嵌入式系统不能在芯片上。 一般来说,典型的嵌入式系统的系统由核心板组成。 这个核心板集成了SoC、DDR SDRAM、Flash、电源模块等,这就是嵌入式系统。 所谓跨界处理器跨越了微控制器和嵌入式两个世界。 这款imxRT1052内部集成了CPU和SRAM,但没有Flash。 需要外部独立的Flash芯片来组成系统。 所以这个东西既不是典型的微控制器,也不是典型的嵌入式,但它看起来既像微控制器,又像嵌入式,所以NXP把它称为跨界处理器。 不管它是否有效,这个名字听起来很酷。
对了,NXP为什么要这样设计呢? 事实上,这是因为微控制器中内置的Flash非常昂贵。 imxRT1052之所以比同等性能的STM32便宜很多,主要原因是它没有内置Flash。 所以很多人说ST落后于NXP,其实不然。 只能说NXP的设计是微控制器世界的创新。 相比之下,STM32F7和STM32H7的性价比显得非常差。 但说实话,STM32的F7和H7确实性价比很高。 不知道单片机会不会卖到100多元呢? 谁给ST的勇气梁静茹下了这么大的代价?
算了,我也懒得吐槽F7和H7了。 我们就来说说这款跨界处理器imxRT1052。 这东西主频600MHz,有消费级和工业级,自带各种外设(反正基本都能用),最大分辨率可以到1024*768。 TFT LCD(当然需要外接SDRAM作为显存)。 与普通的单片机相比,这玩意简直就像神一样。 大多数玩单片机的人看到这些数据都吓得跪下喊爸爸。 我们来谈谈价格。 这玩意儿官方批量售价大概是30元人民币左右,想想,感觉还是很超值的。 其实STM32并没有那么弱。 虽然F7和H7的主频没有600MHz那么变态,但H7的整体性能并不比RT1052逊色多少。 就算你不叫我爸爸,你也逃不掉。 F7和H7没有引起大轰动的关键原因是价格太吓人。 大多数人一听到价格100多,只是心里骂骂咧咧地走人,根本不想知道你的表现。 imxRT1052 30元的价格确实很有吸引力。 听起来确实是高性能低价格。 很多人甚至据此判断NXP要“干掉”ST。
八、跨境加工商的尴尬
高性能跨界处理器乍一看似乎不错,但实际上它们并不那么容易成功。 原因是这种高性能微控制器实际上与低性能且高性价比的嵌入式Linux解决方案相比没有任何优势。
是的,很多人认为主频只要30块钱的600M单片机就很便宜,功能也很强大。 那是因为您不熟悉嵌入式解决方案。 事实上,imxRT1052单芯片不能很好地工作。 要实现高性能,至少需要外接Flash和SDRAM。 即使只是1Gbit SLC Nand和32MB SDRAM,加上RT1052 BOM成本也在50元左右。 另外,虽然RT1052声称批量售价为30元,但小批量实际售价为40-50元,所以目前市场上RT1052的核心板售价在120-150元之间。 这个价格其实并不便宜。 有许多比这更具成本效益的嵌入式 Linux 解决方案。
例如NXP的imx6ul,内置Cortex-A7单核,最高频率为1.2GHz。 它也是工业级的,有你能想到的各种外设。 标配256MB SLC Nand和256MB DDR核心板。 市场最低价119元,低于RT1052。
其实还有更高性价比的方案,比如深圳创客推出的NUC972牛顿板采用的新唐NUC972方案,内置64MB DDR,外置1Gbit SLC Nand。 主板100元以内可批量购买。 性价比比RT1052等高性能单片机好很多。
很多人可能会说我不会开发嵌入式Linux,我只会开发单片机。 所以无论你的Linux解决方案性价比如何,都与我无关; 对我来说重要的是微控制器解决方案。 我想说这绝对是一个误会,100%的误会。 为什么?
单片机只有三个字。 不要以为所有叫单片机的东西都是同一个东西。 微控制器和微控制器是不同的。 你觉得主频600MHz的单片机、分辨率1024*768的TFT LCD的开发方法和难度会和成本不到10元的STM32F103一样吗? 软件开发遵循硬件。 什么样的性能硬件应该搭配什么样的软件开发方式和相应的资源,也要求开发人员具备一定的相应素质。 所以不要以为都是微控制器就可以玩了。 事实上,要充分利用高端微控制器的性能做出一个好看的GUI并在项目中使用它来解决所有的bug并不容易。
9. 结论
这篇文章比较浅,主要讲一下单片机和嵌入式系统的由来和区别。 它导致了高端微控制器(STM32H7、imxRT1052 等)和经济高效的嵌入式 Linux 解决方案之间的比较。 主要是希望给大家一个思考点,引导大家思考如何分析和评估一个芯片方案,以便大家在做项目的时候能够更好的选择适合自己的芯片方案。 总的来说,我的观点是:能用几个十元以上的单片机,就用单片机。 如果这些高性价比的单片机不能满足要求,而你不得不购买一个价值几十元的高性能单片机,那么你真的应该考虑一下是否应该一步实现一种高性价比的嵌入式Linux解决方案。 很多人担心Linux无法开发,但这不应该考虑。 如果你真正认真去做项目,你会发现使用嵌入式Linux并没有那么困难,而且高端单片机加上RTOS和一堆框架和协议栈后也不容易。 很难发现问题。 而且,经过多年的积累,嵌入式Linux解决方案的稳定性大多良好。 高端微控制器的配套RTOS和框架协议栈以及其他中间件往往处于开发的早期阶段,并且经常存在许多Bug。 因此,建议大家投入时间学习嵌入式Linux软件开发的技能。