嵌入式开发与其他领域的区别是什么?
单片机与嵌入式 2024-08-07

一个刚读研一,从本科开始学了四年嵌入式的渣渣,进来唠嗑两句。

先谈谈我的母校的毕业生情况吧。

我的母校是一个普通二本,许多本科就出去工作的学长或者同级生,从事嵌入式方向,至少也是6K+,做STM32,linux,PCB的都有。

先谈谈嵌入式是啥

嵌入式计算机系统,英文名embedded computer system,指的就是就是一个相对微小的设备,植入了计算机。换句话说,简单的像电子表,闹钟,复杂点的像POS机,自动贩卖机,ATM等,都属于嵌入式设备。

我的嵌入式之路

由于本科四年的学校属于师范学校,在工科领域较弱,本科期间学习方向基本都是自己在找。

大一,大约是四年前的11月初吧,我当时就买了一套亚博智能的资料。大约50块钱,1本书+1个51开发板,大一那会儿刚好在学C语言,恰好51就成了最好的C语言训练平台。

借助51,也学了一些硬件基础知识,什么上下拉电阻,滤波电容,施密特触发器等等。这也为后面学习电路原理,数字电路,模拟电路三大基础学科打了一定的基础。

51最有意思的项目无疑就是做智能小车了,一对小电机,配合L298N控制,红外对管寻迹。

第一次接触STM32是在大一下学期,做小平衡车的时候,是为智能车比赛打基础,当时要两个模块,一个是陀螺仪MPU6050,另一个是摄像头OV7670。前者用51还是调的出来,后者实在是没有办法,做是做出来了,但是。。。卡成PPT,TFT屏幕读取摄像头数据是一下一下的。

之后我便接触到了STM32。摄像头,陀螺仪这些在51上让人很是头疼的外设,顿时变得简单易用。外部中断,定时器这些资源也不像51那样宝贵,大把的外设可以用。。。等等,相关推荐:学习STM32很简单?

简单设备用8位机,复杂设备用32位机,设计电路板用DXP,这个想法维持了很久,直到18-19年的智能车竞赛。

这两年的智能车竞赛发生了两件有意思的事情。

一个是调试新的元素,比如环岛,横断。

另一个是新的环境,赛道不再遮光。

前者标志位已经显得不够了,后来查询资料,使用上了有限状态机FSM。

后者短时间内也没有什么好思路,直到接触到了OpenMV和OpenCV。

FSM整出来以后,我在想是否有更高级,更强大的处理方法。

linux告诉了我答案,包括OpenCV。

我才发现,原来嵌入式开发和JAVA,前后端开发一样,是可以有操作系统的。

原来中断,DMA这些东西,在操作系统看来,就是进程,线程的底层表现。

目前,嵌入式仍在学习中,跟着老师学习2440,裸机开发,驱动开发,系统开发。

同时在整机器学习,模式识别,图像处理这些东西,希望有朝一日,能和嵌入式联动起来。

就像本科那时51联动C语言,STM32联动PID,卡尔曼滤波等等一样。

嵌入式行业定义

说了这么多,感觉有些偏题哈,回到主题吧。

首先,嵌入式行业是很广的,看你怎么定义。

  • 只是8位机8051算嵌入式

  • 加上RTOS,RT Thread的单片机系统开发算嵌入式

  • linux系统API开发,驱动开发算嵌入式

  • SOC(片上系统)+Linux+OpenCV+CNN+YOLO也叫嵌入式。

上述内容都是嵌入式,同样是嵌入式,你觉得薪酬会一样吗?

其次,上述的内容,个人觉得是个层层递进的关系,而不是站在对立面的关系,因此,我不同意单片机很low,linux和机器学习就很高大上的说法,毕竟嵌入式技术中,这几者都是不可或缺的,区别在于层次不同,我们需要做的不是站在对立面,而是做到因地制宜。

比如你控制个有刷直流电机,51足矣,但若是三相无刷电机,可能就需要STM32了。30W像素的摄像头STM32游刃有余,但200W或更高的像素的摄像头就可能需要SOC了,如果是做人面识别这样的东西,大概率要用到SOC,反过来SOC虽然性能强,但功耗高,稳定性不如单片机,一些需要稳定控制的设备(比如电机),还是需要单片机的。

