一种实现驱动的系统及方法与流程

文档序号:17661098发布日期:2019-05-15 22:23阅读:241来源:国知局
一种实现驱动的系统及方法与流程

本申请涉及但不限于计算机技术,尤指一种实现驱动的系统及方法。



背景技术:

目前,在驱动的实现中,以linux内核(linuxkernel)中实现用户空间的输入/输出接口(uio)驱动为例,uio的用户空间(userspace)实现了mmap(),用于处理设备内存的映射。如果uio的驱动程序在用户空间要等待一个中断,需要简单的阻塞在/dev/uiox的读read()操作上,uio驱动的内核空间(kernelspace)仍需要设置中断处理函数,这样,当设备产生中断时,内核空间应答中断,中断计算器加1,read()操作立即返回。另外,uio的驱动程序实现了poll()系统调用,可以使用select()函数来等待中断的发生。注册的uio设备将会出现在/sys/class/uiox下,对设备的控制可以通过对/sys/class/uiox下的各文件读写来完成。

从相关技术中在linux内核中实现用户空间的uio驱动的方案来看,一方面,一部分驱动程序仍然运行在内核空间,因此,是无法以安全应用(ta,trustedapplication)的方式对用户空间的驱动进行开发集成的,也就无法使用可信应用管理(tam)程序进行动态安装、升级。另一方面,需要驱动程序的开发者显示的调用mmap()、驱动注册等函数,增加了设计的复杂度,不适合在小型的操作系统(os,operationsystem)中使用,而且sysfs中的信息存在安全泄漏问题,不适合在可信执行环境(tee)中使用;再者,用户空间等待一个中断需要等待(wait)在设备的读操作上,与原有非uio驱动程序的开发行为不统一,对于初始开发者,无疑增加了理解复杂度。



技术实现要素:

为了解决上述技术问题,本发明提供一种实现驱动的系统及方法,能够实现以ta的方式对用户的驱动程序进行管理,而且能够很大程度上减轻程序开发的复杂度。

为了达到本发明目的,本发明提供了一种实现驱动的系统,包括:用户空间和内核空间,其中,用户空间中设置有:第一可信执行环境内部应用程序编程接口、安全应用,以及驱动程序;内核空间中设置有:第二可信执行环境内部应用程序编程接口、可信执行环境框架,以及安全操作系统;其中,

所述驱动程序中配置有驱动所述安全应用的属性;

所述第一可信执行环境内部应用程序编程接口与所述第二可信执行环境内部应用程序编程接口,用于实现用户空间内部、内核空间内部,以及用户空间与内核空间之间的相互调用;

所述可信执行环境框架,基于所述安全操作系统,在加载所述驱动程序时,解析驱动所述安全应用的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间中的至少一个功能。

可选地,所述内核空间中还设置有:用户空间驱动框架;

所述可信执行环境框架还用于:在需要注册用户空间驱动的中断时,为该中断需要响应的驱动程序建立一个单独的中断处理线程;

用户空间驱动框架,用于保存所述可信执行环境框架建立的中断处理线程、用户空间中中断处理函数和该中断的中断号的对应关系,被所述第二可信执行环境内部应用程序编程接口调用注册用户空间驱动设备通用的中断处理函数;当有中断产生时,用户空间驱动框架调用通用的中断处理函数,根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

本申请还提供了一种实现驱动的方法,包括:

内核空间加载驱动程序时,解析驱动安全应用的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能,其中,所述驱动安全应用的属性在用户空间配置。

可选地,所述方法还包括:

在需要注册用户空间驱动的中断时,所述内核空间为该中断需要响应的驱动程序建立一个单独的中断处理线程;

所述内核空间保存建立的中断处理线程、所述用户空间中中断处理函数和该所述注册的中断的中断号的对应关系,注册所述用户空间驱动设备通用的中断处理函数;

当有中断产生时,所述内核空间调用通用的中断处理函数,根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

本申请又提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一项所述的实现驱动的方法。

本申请再提供了一种用于实现驱动的装置,包括存储器和处理器,其中,存储器中存储有以下可被处理器执行的指令:内核空间加载驱动程序时,解析驱动安全应用的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能,其中,所述驱动安全应用的属性在用户空间配置。

可选地,所述存储器中还存储有以下可被处理器执行的指令:

在需要注册用户空间驱动的中断时,所述内核空间为该中断需要响应的驱动程序建立一个单独的中断处理线程;所述内核空间保存建立的中断处理线程、所述用户空间中中断处理函数和所述注册的中断的中断号的对应关系,注册所述用户空间驱动设备通用的中断处理函数;当有中断产生时,所述内核空间调用通用的中断处理函数,根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

