现在在实习stm32,linux软件工程师和stm32之间怎么抉择?( 二 )


录用我的公司是一家小公司,一开始就是做一些设备的组装和画一下PCB这些工作,因为我的C语言编程能力实在是太差了,在大学学的是8051的单片机,而且学的也不怎么样 。所以看到STM32程序项目的程序那么多看明白的就没几行 。后来我通过stn32开发板提供的配套视频教程了解了整个程序项目的结构和作用后,就看得懂了,那时就可以改改程序了 。后来来就不单单是搞硬件了,什么都要搞 。最后公司所使用的产品性能要升级,就用到了Linux,一开始老板安排工作直接叫我在Linux上用qt开发一个软件,当时我就愣了一下,因为我都没搞过C++ 。而且还说没完成要追究责任 。没办法只能硬着头皮开干了 。用了两天去了解QT项目工程的结构 。最后搞了两个多月算是完成了,过程中搞过Linux内核编译,底层驱动移植,驱动添加等等,感觉在这段时间学到了很多 。
所以说STM32到Linux只是一个过程,是一个由浅入深的过程 。如何抉择先看你自己现在能力在那个阶段 。
都要会,实际上区别不是太大的,都能用C 。实际上用系统会简单点,但在对单片机性能要求高,主频至少几百兆,裸机只要几十兆就够了
学stm32,后期可以打工,也可以创业 。学linux,后期以打工为主 。如果只要打工,相对来说后者工资较高点,但不绝对 。
天下代码不分家. 如果基于Linux 系统工作环境,命令行+M0-M3单片机手册,基于OpenOCD裸机开发M0/3程序,写驱动代码和GCC makefile,写汇编启动代码,手动编写GCC链接符号表,生成ELF文件刷Flash,如果能玩任意一款哪怕Openocd不支持的M0/4单片机,基本上Linux和STM之流都可以入门了... 有人说Linux比单片机复杂,宏观看是对的,但是拿到一款openocd不支持的单片机直接愣逼,如果真正掌握linux, 开发单片机完全可以抛弃Windows MDK和IAR开发环境,如果不行,说明Linux学了皮毛
嵌入式软件开发领域,主要分为MCU开发和SOC开发两个大类别 。具体的细分情况如下图所示 。其中,MCU开发主要涉及到一般的RTOS系统开发,而SOC开发就具体需要Linux操作系统的支持了 。
嵌入式软件开发岗位分类
题主上面问题中,STM32属于MCU开发的范畴,而嵌入式Linux 开发是属于SOC开发的范畴 。两个领域来说,编程语言都是标准的C语言;MCU与SOC芯片硬件差异有,但是不是影响开发的因素 。两者主要的区别在于:Linux操作系统远远复杂于STM32上常见的RTOS操作系统 。而且,在Linux 开发领域,还更加细分为应用开发与BSP驱动开发两个子类别 。
所以说,Linux开发的复杂度远远高于STM32上RTOS的软件开发 。至于如何选择,需要题主根据自身的技术能力(是否有Linux的开发经验),参考个人的技术发展方向(未来从事MCU还是SOC),具体问题具体分析来决定 。
根据答主的嵌入式开发经历,如果题主对Linux操作系统没有开发经历 。建议您选择从STM32的RTOS系统开发做起,然后扩展到嵌入式Linux的应用开发,最后在涉足Linux的BSP开发的技术发展道路 。这个也是答主,以及很多朋友的常见技术发展道路 。
以上仅代表个人建议,仅供题主参考 。
都可以学,学到够用就行,不用太专,后期关键还是要对一个行业技术理论以及难点突破点的深度挖掘与突破,然后在这些平台上实现功能需求 。stm32和linux只是一个平台工具而已,有人用来点灯,有人用来搞人工智能,这就是区别,虽然大家都会这两个平台!
STM32更贴近底层硬件,重点在底层设备和器件;Linux更贴近应用层,重点在驱动和应用
前者开发所需要的知识偏散偏底层,要做好需要沉下心来积累几年才行,要求经验; 后者开发所需的知识面很广,好在与互联网或普通计算机所需的知识高度复合,因此上手快 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。