嵌入式计算机系统,英文名embedded computer system,指的就是就是一个相对微小的设备,植入了计算机。换句话说,简单的像电子表,闹钟,复杂点的像POS机,自动贩卖机,ATM等,都属于嵌入式设备。
首先,嵌入式行业是很广的,看你怎么定义。
只是8位机8051算嵌入式
加上RTOS,RT Thread的单片机系统开发算嵌入式
linux系统API开发
驱动开发算嵌入式
上述内容都是嵌入式,同样是嵌入式,你觉得薪酬会一样吗?其次,上述的内容,个人觉得是个层层递进的关系,而不是站在对立面的关系,因此,我不同意单片机很low,linux和机器学习就很高大上的说法,毕竟嵌入式技术中,这几者都是不可或缺的,区别在于层次不同,我们需要做的不是站在对立面,而是做到因地制宜。
比如你控制个有刷直流电机,51足矣,但若是三相无刷电机,可能就需要STM32了。30W像素的摄像头STM32游刃有余,但200W或更高的像素的摄像头就可能需要SOC了,如果是做人面识别这样的东西,大概率要用到SOC,反过来SOC虽然性能强,但功耗高,稳定性不如单片机,一些需要稳定控制的设备(比如电机),还是需要单片机的。
嵌入式值不值得入行
嵌入式20年等价于JAVA10年工作?很不幸,这个说法。没有问题。为什么?万变不离其宗,还是门槛的问题。嵌入式学习不仅入门难,整个流程下来,就没有简单的。JAVA专精于网页,数据库,服务器等等。PCB专注于电路板,区别也大多在于层数,频率上。机械制图也是如此。嵌入式呢?不好意思,嵌入式涉及范围比这些广的多。软件硬件基本都要会整才行。
玩电机,玩陀螺仪,玩摄像头,几乎是必修课。那么控制理论不能缺,PID不能少。模式识别,图像处理也得跟进。到linux,操作系统原理不能少。换句话说,论算法,嵌入式从业可能需要关注三种算法:数据结构,控制算法,信号处理。这些东西,完全掌握,可以说20年是不多不少的。换个说法,嵌入式没有全栈的说法,因为嵌入式本身,就是全栈。
但是20年以后,嵌入式从业者再和JAVA从业者,会怎么样呢?
哪些人适合嵌入式?
以下我列出来的情况,如果大部分都中了,这些仁兄就不推荐入坑嵌入式了:
不想做硬件的,打死不做电路的
不想写代码的,看见代码就想吐的
不想整操作系统,觉得裸机单片机就是一切的
想短时间内赚钱,车房一体化全部到位的
先说不想写代码或者不想做电路的情况吧。嵌入式两者都有,即便是最简单的8051,不写代码或者不弄电路,根本进行不下去。可以说一开始的路就被堵死了。再说不整操作系统的。无OS的单片机设备,简单处理完全可以处理,但更复杂的设备,更复杂的功能呢?比如WIFI?摄像头?激光雷达?不想整操作系统,嵌入式就已经被大大限制住发展潜力了。
产品以后可能集中在相对低端的产品里,自动贩卖机,POS机,付款机,公交,地铁的刷卡机等等设备几乎无一例外的搭载了操作系统。
关于嵌入式学习问题
阶段一:从数电、模电、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开发。
