[发明专利]一种嵌入式Linux下用户态驱动程序的实现方法在审
申请号: | 201310565007.3 | 申请日: | 2013-11-14 |
公开(公告)号: | CN103593189A | 公开(公告)日: | 2014-02-19 |
发明(设计)人: | 周兰江;黄银阁 | 申请(专利权)人: | 昆明理工大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/445 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 650093 云*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 linux 用户 驱动程序 实现 方法 | ||
技术领域
本发明涉及一种嵌入式Linux下用户态驱动程序的实现方法,尤其是嵌入式Linux系统下的驱动程序的加固,具体地说是在保证性能以及与现有系统兼容的前提下在嵌入式Linux系统中实现用户态驱动程序的方法,属于嵌入式操作系统技术领域。
背景技术
随着计算机技术与通信技术的迅猛发展,嵌入式系统已经渗透到人们生活的各个方面,在工业控制、航天军工、医疗卫生、消费电子等领域,嵌入式系统都有着广泛的应用。而在各大嵌入式操作系统中,Linux以其开放源代码、较好的网络性能、精简高效的内核、较高的可定制性、支持多种体系结构等特性,广泛地应用于嵌入式领域。
在嵌入式领域,可靠性被提高到了最重要的位置。而操作系统中,驱动程序是影响系统可靠性的最大隐患。来自微软公司的报告显示,89%导致windows XP系统崩溃的源头来自驱动程序。一项针对Linux内核的研究也显示驱动程序出现BUG的几率比内核中其它部分的代码高出2-7倍。
在嵌入式Linux系统中,为了兼顾性能和I/O指令的特权操作要求,传统的驱动程序是运行在内核态,拥有内核的所有权限,一旦驱动程序出现BUG,将会导致整个系统崩溃。在提高系统可靠性方面,目前已有的研究,都专注于通过把有错误的设备驱动程序与内核隔离。然而,这些研究都忽略了驱动程序可靠性问题中最重要的一个方面:在内核态编程要比在用户态编程要困难得多,由于难以调试,因此也更容易出现未知的bug,导致系统可靠性下降。将驱动程序移出内核被认为是这一问题很好的解决方案之一。
目前已有的用户态驱动解决方案,主要存在两个问题。第一,由于现有的驱动/内核接口的限制,用户态驱动程序执行时需要频繁地在用户态以及内核态切换并移动大量数据,这导致了明显的性能低下,难以满足实际系统的需求。第二,要实现用户态驱动程序的高性能,就需要完全重写现有的驱动程序,这就导致每一个这样的系统中的驱动程序都是单独实现,无法实现通用,更无法与现有的系统相兼容。
发明内容
本发明要解决的技术问题是提供一种在嵌入式Linux系统中实现用户态驱动程序的方法,用以解决现有用户态驱动解决方案中存在的性能低下以及与现有系统的兼容性问题。
本发明的技术方案是:
一种嵌入式Linux下用户态驱动程序的实现方法:
首先,分离传统的内核态驱动程序。将传统的内核态驱动程序依据性能相关与否以及优先级,分离为运行于内核态的k-driver和运行于用户态的u-driver两个部分。
所述的k-driver,包括性能相关的热点代码和数据通道,例如输入/输出、中断处理函数、一些高优先级函数(软中断、tasklet和工作队列)等。k-driver以Linux的可加载动态模块(Loadable Kernel Module )的方式运行于内核态,以保证高性能。
所述的u-driver,包括驱动程序中一些与性能无关的非关键操作以及一些优先级较低的代码,例如设备初始化、设备配置、设备控制、错误处理等。u-driver以一个普通进程的形式运行于用户态,以保证充分的故障隔离。
所述的u-driver,通过对/dev/mem的访问,使用mmap()系统调用将设备寄存器或端口映射到用户空间。这样,u-driver就可以在用户态直接访问硬件的寄存器或输入输出端口。
其次,当一个传统的内核态驱动程序被转换为一个k-driver和一个u-driver,这两个组件需要通信和共享数据。提供这一服务的是运行于内核态的k-mod以及运行于用户态的u-lib。
所述的k-mod,注册为一个设备驱动程序并实现了字符设备接口用来与u-lib通信。它实现的功能包括与u-driver进行通信、追踪k-driver与u-driver间共享的数据结构等。
所述的u-lib,被实现为一个链接到u-driver的多线程库,它面向u-driver的接口与k-mod面向内核的接口类似。它实现的功能包括请求k-driver提供服务、执行来自k-mod的函数调用请求等。
所述的k-mod和u-lib共同提供了k-driver和u-driver之间的通信,使得k-driver可以调用u-driver中的函数,u-driver同样能够调用k-driver中的函数。它们还跟踪k-driver和u-driver两个模块的共享变量或全局数据,任何一方对数据的改变都要通知另一方,保证两者数据的同步。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于昆明理工大学,未经昆明理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310565007.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:视频播放方法与视频播放电子系统
- 下一篇:车削设备