在写简单的字符设备驱动的时候以上内容正是我们编码的思路
但实际设备驱动开发的工作中驱动程序是分层的,(软件分层的思想)
linux2.6版本以后建立了设备模型,驱动就越来越采用平台设备驱动机制实现
内核引入程序框架思想:代码的可重用,可维护,可伸缩。
内核采用分层架构:(总线设备驱动)也就是平台设备驱动
查看arch/arm/plat-samsung/Dev-i2c0.c中的代码,可以知道:
里面包含的内容有
在arch/arm/plat-samsuang/mach-s3c2440/mach-smdk2440.c,其中包含的内容有
其中_initdata函数的功能是设置设备的初始化参数,比方说LCD设备的屏幕大小,类型等等。
smdk2440_machine_init函数的作用是添加设备,所以移植驱动的时候需要在这里加上内容 ,例如;
在Drivers/i2c/ic-core.h (核心层)
在Drivers/i2c/i2c-core.c (核心层)
在Drivers/i2c-dev.c (底层)
在Drivers/boardinfo.c (底层,板极信息一般代表的是内容)
在Drivers/buses/下是具体设备的驱动 例如:i2c-gpio.c
当然这个驱动很简单啦,呵呵。