linux驱动开发

1 第一代


    首先使用ioremap将寄存器的物理地址,转换成虚地址,这样CPU才会操作实际的寄存器
    使用readl这样的函数控制配置寄存器
    register_chrdev注册驱动设备,包括 file_operations
    在命令行使用 加载驱动,创建节点文件
    depmod 
    modprobe led.ko
    mknod /dev/led c 200 0
    使用./ledApp /dev/led 1调用用户app来控制驱动

2 第二代,

主要解决需要用命令行来创建节点文件时候,带来的不便,还有就是之前方法是需要提前知道主设备号,

3 第三代 采用设备树方法

4 采用pinctrl是为了把设备树中,fsl,pins这种配置io语法执行,得到默认的io配置,gpio子系统能完成更多的事情

linux中 中断上部实现简单,直接编写对应程序,而下半部需要使用软中断,tasklet,工作队列机制实现,这里推荐用tasklet(不可睡眠),工作队列(可等待资源,意思是可睡眠)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值