嵌入式行业不够景气的可能原因

最后,鄙人浅薄理解,嵌入式没前途可能的两个原因:人才缺失严重,且工资较低。

先说人才缺失

纯JAVA开发或是纯电源,传感器开发,又或者是Solidworks做模具等一般只需要写代码或者只需要动烙铁或者画图就行了,但是嵌入式基本是要求软硬兼备。而且往往也得会画图(PCB)。相关推荐:嵌入式行业那些坑与出路

JAVA Python这些语言高级特点也很明显,类和对象处理功能都很强大,后台也能联动(比如JAVA的JDBC联动MySQL等等)。但嵌入式的语言主要是相对传统的C/C++,甚至要写汇编代码,开发难度比JAVA,Python个人觉得都要高一些。

嵌入式严格归类是在计算机里,但是目前国内计算机依然是以软件为主(BAT三巨头都是纯软件公司)。以硬件为根基的嵌入式,自然发展艰难一些,这也是为什么电子或者自动化出身的学生,学嵌入式比例比计算机科班反而高一些的原因之一。

可见嵌入式开发的门槛还是不低的(目前个人认为IT行业中唯一入门难度高于嵌入式的,恐怕只有图像,计算机视觉,机器学习这些东西了)

再说薪酬低的问题

正如前文所言,嵌入式入门门槛不低,因此大多数涉猎嵌入式行业并入职的,还是集中在单片机领域,这部分拉低了嵌入式的平均薪酬,其实如果能做到linux,甚至做到视觉领域,个人觉得还是会有不错的收入的。

这一点软件,硬件行业也一样。软件只会前端(HTML5,Vue.js等),做不到全栈。硬件只会画简单的信号板,双层板,画不了多层板,高频信号板,高电流板。机械只会画平面图,不会做模具。一样工资不会高,我这一届有一个同学毕业了去做前端,薪酬才三千。。。只能说这些入门门槛不如嵌入式高,不会说大多数从业者都集中在低端行业,平均薪酬自然也不会和嵌入式一样被低端行业拉的这么低。

谈谈嵌入式,值不值得入行?

嵌入式20年等价于JAVA10年工作?

很不幸,这个说法。没有问题

为什么?

万变不离其宗,还是门槛的问题。

嵌入式学习不仅入门难,整个流程下来,就没有简单的。

JAVA专精于网页,数据库,服务器等等。

PCB专注于电路板,区别也大多在于层数,频率上。

机械制图也是如此。

嵌入式呢?不好意思,嵌入式涉及范围比这些广的多。

  • 软件硬件基本都要会整才行

  • 玩电机,玩陀螺仪,玩摄像头,几乎是必修课。

  • 那么控制理论不能缺,PID不能少。

  • 模式识别,图像处理也得跟进。

  • 到linux,操作系统原理不能少。

换句话说,论算法,嵌入式从业可能需要关注三种算法:

数据结构,控制算法,信号处理。

这些东西,完全掌握,可以说20年是不多不少的。换个说法,嵌入式没有全栈的说法,因为嵌入式本身,就是全栈。

但是20年以后,嵌入式从业者再和JAVA从业者,会怎么样呢?

哪些人适合入行嵌入式

以下我列出来的情况,如果大部分都中了,这些仁兄就不推荐入坑嵌入式了:

  • 不想做硬件的,打死不做电路的

  • 不想写代码的,看见代码就想吐的

  • 不想整操作系统,觉得裸机单片机就是一切的

  • 想短时间内赚钱,车房一体化全部到位的

先说不像写代码或者不想做电路的情况吧。

嵌入式两者都有,即便是最简单的8051,不写代码或者不弄电路,根本进行不下去。可以说一开始的路就被堵死了。

再说不整操作系统的。

无OS的单片机设备,简单处理完全可以处理,但更复杂的设备,更复杂的功能呢?比如WIFI?摄像头?激光雷达?

不想整操作系统,嵌入式就已经被大大限制住发展潜力了。产品以后可能集中在相对低端的产品里,自动贩卖机,POS机,付款机,公交,地铁的刷卡机等等设备几乎无一例外的搭载了操作系统。