本申请技术方案至少包括:在用户空间配置驱动ta的属性;内核空间加载驱动程序时,解析驱动ta的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能。通过本申请提供的方案,驱动程序的代码均在用户空间,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。而且,不需要使用sysfs记录用户空间驱动的内存映射等信息,所有的用户空间的驱动信息都只在驱动的ta中和tee动态运行的内存中,因此不会造成信息泄露,保证了驱动程序的安全性。

可选地,本申请还包括:在注册用户空间驱动的中断时,内核空间为该中断需要响应的驱动的ta建立一个单独的中断处理线程;内核空间保存建立的中断处理线程、用户空间中中断处理函数和该注册的中断的中断号的对应关系注册用户空间驱动设备通用的中断处理函数;当有中断产生时,内核空间调用通用的中断处理函数,根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。本申请提供的实现驱动的方案中,一方面,中断驱动程序的代码均在用户空间,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。另一方面,中断注册仍可以采用调用中断注册api的方案,因此,用户无需感知内部处理流程;只需利用单独高优先级线程处理中断,这样,最大程度上保证了中断响应的及时性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为本申请实现驱动的系统的组成示意图;

图2为本申请实现驱动的方法的流程图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在本申请一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

可信执行环境(tee)通过硬件的隔离,可确保在一个孤立、可信的环境中存储、处理和保护敏感数据。tee广泛用于各种安全应用,如支付、指纹和数字版权保护(drm)等。tee在用户空间实现驱动程序,能够满足更高安全级别的要求,同时,用户的驱动程序可以以运行在tee内部的安全应用(ta,trustedapplication)的方式进行开发集成和管理。

图1为本申请实现驱动的系统的组成示意图,如图1所示,包括用户空间和内核空间,其中,用户空间中至少设置有:第一tee内部(internal)应用程序编程接口(api,applicationprogramminginterface)、安全应用(ta,trustedapplication),以及驱动程序如驱动ta(driverta);内核空间中至少设置有:第二teeinternalapi、tee框架(framework),以及安全操作系统(secureos);其中,

第一teeinternalapi与第二teeinternalapi,用于实现用户空间内部、内核空间内部,以及用户空间与内核空间之间的相互调用。比如:ta调用第一teeinternalap、用户空间的第一teeinternalapi通过sysycall调用内核空间的第二teeinternalapi,这样,第二teeinternalapi才能调用内核空间的其他模块的接口,具体实现术语本领域技术人员的公知技术,并不用于限定本发明的保护范围。

驱动ta中配置有驱动ta的属性,比如:驱动的名称、需要映射的物理地址和对应的虚拟地址等。

配置方式与普通ta的属性配置方式类似。这些属性在编译的时候,会被放在一个特殊的段里。

驱动ta包括一个或一个以上,一个第三方的ta可以对应一个驱动ta。

tee框架,基于安全os,在加载驱动程序时,解析驱动ta的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能。

本申请提供的实现驱动的架构中,驱动程序的代码均在用户空间的驱动ta,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。而且,不需要使用sysfs记录用户空间驱动的内存映射等信息,所有的用户空间的驱动信息都只在驱动的ta中和tee动态运行的内存中,因此不会造成信息泄露,保证了驱动程序的安全性。

通过本申请提供的实现驱动的架构,不需要驱动的开发者显示的调用mmap()、驱动的注册等相关函数,只需要简单地配置驱动ta的属性,而与普通ta的开发方式尽量保持了一致,这样,减少了第三方驱动开发者的工作量;而且,也不需要sysfs的参与,实现了无驱动信息泄漏的隐患,保证了驱动程序的安全性。第三方的驱动已ta的方式集成到tee中,因此,实现了采用tam的方式动态的更新,减少了驱动程序集成成本。

可选地,内核空间中还设置有:用户空间驱动程序框架(userspacedriverframework);相应地,

tee框架还用于:在外部如驱动的开发者需要注册用户空间驱动的中断时,为该中断需要响应的驱动的ta建立一个单独的中断处理线程;

用户空间驱动程序框架,用于保存tee框架建立的中断处理线程、用户空间中中断处理函数和该注册的中断的中断号的对应关系,被tee内核空间的第二teeinternalapi调用注册用户空间驱动设备通用的中断处理函数;当有中断产生时,先调用通用的中断处理函数,再根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

这样,中断处理线程会切换到驱动用户空间的中断处理函数并处理中断。

本申请提供的实现驱动的系统中,中断驱动程序的代码均在用户空间的驱动ta,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。

通过本申请提供的实现驱动的系统,中断注册仍可以采用调用中断注册api的方案,因此,用户无需感知内部处理流程;当有中断产生时,只需利用单独高优先级线程处理该中断,这样,最大程度上保证了中断响应的及时性。

