大家好,我从事嵌入式软件开发十多年,欢迎关注和交流。
单片机工程师,就这个名称来讲,一般是指硬件工程师。从事单片机开发工作,可分为软件工程师和硬件工程师。今时今日,分工已经很明确,一般情况下,写软件的,不需要熟悉硬件,只要会调用API,或者会看编程指导即可。成熟的平台或团队,都会提供库函数版本或寄存器版本给开发应用。做硬件的,也不需要懂得编程,只需要看懂电路图,会分析,会改板,会测量即可。
要求软硬都熟悉的人,是软件底层工程师,硬件上要求看懂电路图,知道每个元件的作用,知道每个回路每个网格每个IP的工作原理,要求熟悉基本元器件的焊接操作,要求会使用示波器,万用表,甚至是逻辑分析仪,负载器等等的使用。软件上要就熟悉C语言,汇编语言,熟悉I2C,SPI,CAN,SDIO,USB,I2S等协议,熟悉GPIO的配置。编程指导,数据手册,原理图,丝印图,是底层工程师最常用到的四大宝典。
当然,由于分工已经模块化,LCD,Sensor,NandFlash等等IP已经分由不同的工程师甚至是团队负责,所以做底层的,写驱动的,通常只需熟悉对应的模块即可。
从业十多年,调试过很多开发板,包括裸板。我最大的感受是:理论正确,弄板有力,才能调通调好。所写的软件,首先是要理论正确,且严格符合编程指导和数据手册。弄板有力,指的是有能力测量,分析,焊接开发板,不用事事去找硬件求助,那样的话时间成本太高。
谢谢大家。