电子头条

嵌入式开发,比单片机开发难多少?

2024-05-22
    阅读数:

这两天,EEWorld一则帖子火了。 工程师诚心发问, 嵌入式开发要比单片机开发难多少。 他认为,嵌入式似乎更有难度,而网友持不同观点。

原帖地址: https://www.eeworld.com.cn/afLO0mH
电子工程世界(ID:EEWorldbbs)|出品


单片机 or 嵌入式

单片机就是完成运算、逻辑控制、通信等功能的单一模块。单片机就是完成运算、逻辑控制、通信等功能的单一模块。一般说嵌入式都是指嵌入式系统,嵌入式系统是将应用程序、操作系统、和计算机硬件在一起的系统,是指以应用为中心,以计算机技术为基础,软硬件可裁剪,其针对的用户应用对功能、可靠性、成本、体积、功耗和使用环境有特殊要求的专用计算机系统。
性能参数相比较,单片机的处理能力较低,主频大多在几十M上下,和嵌入式动辄上百上千M的处理速度还是相差较多,此外单片机并不具有图形界面的处理能力,也就是GPU的缺乏导致单片机几乎不可能带动图形界面。
单片机的存储空间和嵌入式处理器也不是一个等级的,单片机通常片内存储只有几k大小,而由于外设的限制也不太可能大范围增加外设emmc,而嵌入式处理器通常有几百兆的RAM,如此巨大的差别导致单片机几乎不可能像嵌入式处理器那样运行操作系统,甚至连TCP/IP协议栈和USB协议栈都跑不起来,一些高端的单片机比如ST公司的STM32系列,可能可以跑一些轻量级的系统os和嵌入式网络协议栈,比如IwIP协议栈。
嵌入式处理器丰富强大的性能决定它能完成更多单片机不能完成的应用,比如网络通信功能,视频传输处理功能等,而当外设存储增加后,嵌入式处理器能够轻松运行各种Linux系统,以及图形GUI界面。
在开发方式上单片机和嵌入式也有较大差别,也就是编译过程的区别,单片机主要在Windows等图形界面下开发,目前有很多成熟的IDE工具,上手还是非常快的。
而嵌入式开发一般是在Linux下进行的,要将c代码在自己主机上编译完成,然后通过系统镜像或者uboot引导将编译好的文件烧入开发板,此外,Linux下没有Windows那样的IDE,也就是编译,链接源代码都需要开发者自己完成,这也给嵌入式开发增加了难度。


嵌入式与单片机间的真正区别


提到单片机和嵌入式的概念,是有点混乱的。但从根本来看,其实大部分人在讲单片机和嵌入式时都是从狭义角度出发的,并非广义。
单片机是中文名,对应的英文名称是“Single Chip Microomputer”,很多人奇怪平时不是都说MCU(Micro Control Unit)吗?其实MCU准确翻译过来应该叫微控制器,现在很多中文书籍都用这个词,不用单片机了。嵌入式的全称是嵌入式系统,英文是Embeded system,所以可以看出嵌入式是一个system,照理来说,范围有点太宽了。
狭义上讲,嵌入式是为了区别于单片机。我们经常把芯片中不带MMU(memory management unit)从而不支持虚拟地址,只能跑裸机或RTOS(典型如ucos、华为LiteOS、RT-Thread、freertos等)的system叫单片机(典型如STM32、NXP LPC系列、新的NXP imxRT1052系列等),而把芯片自带MMU可以支持虚拟地址,能够跑Linux、Vxworks、WinCE、Android这样的操作系统的system叫嵌入式。
类似的讨论很多,我们普遍认为,单片机,属于嵌入式系统的一种——MCU(嵌入式微控制器)。
总之,嵌入式和单片机的渊源很深,所以经常拿来比较。

工程师怎么看


事实上,从概念上来说,单片机系统可以是嵌入式系统,但嵌入式系统不仅仅包括单片机系统。
打个比方来说,嵌入式开发就像建一栋大楼,需要考虑的结构和细节非常多;而单片机开发就像搭个小帐篷,相对简单直接。但不管是建大楼还是搭帐篷,都需要专业知识和技巧。
因此,嵌入式系统开发需要硬件平台支持,而硬件成本往往是开发中的一个主要支出。此外,使用专业的嵌入式开发工具和软件也需要支付相应的许可费用。而开发单片机还购买单片机芯片开发板、调试仿真,这些都是成本。
lugl4313820提出,这几年的进步很快,很多MCU都跑到600M了。当然,性能参数相比较,单片机的处理能力较低,主频大多在几十M上下,和嵌入式动辄上百上千M的处理速度还是相差较多。
野火出了RK3588,16G内存256GSSD,比一般的电脑还要强,直接可以在他们上跑了,编译也可以了。
秦天qintian0303则认为,感觉现在嵌入式系统的开发也是在操作系统上进行应用开发,只不过多了一个底层的固件开发。
目前普遍的观点是单片机就是嵌入式linux的初级阶段,或者说嵌入式linux就是更难一些,更复杂一些的单片机开发。也就是说,单片机比嵌入式技术门槛低,工作机会多。
不过,著名嵌入式专家吴坚鸿也有不同的观点。他曾经发文表示,学嵌入式的不一定比学单片机的厉害。单片机简单吗?一点都不简单。
单片机的功夫在单片机之外。单片机不带操作系统,所以写单片机程序,本身就意味着你在开发操作系统。嵌入式带操作系统,所以你写嵌入式程序,本身意味着你不用开发操作系统,只是在别人的系统上做一些应用开发。
与此同时,单片机做的事情要尽量简单,速度要尽量快,成本要尽量低,开发周期要尽量短,这个才是单片机的独到之处。裸机跑的单片机比带操作系统跑的单片机效率要高。带操作系统的单片机实战中用不到。
从前景上来看,“嵌入式”最大的弱点是吸金能力严重不足。目前电子产品,用嵌入式系统的很少,大部分都是用单片机,因为单片机实时反应速度快,外围电路简单,价格便宜,开发周期短,这些都是嵌入式系统望尘莫及的。
也有工程师认为,相比单片机,嵌入式行业上可IoT,下可单片机;努力提高自己的上限,才是嵌入式开发者的破局之路,不要盲目的什么都学,因为学艺不精,不仅打不死人,还大量的浪费自己的时间。
当然,总结起来一句话,无论是单片机,还是嵌入式,都是时间泡出来的,只有持之以恒,才能有所成就。


· END ·








展开↓