一个人能同时学好软件和硬件(嵌入式)么?

转载于:https://www.zhihu.com/question/453508779/answer/1827113742


看你是否考虑时间成本了。

嵌入式不是简单的东西。

嵌入式的软件往往是和操作系统打交道。软件的话并不是前端,java 那些,而是操作系统,硬件的话就是CPU 和一些外部设备还有电路了,个人感觉硬件比软件更吃经验吧,并且硬件就业比较窄吧,不太了解硬件。

硬件工程师就业感觉可能不太容易。总觉得一个硬件工程师搞某个东西都要搞好多年,离了公司很难找到比较好的工作吧,然后就是嵌入式的软件部分大部分还是C/C++ 语言,汇编语言,操作系统,数据结构算法,还有计算机网络,编译原理等等,都是很底层的软件知识,这些具备了,就能学linux 了,学习系统编程,内核等等,但是前提一般是有个好的前辈带你的话,会进步很快,如果没有,将是很痛苦的。

硬件部分比较注重积累。就是电路基础,数字电路,模拟电路,还有电路设计等等, 如果条件可以就是焊接电路板,画板子等等。

嵌入式程序员比较喜欢深挖底层,就是寻根问底。他们一个问题一路追到底,从软件层面,追到操作系统,最后追到电路,硬件,CPU 等等,所以这种人往往是具备计较强的探索欲和求知欲,还有好奇心,就看你适不适合了。

**支撑嵌入式程序员的动力前期往往很难和金钱挂钩,大多嵌入式程序员是依靠兴趣来驱动自己坚持下去。**嵌入式程序员往往更注重兴趣驱动,因为在前期一个嵌入式程序员投入是相当巨大的,无论是时间精力还有金钱,都是很烧的,并且在刚入行时,业界的待遇并没有纯软件开发那个高,所以选择这条路的大多都是技术流,对技术比较痴迷,兴趣驱动他们支撑下去,但是貌似在后期神功大成之后,好像会比较厉害了,所以选择这个方向,看看自己是否感兴趣真的很重要,前期没有太多的收入,唯一的支撑下去的只要那点对技术的兴趣了。

可以先不着急方向,毕竟才大一,可以都学习一点,了解一下,最终再决定以后走什么路子。

无论是软件还是硬件,或是互联网,算法,等等,哪个深入了都很厉害。但是就嵌入式而言,需要的时间成本,精力,等等都需要挺多的,要比纯软件开发需要下很多的苦功,感觉更能吃苦吧。

先把C语言学好,然后学习单片机,慢慢就把软件硬件都了解了。


“学好”是一个非常抽象的词,每个人的标准可能都不一样。

1.

每个人都希望自己全能,不放心把希望寄托在别人身上,不愿意自己的时间让别人掌控,更不甘心结局是因为搭档不给力以失败告终。

这也是我一直以来的想法,所以软件出身的我被一步步逼会了硬件。

从硬件设计、对外壳Layout、投板、元器件采购、焊接做样、写程序,功能调试,写产品说明书,最后到量产生产指导,一个产品从无到量产整个过程我都经历很很多次。

看起来很厉害的样子,其实是我经历的小公司比较多,被压榨的比较多而已。

但是有舍必有得对吧?付出了时间让我学到了更多的东西。

对于我来说,我并不觉得我学好了硬件,因为现在电路都是集成化的了。

电源部分找个芯片,原厂给你参考原理图,给你技术支持,只需要会画原理图和PCB就能做出来。

还有就是单片机最小系统,基本都是固定的晶振、复位电路

剩下产品功能模块无非就是各种传感器采集数据,然后配合三极管、MOS管、继电器等等做一些控制,交互的话有LCD屏,数码管、按键等等。

你会发现只要你积累的产品多了,很多电路都是可以直接复制粘贴,或者稍作修改。

大多数的硬件工程师其实都没机会接触到真正核心的技术,想参与核心技术就必须往供应链上游做,做芯片,做模块,但是门槛也很高。

其余基本都是在做应用,用一个工具有什么太难的技术对吧?

你说我们都没学好吧,我们又能解决问题做出产品,你说学好了吧,我们又没掌握真正的核心技术,很尴尬。

所以,学海无涯,隔行如隔山,专注一个细分领域,不断突破自己,让自己”好”的标准越来越高就好。

2.

前面我说我硬件的技能是被逼出来的,其实从头到位,我并没有系统地去学过什么模拟电路,数字电路

而是从产品中不断去积累,比如说碰到MOS管,不知道是咋回事,我就会去搜索它的工作原理,然后根据这个原理放在产品的电路上,看看自己理解的对不对。

当你到了这一步,你自然就知道以后什么场合该用mos管了。

而不像去系统地看模拟电路,看半天也搞不懂这玩意到底用在哪里,从产品上学习才能更接地气,也更高效。

后面接触多了我也懂了,后面我又倒腾了下AD画原理图封装,画PCB封装,画PCB。

也没系统地去学习,就是看硬件同事画了几次,然后自己也玩了一下,有问题就请他抽包烟请教一下,不知不觉就学会了。

刚开始画的时候没经验,看着密密麻麻的线,打了3,4个过孔都连不到一起。

其实你先把元器件按照原理图模块化摆放好,总能连起来的。

这都是一个自然而然的过程,

3.

最后解答下很多新手的的问题,到底先做硬件还是软件?

我个人的建议还是先做软件,做嵌入式的,即便你是做软件也会经常接触到硬件的东西。

而做硬件,很难接触的到软件的东西。

所以先做软件,在做的过程中去沉淀硬件的一些基础知识,后面积累多了,自然而然就会了,到时候再把画图软件花几个小时学一下就能上手自己设计做板子了。

还有就是薪资待遇吧,这也是大家比较关心的,同样是应用工程师,软件工资会比硬件高一些。

有了不错的稳定现金流,你做什么都方便很多,你想学直接花几万块找个大神手把手带都行,这成长才是飞快的,而且投产比也很高,2-3个月就回本了。


可以,但是很难!不建议这么做!

软件可以速成,但是想要毕业从事硬件开发工作,那么你大学时期就必须专攻硬件(大佬除外)。

看你兴趣,建议专攻软件,硬件当做业余爱好来玩,这样工作之余可以自己做点小东西。


由于这个好的标准不好定。我从我经历的情况来说,不能。

举例1,大厂技术专家,做Linux近20年,公司几万人的机构,系统相关的难题最后都到他这里解决。那他对硬件熟悉吗?熟悉。但是细节问题,他还是会去请教普通的硬件工程师。

举例2,大厂牛人,创业成为某嵌入式培训机构老板。软硬件兼修,但是硬件合作还是会经常来公司找老同事。

然后,对硬件工程师很熟悉软件开发的情况。没遇到过。

道理我能明白过来,无论是嵌入式软件还是硬件,都需要大量的实践经验来提升技术。想两个经验都有,恐怕职业生涯没这么长。

当然,也许说做好不一定就要达到牛人这种程度。


去人少的公司,够卷就可以。

做硬件的时候熟悉几款EDA软件,熟悉几个经常用的电路,整改一些EMC差不多就够用了。没事可以去贴片线看看生产流程。

百十来块板子画下来,调过几个EMC,差不多就可以转软件了(毕竟硬件工资不高)

软件会C/C++,python, JS基本就够了,多看看RTOS和Linux,以后的职业生涯就画画板子,搭搭架构,搞搞数据库,调调接口,裁裁系统,编译编译现成的软件包。

毕竟人精力有限。都会肯定不会都太精。人少的话,合理运用外包也不会太累


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机载软件与适航

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值