ITPub博客

首页 > 应用开发 > IT综合 > 如何在Linux用户态开发驱动

如何在Linux用户态开发驱动

原创 IT综合 作者:安信实验室 时间:2021-07-12 15:37:13 0 删除 编辑

如何在 Linux 用户态开发驱动

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

 

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

 

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

 

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

 安信接Windows驱动开发外包

 

常用的用户态的驱动开发

 

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

 

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

 

这两种方式各有优缺点

 

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

 

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

 

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946382/viewspace-2780873/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
我们是一家偏软件性测试服务类企业。我们每年跟上千家 企业合作。我们的四大块业务: 1.微软徽标认证 2.谷歌认证 3.眼图测试 4.驱动数字签名服务 我们坚持以客户为中心,快速响应客户需求,持续为客户 创造长期价值进而成就客户。信i0720888

注册时间:2019-08-23

  • 博文量
    47
  • 访问量
    34870