[发明专利]基于用户模式多任务下控制硬件设备的方法及其装置有效
申请号: | 201210143390.9 | 申请日: | 2012-05-09 |
公开(公告)号: | CN102693159A | 公开(公告)日: | 2012-09-26 |
发明(设计)人: | 王建;孙明勇 | 申请(专利权)人: | 上海晨思电子科技有限公司;晨星半导体股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 深圳市威世博知识产权代理事务所(普通合伙) 44280 | 代理人: | 何青瓦 |
地址: | 200120 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 用户 模式 任务 控制 硬件 设备 方法 及其 装置 | ||
技术领域
本发明涉及计算机技术领域,特别是涉及基于用户模式多任务下驱动器控制硬件设备的方法及其装置。
背景技术
Unix系统如Linux下的程序都可以工作在两种模式下:用户模式(User Mode)以及内核模式(Kernel Mode)。
用户模式:一个在用户模式下运行的程序,只能受限制地访问部分系统资源,不能直接访问内核(Kernel)数据结构,不能直接与内核程序交互。
内核模式:一个在内核模式下运行的程序,可以执行任何CPU指令,访问4G【以32位中央处理器CPU(Central Processing Unit)为例】存储空间的任意位置,也可以直接访问内核数据结构或程序。
驱动器是指通过某个文件系统格式化并带有一个驱动器号的存储区域。驱动器在整个控制环节中,正好处于主控制箱(Main Controller)以及马达(Motor)的中间环节,它的主要功能是接收来自主控制箱的信号,然后将信号进行处理再转移至马达以及和马达有关的感应器,并且将马达的工作情况反馈至主控制箱。
为了实现多任务下的硬件设备及数据共享,主流的Linux驱动器(Driver)都是工作在内核模式下的,但这样会导致产生至少以下几个缺陷:
第一,由于驱动器做在了Linux内核里面,难以回避通用公共许可证(GPL license)传染,并且必须公开自己的源代码(Source Code),这在某些商用领域是很难接受的。
第二,应用程序需要频繁地出入内核模式,对一些功能复杂的硬件设备,例如:图形处理显示器频繁地出入内核,将带来巨大的系统开销,直接导致整个系统性能的下降。
第三,在内核模式下的驱动器,一旦某个程序访问拥堵通常会造成整个系统运行的拥堵,即便这个程序访问拥堵只是由某一个进程(Process)的错误造成的。而在用户模式下驱动器某个程序访问拥堵通常只会导致使用它的那一个进程拥堵,不会影响到系统及其它进程。
第四,硬件设备调试很不方便,特别是对一些需要经常访问硬件设备寄存器(Register)的情况,更是如此。
现行已有的某些基于用户模式的驱动器,也只能应用在一些相对简单的硬件设备上,无法做到在多任务环境下,应用程序随机、安全地对硬件设备进行访问。
发明内容
本发明主要解决的技术问题是提供一种基于用户模式多任务下驱动器控制硬件设备的方法及其装置,能够大幅提升访问复杂硬件设备时驱动器的性能,又能很好地实现在多任务环境下对硬件设备的随机安全访问。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于用户模式多任务下驱动器控制硬件设备的方法,包括:在用户模式下接收需要访问硬件设备的进程访问该硬件设备的请求,该请求中含有所述需要访问硬件设备的进程的标识(ID);判断所述需要访问硬件设备的进程是否获取了访问该硬件设备的互斥锁;若所述需要访问硬件设备的进程获取了访问该硬件设备的互斥锁,则判断所述需要访问硬件设备的进程的ID与最近一次访问该硬件设备的进程的ID是否相同;若所述需要访问硬件设备的进程的ID与最近一次访问该硬件设备的进程的ID不相同,则在所述需要访问硬件设备的进程和最近一次访问该硬件设备的进程之间进行上下文切换,使得所述需要访问硬件设备的进程使用该硬件设备。
其中,还包括:从已保存的所述需要访问硬件设备的进程的进程镜像文件读出寄存器和I/O状态数据或上述两者之一,并将其写入该硬件设备,该硬件设备恢复为所述需要访问硬件设备的进程的配置。
其中,所述进程镜像文件是指用户模式下驱动器的进程镜像中的文件,该文件用于保存该硬件设备寄存器和I/O状态数据或上述两者之一且为每个进程所独享的数据。
其中,还包括:若所述需要访问硬件设备的进程获取了访问该硬件设备的互斥锁,判断所述需要访问硬件设备的线程的ID与已经获得该互斥锁的线程的ID是否相同;若与已经获得该互斥锁的线程的ID相同,则将互斥锁计数器的值加1,并且所述需要访问硬件设备的线程继续使用该硬件设备;若与已经获得该互斥锁的线程的ID不相同,则所述需要访问硬件设备的线程等待,直到获得该互斥锁。
其中,还包括:若所述需要访问硬件设备的进程的ID与最近一次访问该硬件设备的进程的ID相同,则所述需要访问硬件设备的进程继续使用该硬件设备。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海晨思电子科技有限公司;晨星半导体股份有限公司,未经上海晨思电子科技有限公司;晨星半导体股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210143390.9/2.html,转载请声明来源钻瓜专利网。