讲到嵌入式驱动开发,很多时候都会理解为嵌入式linux平台下的驱动开发,这种理解当然有其原因,对于大部分单片机项目,因为需求和设计比较简单,开发中往往并没有驱动的概念,更加不会有嵌入式linux开发中严格分层的概念,但是对寄存器的配置和读写实现对外部硬件的控制,它们事实上也属于驱动的范畴,不过驱动的工作当然远不止如此,根据我在嵌入式产品中的开发经验,驱动开发大致包含如下:
1.对寄存器的配置和修改,完成芯片对于接口的功能设置需求,如模块时钟的开关,gpio的使能,复用功能的配置,中断的使能关断等初始化操作, 然后在通过封装的读写接口,将时序和电平反映外部的引脚上。
2.对外部设备或硬件的访问,通过接口以及设置或者获取芯片引脚的状态,如电平的高低,输入或输出电压的大小,但对于大部分产品来说,我们还需要外部的设备或者硬件来进一步扩展来满足实际功能需求,如epprom, sdram, psram,nandflash/norflash, sdcard, cmos, lcd, keyboard, phy等,这就需要我们在读写的基础上添加对这些外部硬件设备内部状态的读取和功能的配置,以应对目前复杂的需求情况。
从事单片机的开发,这两部分就是