也就是说,通过本申请提供的实现驱动的系统,不需要驱动程序的开发者感知内存映射、注册驱动、用户空间响应中断需要等待在设备读操作上等操作,在本申请提供的实现驱动的系统中,内存的映射、驱动注册只需简单的配置驱动的属性,而中断仍采用调用中断注册函数的方式,与相关技术中在内核空间开发驱动的方案保持一致,这样极大地减小了驱动开发的复杂性。

图2为本申请实现驱动的方法的流程图,如图2所示,包括:

步骤200:在用户空间配置驱动ta的属性。

可选地,属性包括但不限于:驱动的名称、需要映射的物理地址和对应的虚拟地址等。

配置方式与普通ta的属性配置方式类似。这些属性在编译的时候,会被放在一个特殊的段里。

驱动ta包括一个或一个以上,一个第三方的ta可以对应一个驱动ta。

步骤201:基于安全os,内核空间加载驱动程序时,解析驱动ta的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能。

本申请提供的实现驱动的方法中,驱动程序的代码均在用户空间的驱动ta,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。而且,不需要使用sysfs记录用户空间驱动的内存映射等信息,所有的用户空间的驱动信息都只在驱动的ta中和tee动态运行的内存中,因此不会造成信息泄露,保证了驱动程序的安全性。

通过本申请提供的实现驱动的方法,不需要驱动的开发者显示的调用mmap()、驱动的注册等相关函数,只需要简单地配置驱动ta的属性,而与普通ta的开发方式尽量保持了一致,这样,减少了第三方驱动开发者的工作量;而且,也不需要sysfs的参与,实现了无驱动信息泄漏的隐患,保证了驱动程序的安全性。第三方的驱动已ta的方式集成到tee中,因此,实现了采用tam的方式动态的更新,减少了驱动程序集成成本。

本申请实现驱动的方法还包括:

在需要注册用户空间驱动的中断时,内核空间为该中断需要响应的驱动的ta建立一个单独的中断处理线程;

内核空间保存建立的中断处理线程、用户空间中中断处理函数和该注册的中断的中断号的对应关系,注册用户空间驱动设备通用的中断处理函数;

当有中断产生时,内核空间调用通用的中断处理函数,根据对应关系中与产生的中断对应的中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

这样,中断处理线程会切换到驱动用户空间的中断处理函数并处理中断。

本申请提供的实现驱动的方法中,中断驱动程序的代码均在用户空间的驱动ta,不需要再与os进行集成处理,完全实现了以ta的形式对用户的驱动程序进行开发集成和管理。

通过本申请提供的实现驱动的方法,中断注册仍可以采用调用中断注册api的方案,因此,用户无需感知内部处理流程;当有中断产生时,只需利用单独高优先级线程处理该中断,这样,最大程度上保证了中断响应的及时性。

也就是说,通过本申请提供的实现驱动的方法,不需要驱动程序的开发者感知内存映射、注册驱动、用户空间响应中断需要等待在设备读操作上等操作,在本申请提供的实现驱动的架构中,内存的映射、驱动注册只需简单的配置驱动的属性,而中断仍采用调用中断注册函数的方式,与相关技术中在内核空间开发驱动的方案保持一致,这样极大地减小了驱动开发的复杂性。

在实际的应用中,为了保证安全性,有很多的驱动程序是需要配置成只有tee才可以访问的,比如加密引擎,这种情况下,需要在tee中集成这些驱动程序。利用本申请提供的实现驱动的架构及方法,在高安全级别的需求下,这些第三方的驱动程序会集成在用户空间,这样,第三方的驱动程序的错误(bug)不会导致tee有bug而受人攻击;驱动程序崩溃(crash)时也不会导致整个tee崩溃,方便了驱动程序的开发者开发和调试。同时,利用本申请提供的实现驱动的架构及方法,以ta的方式集成驱动程序,既方便了驱动程序的开发集成,又方便了使用tam进行驱动的动态安装、删除、更新等操作。

本申请还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一项所述的实现驱动的方法。

本申请还提供一种用于实现驱动的装置,包括存储器和处理器,其中,存储器中存储有以下可被处理器执行的指令:内核空间加载ta时,解析驱动ta的属性,以完成分配资源、注册驱动、将设备物理地址映射到对应的虚拟地址空间上中的至少一个功能,其中,所述驱动安全应用的属性在用户空间配置。

可选地,所述存储器中还存储有以下可被处理器执行的指令:

在注册用户空间驱动的中断时,所述内核空间为该中断需要响应的驱动的ta建立一个单独的中断处理线程;所述内核空间保存建立的中断处理线程,驱动所述用户空间中中断处理函数和该中断的中断号的对应关系,注册所述用户空间驱动设备通用的中断处理函数;当有中断产生时,所述内核空间根据中断号唤醒对应的中断处理线程,将驱动用户空间中断处理函数的入口地址传给唤醒的中断处理线程。

虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1