{eval=Array;=+count(Array);}
谢谢邀请,作为一名嵌入式开发工程师,由我来回答这个问题。
STM32软件工程师和linxu软件工程师,都是使用C语言进行程序开发,但linux可以分为linux驱动开发和linux应用开发。
linux开发比STM32软件开发要复杂,从事linux开发,需要学习linxu gcc和shell指令,makefile编程,系统移植,文件系统,linux驱动,QT等等相关知识,门槛比stm32开发难度高。需要掌握的知识点更多更复杂。学习难度非常大。
学习stm32的工程师,等到工作年限,一定会遇到职业瓶颈,这个时候,如果你会linux开发,操作系统,那么职业道路将会走的很宽,二则,工作待遇来讲,普遍linux开发会比STM32开发的福利待遇要好一些。
如果本身有一定的linux系统基础,那么强烈建议选择linux,因为linux整体工资要比stm32开发要高。学完linux后,如果项目需要stm32单片机,那么再去做STM32,会觉得十分简单。
如果没有任何的linux基础,公司没有师傅带着做linux的话,或者公司对linux项目有较高的要求和时间限制,那么不建议转linux,先将STM32学好,再过半年一年后,自学合作参加培训linux。不至于打击学习的自信心,二则对于后续找工作也有一定的好处,至少有一项技能能够在毕业后找到工作。
总之,因为处在即将毕业的时间点,先要根据自身条件,结合自己的兴趣爱好,保障毕业能够找到好工作为前提
我是科技电小二,一名嵌入式开发工程师,欢迎点个赞,并加个关注吧。
我觉得,刚出来实习的话最好就是能找到一个能让你成长的平台。但前提是你现在所拥有的知识和技术是否能够让你所选择的提供职位的公司能够录用你。
STM32与Linux两者都是属于嵌入式,而后者比前这更高级,目标可以订在Linux,STM32只是一个过渡,两者的相关理论都是有所系系,初始阶段可以先通过STM32来搞明白常用的一些外设,STM32搞明白了,自己的编程能力那也就提升了,再入手Linux也就简单多了,如果你一开始就入手Linux的话估计会比较难而且复杂。
就我自己来说,刚实习的时候找了一份搞STM32的硬件开发工程师的职位,这也是找了一个多月才找到的一份工作,这也是因为我拿出了我画的不咋地的一份PCB设计才被录用下来的。
录用我的公司是一家小公司,一开始就是做一些设备的组装和画一下PCB这些工作,因为我的C语言编程能力实在是太差了,在大学学的是8051的单片机,而且学的也不怎么样。所以看到STM32程序项目的程序那么多看明白的就没几行。后来我通过stn32开发板提供的配套视频教程了解了整个程序项目的结构和作用后,就看得懂了,那时就可以改改程序了。后来来就不单单是搞硬件了,什么都要搞。最后公司所使用的产品性能要升级,就用到了Linux,一开始老板安排工作直接叫我在Linux上用qt开发一个软件,当时我就愣了一下,因为我都没搞过C++。而且还说没完成要追究责任。没办法只能硬着头皮开干了。用了两天去了解QT项目工程的结构。最后搞了两个多月算是完成了,过程中搞过Linux内核编译,底层驱动移植,驱动添加等等,感觉在这段时间学到了很多。
所以说STM32到Linux只是一个过程,是一个由浅入深的过程。如何抉择先看你自己现在能力在那个阶段。
都要会,实际上区别不是太大的,都能用C。实际上用系统会简单点,但在对单片机性能要求高,主频至少几百兆,裸机只要几十兆就够了
天下代码不分家. 如果基于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的话注重软件开发,跟windows开发一个套路,如果想了解硬件,那就stm32,否则就干linux
STM32更贴近底层硬件,重点在底层设备和器件;Linux更贴近应用层,重点在驱动和应用
前者开发所需要的知识偏散偏底层,要做好需要沉下心来积累几年才行,要求经验; 后者开发所需的知识面很广,好在与互联网或普通计算机所需的知识高度复合,因此上手快。
在工作的前期,linux开发待遇高,后期STM32所代表的高级硬件开发待遇高,且可遇不可求。
以上
这里不针对楼主所谓哪个平台,只是想提醒一下在读书的同学。实际上一个工程人员的核心竞争力难度不在于平台,在于基础知识积累。通信原理,数字信号处理,微机原理,英语好,理解能力强也是很重要的。
弄Linux大部分功能都是现成的,原厂提供了bsp在上面改就行了。要增加一些什么功能,有非常多的开源代码直接换个交叉编译工具就可以移植了。linux只有个芯片手册就能把系统搭建起来的恐怕凤毛麟角了。不过linux就业机会确实比单片机多点,我从事单片机开发,这点有体会。另外就是单片机,这是完全可以靠gcc和makefile搞起来的。但一般都用原厂的sdk,没必要自己搞。
说了这么多,想表达的意思是平台不是问题,入门成本不高。当然,硬是要搞得非常彻底,那还是算了吧,估计一般人早晚都会放弃。站在巨人肩膀上做事才会更好。
真正的牛人不是用哪个平台,而是基础知识积累怎样。举个例子,移植驱动写makefile好像逼格很高吧?但一般人依样画葫芦一样可以搞定。但是,牵涉到基础理论的代码,别说写了,一般人看都看不懂,函数在那里都不知道怎么用。不相信的同学可以随便去看看各种解压缩算法,各种通信协议。另外想表述到是英语跟重要,因为99%的有价值的文档都是英文的。举个例子,各种标准化组织的spec都是英文的,没人给你翻译中文。国内的论坛,大部分情况下问题解决了不会说解决方法,国外的就不一样了,大部分情况下解决了会详细解决方法描述。不相信的同学等你们工作了就会有感触。
因此,读书的时候积累好基础知识,哪个平台是基本技能,花一年左右时间补短就好了。以后的工作中,基础知识扎实的同学肯定能脱颖而出。这也是为什么牛逼企业招985的多一些。哪个平台写代码是大砖小砖的区别,而基础理论知识才是设计图纸。
0
回答0
回答5
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答