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