导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux用户态开发驱动方法问题。如何在Linux用户模式下开发驱动?用户驱动的应用场景
音频解说
大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux用户态开发驱动方法问题。
如何在Linux用户模式下开发驱动?
用户驱动的应用场景主要有以下几种。如果还有其他场景,希望大家拍砖。
1.功能基本集中在芯片上,驱动主要用来控制芯片。
2.加速器,功能独立,无内核调度。
用户模式驱动最大的优点是代码灵活,可以自行决定代码架构。缺点是内核无法识别设备,内核无法用于中断处理。
安信与Windows驱动开发外包相连。
通用用户模式驱动程序开发。
1.打开devmem后,用MMAP映射芯片物理地址对应的虚拟地址,在用户模式下通过给虚拟地址加偏移量来访问芯片的寄存器;
2.在UIO模式下,在内核模式下映射地址后,在用户模式下,通过打开devuioxxx模式并使用MMAP映射一次,可以以与模式1相同的方式访问芯片寄存器或存储器。
两种方法各有利弊。
模式一:优点是容易实现。如果不需要中断,可以忽略内核模式的内容,关注用户模式代码。缺点是代码运行的进程必须有根权限,否则无法访问devmem,如果使用中断,内核驱动程序仍然会涉及。
模式2:优点是不需要root权限,在用户模式下可以直接获得中断。缺点是初始化必须在内核模式下完成。
本文主要总结了日常工作中常用的用户模式Linux驱动的开发方法,可能还有一些比较方便的方法还没有用到,请大家交流和建议。
编辑:tzh。