![b52ed34f82173fcdda7534a6b181c102.png](https://i-blog.csdnimg.cn/blog_migrate/d7e32586cce79b5c16a543db8045c8ee.jpeg)
嵌入式开发从大类上来说,主要分为两类:
1)嵌入式硬件开发;
2)嵌入式软件开发。
对于嵌入式硬件开发而言,硬件是必须要懂得,因为涉及到电路原理图的设计。
对于嵌入式软件而言,如果细分的话,又可以分为驱动开发和软件开发。
这两者都需要一定的硬件知识,所以,嵌入式开发有必要学习硬件。
1
嵌入式硬件开发
嵌入式硬件开发的工作就是根据用户需求、产品经理的要求,设计技术方案并细化技术方案,设计电路原理。
这个过程包括技术方案的提出、技术方案的评审、硬件芯片/元器件的选型、技术方案原理的实施等。
毫无疑问,硬件开发必须要懂硬件,而且是精通。
![61348d2f7adf4c0d6676f8e2bc1af005.png](https://i-blog.csdnimg.cn/blog_migrate/fcae7cfc716815102115cb951d8cdbc7.jpeg)
2
嵌入式驱动开发
这个职位在大公司里是有的,在小公司可能就取消了。
这个岗位的工作职责就是编写驱动程序。
什么是驱动程序,就是介于硬件和软件之间、将硬件接口形成软件指令/代码。
方便程序员去调用,这样就避免了程序员直接去理解硬件原理,只需要调用相应的驱动接口即可。
如下图,要让继电器动作,单片机必须输出高电平,驱动开发就是将该过程形成一个接口:
JDQ_ON;
JDQ_OFF,程序员在驱动继电器时,直接调用JDQ_ON或者JDQ_OFF,就可以了,从而忽略了硬件。
![b1ee73769c423217858716a090a6f3fe.png](https://i-blog.csdnimg.cn/blog_migrate/cfa78566478f584db4b19d4394dce79c.jpeg)
这个职位是为软件开发服务的,要熟悉硬件接口,知道硬件的工作过程,并形成可调用的代码。
所以,必须要懂硬件。
3
嵌入式软件开发
该职位,其实已经是程序员的范畴,但是与上位机程序员、网站程序员相比,该职位还是偏硬的,因为该职位是对硬件编程,所面对的平台是工控板,是单片机、ARM、DSP等,只不过,所用的硬件接口都被驱动开发者做好了,控制硬件时只需要调用驱动接口就可。
在小公司,驱动开发和软件开发是放在一起的,甚至在更小的公司硬件设计、驱动设计、软件设计都是一个人在做,软硬通吃。
所以,嵌入式软件开发还是要懂一些硬件。
![395b823976b7dcdb17a6297bf3982457.png](https://i-blog.csdnimg.cn/blog_migrate/cdf09e34b95c2a71a7c9550a547b94c6.jpeg)
所以,对于硬件而言,即使你是软件开发者,也要懂一点硬件,可以不会设计电路,但是一定要能看懂电路。
应为驱动开发者,如果犯一点小错误可能就导致软件开发者调试好久,如果懂硬件的话,可能就能及早地发现问题所在。
所以,即使是嵌入式软件开发者,也要懂一定地硬件。