薪酬的问题

众所周知,嵌入式是个潜力股。

前期工资一般较低,这也确实是事实。

因此短时间急着赚钱的话,嵌入式可能还真的不太合适。

来钱快的,技术岗还是JAVA强。

最后说说嵌入式的学习问题吧,大家也一起交流交流。

小白的话建议还是先想好入不入嵌入式这个坑,毕竟不论怎么说,嵌入式都是一条苦行僧路。如果完全没有兴趣趋使,还是建议转行。

从嵌入式小白到大神

阶段一:从数电、模电、C语言入坑嵌入式

硬件方面电子系的电路+数电+模电是肯定要学的,特别是数电,不说炉火纯青,至少也得做到了然于胸。

软件方面,C语言不能少的。我看知乎都推荐C Primer Plus这样的教材,但本人不推荐小白去看,毕竟确实不太容易啃下来,谭浩强教授的红皮书就可以了,毕竟入门容易。

阶段二:51单片机实战

C语言和电路基础有了以后,就开始整51单片机,中间穿插一些外设。LED 按键 蜂鸣器 电机等等,再去整整通信协议UART IIC SPI,再用这些协议去玩一些模块,比如MPU6050,OLED,HC05蓝牙等等。

阶段三:STM32单片机进阶

如果是自动化科班的

建议调调PID控制电机什么的。

到摄像头等复杂传感器,升级到STM32这类32位单片机以后,再进行深入学习。

学习更复杂的信号处理方法,比如LKF,EKF,再加一点基础的图像处理方法。同时把CubeMX这样的代码生成器也尽量用熟,提高开发效率。

再到后面,开始上一些实时操作系统,比如RTOS RT Thread ucos啥的,把整个开发的层次再次提高。

阶段四:SOC+linux

嵌入式远未结束,以linux为平台入门SOC开发。


小结

如果以后做自动化科班方向,计划就是嵌入式SOC联动图像处理,机器学习这些东西,再底层联动单片机,驱动电机。完成完整的工控机,机床,机器人等设备的开发工作。如果是这样,个人目前觉得最好的入门坑是OpenCV,然后再深入,方为上策。

如果以后做软件方向,联动安卓框架,安卓HAL。借助JAVA C++这类面向对象语言,做安卓音视频的开发和处理,要么搞视频监控,要么搞蓝牙耳机什么的。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 3AT89C51单片机引脚说明及引脚图

    AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU...

    07-11
  • 51单片机对LCD1602液晶的驱动设计

    51单片机——LCD1602 1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D...

    07-11
  • 单片机串口如何接收不定长数据的?

    我们在使用其他STM32的单片机的时候,会发现有些困难,会发现常用的方法并不能用,在还没有接收完数据的时候,就解决不了。于是,只能用通用的方法来解决了。 这个通用的方法,其实原理和使用IDLE的原理一样:...

    07-11
  • ARM处理器的选型原则

    鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,...

    07-10
  • 有哪些低功耗设计方法?单片机系统低功耗设计要点介绍

    功耗,已经是一个老生常谈的话题了。对于功耗,大家多多少少有所了解。目前,很多产品的宣传里便带有低功耗噱头。为增进大家对功耗的认识,本文将基于两点介绍功耗:1.低功耗主要设计方法,2.单片机系统低功耗设计...

    07-10
  • 8位32位MCU如何选择?如何选择合适的MCU?

    MCU,对于普通人而言,是一个高大上的存在。但是,在工业中,MCU确实常见产品。为增进大家对MCU的认识,本文将基于两点介绍MCU:1.8位MCU和32位MCU如何选择?2.如何选择合适的MCU。如果你对MCU具有兴趣,不妨继续往...

    07-09
  • ARM开发:一 ARM微处理器概述

    1.1ARM-Advanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术...

    07-08
  • 分析C51单片机的一些误区和注意事项

    简介:常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。 1) C...

    07-08
  • 51单片机几个延时程序

    简介:51单片机几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序(晶振12MHz,一个机器周期1us.) 程...

    07-08
  • 总结单片机软件抗干扰的几种办法

    简介:在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中...

    07-08
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    07-02
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    07-02
下载排行榜
更多
评测报告
更多
广告