如何在Linux用户态开发驱动

如何在Linux用户态开发驱动
用户态的驱动应用场景主要是以下几种,如果有其他的,希望各位朋友拍砖

1、功能基本集中在芯片,驱动主要做控制芯片用途的

2、加速器,功能独立,无需内核调度的

用户态驱动最大的好处就是代码灵活,可以自己定自己的代码架构。不好的地方也就是内核无法识别设备,还有中断处理需要用到内核部分无法全部。
 安信接Windows驱动开发外包

常用的用户态的驱动开发

1、打开devmem 后,使用MMAP映射出芯片物理地址对应的虚拟地址,在用户态访问虚拟地址加偏移就能访问到芯片的寄存器;

2、采用UIO方式,在内核态映射地址后,在用户态通过打开devuioxxx 方式,再使用MMAP映射一次,就可采用跟方式1 相同的方式访问芯片reg或是memory

这两种方式各有优缺点

方式1:优点是实现简单,如果不需要用到中断,可以不用管内核态的内容,关注用户态代码就好。缺点是代码运行的进程要有root权限,不然无法访问devmem,如果要使用中断还是会涉及到内核态的驱动;

方式2:优点是无需要root权限,中断可以直接在用户态获取。缺点是必须要在内核态做初始化;

笔者这里主要总结了平时工作中常用的用户态Linux驱动开发方法,可能还有些更方便的方法目前还未用到,也请多多交流指教。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值