这个行业主要分工就两个方面:硬件开发和软件开发,但是硬件软件基本上是没法分家的,因为软件是基于硬件开发的,硬件是基于软件设计的。所以要有完美的产出,就要有硬件和软件都懂的工程师。
硬件开发:硬件开发主要就是根据需求设计硬件电路,画原理图、PCB布线啥的,主要软件可以了,硬件设计主要就是模电和数电了,当然数电比模电简单多了,数电方面根本不需你去设计什么电路,一是一些芯片的datasheet已经给出了应用电路图;二是互联网这么发达,你想过的电路别人基本上都设计过,照搬就行了
软件开发:嵌入式软件开发需要掌握的东西也太多了,至少我学到现在还有好多东西没接触、不熟悉。完全摸不着头脑的bug,这个时候你就会怀疑是不是你软件的问题,还是硬件的问题,等你确定是软件问题的时候,你又不得不回到开始,把代码的编译->汇编->链接,把MCU怎么从上电到进入main函数从新学一遍当初没人告诉我这里面全是坑啊所以你又得装个arm-none-eabi-gcc而且这些IDE的编辑器完全就是十几年前的产物,什么语法纠正、多行编辑一概没有,
而“不管51有没有落后,学习51都是值得的,个人认为不会浪费你的时间和精力”,理由如下:
1. 学习51单片机的目的不是为了工作中为了使用51,而是为了培养直接调试寄存器与软硬件接口bug的能力。
2. 51单片机没有sdk的支持和过多的软件封装,能够直接把外设寄存器功能暴露在你面前,让你真正体验调寄存器的感觉。
3. 不用花太多时间钻研专精所谓51单片机,但是还是应该通过一两个中等规模的项目,来培养通过调寄存器和数字电路交互,debug的能力,找到调寄存器的感觉,这种感觉很重要。
4.搞嵌入式有时候就像NBA篮球赛,常规时间得分都是写软件,调用api,设计数据结构。可能调寄存器的功夫大部分时间都用不上。
如果是作为一个Web工程师,能用Python或JS进行单片机开发干嘛非要用C语言呢?对吧?只是作为一种业余爱好平时玩玩而已,真的没有必要在去学习51或STM32单片机的C语言开发, 而且MicroPython和Espruino都支持STM32了
但是!任何一个电子专业出身的人都应该能意识到!像这类微控制器脚本语言平台,本身肯定有很大的局限性!
首先是性能问题,在单片机上能脚本语言肯定要有一个脚本解析器,这肯定是用C语言编写的了,那么C语言运行脚本解析器,脚本解析器运行用户代码,最后出来的效果肯定慢了很多!当然如果单片机性能足够可能看不出什么。
然后就是接口问题。因为我们是用脚本来控制单片机,如果底层解析器没有把一些寄存器的配置引出来,我们就没法做一些事情,比如说如果底层解析器不提供休眠接口,我们就没法对单片机进行休眠,那就没法更低功耗运行了。
最后,就是限定板子导致的成本问题,目前来看,所有的脚本语言肯定没法都支持全部微控制器,尤其是更低配置的微控制器,低端单片机有一个好处就是成本低廉:能用STM32进行LED流水灯控制就没必要用树莓派,能用51单片机就没必要用STM32,能用555时基电路就没必要上51单片机了,能用分立元件就没必要用芯片!
|