linux驱动开发一般流程

首先,我们要考虑到作为驱动工程师要做的是拜托单片机开发的思路,在单板开发(没有OS)过程,设备的驱动接口直接交给了上层,驱动和应用互为平等。在有OS的系统中,驱动独立于硬件平台之外,应用工程师通过虚拟文件系统的read write对具体的IO进行操作

一般流程分为4步

1:我们首先要确定硬件平台接线,然后确定该设备接口,比如一般的IIC SPI USB USART 等接口

2:一般的发行版内核都有通用对应接口的驱动,我们将该文件稍加修改即可,比如内核中带有IIC接口

    AT24C02的存储芯片的驱动,我们现在要做SX8650的驱动(IIC),我们首先可以将该文件复制,然后

    可以分析,这两款IC无非是读取寄存器的方法不一样,所以我们首先需要修改对应的IIC速率,对应的IO接口配               置方式,对应内存地址分配,对应的寄存器读写方法API等

3.内核驱动有两种方式加载,一种是以模块的方式动态加载(驱动开发初期推荐),一种是直接编译入内核

4.修改对应目录下的Kconfig和Makefile

makefile和Kconfig的一般解释:

a、在kconfig中增加(假设对应的驱动为LED)

config LED_ARM9//配置选项,在menconfig时显示

tristate(bool二选一) "lfy config the led"   //bool和tristate的区别是一个是是否变异如内核,一个是三选一,是否编译入内核,模块编译入内核

depends on ARCH_S3C2410|XXX|AAA|BBB        //配置有效先决条件是该平台已被选中

help

this is led driver design by lfy

b、在makefile中增加

     obj-$(LED_ARM9)+=led.o //此处注意两点,第一点LED_ARM9一定要与kconfig名称一一对应,第二点就是     led.o为你编译驱动后的输出文件,此句话的意思就是如果LED_ARM9被配置,则此句简化为obj-y或者obj-     m,取决与你配置内核选择的是编译入内核还是已模块方式编译入内核

  对于单驱动文件可以使用上述makefile的规则,如果一个驱动对应多个输出文件则需要适当修改makefile

 obj-$(LED_ARM9)+=led.o

obj-y :=led.o a.o b.o c.o



  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值