CN107329892B - 驱动测试方法、装置、存储介质及其计算机设备 - Google Patents

驱动测试方法、装置、存储介质及其计算机设备 Download PDF

Info

Publication number
CN107329892B
CN107329892B CN201710422966.8A CN201710422966A CN107329892B CN 107329892 B CN107329892 B CN 107329892B CN 201710422966 A CN201710422966 A CN 201710422966A CN 107329892 B CN107329892 B CN 107329892B
Authority
CN
China
Prior art keywords
space
mapping
peripheral controller
soc
soc peripheral
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710422966.8A
Other languages
English (en)
Other versions
CN107329892A (zh
Inventor
曹志龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Jieli Technology Co Ltd
Original Assignee
Zhuhai Jieli Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Jieli Technology Co Ltd filed Critical Zhuhai Jieli Technology Co Ltd
Priority to CN201710422966.8A priority Critical patent/CN107329892B/zh
Publication of CN107329892A publication Critical patent/CN107329892A/zh
Application granted granted Critical
Publication of CN107329892B publication Critical patent/CN107329892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Abstract

本发明提供一种驱动测试方法、装置、存储介质及其计算机设备,其具体用于对Linux系统应用层操作SoC外设控制器进行驱动测试,激活驱动设备节点,在Linux系统内核中申请物理内存空间,记录为缓冲空间,将所述缓冲空间映射到用户空间,记录为映射空间,赋值SoC外设控制器初始化值,将已赋的数值刷到所述SoC外设控制器中,启动所述SoC外设控制器,循环动态修改所述映射空间中的数据,查看驱动测试结果。整个过程中,直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。

Description

驱动测试方法、装置、存储介质及其计算机设备
技术领域
本发明涉及计算机技术领域,特别是涉及驱动测试方法、装置、存储介质及其计算机设备。
背景技术
Linux系统操作系统具有自由开放、内核功能强大、对硬件资源要求低且支持多平台、开发人员多等特点,因此Linux系统操作系统现在已经在服务器、桌面、嵌入式等领域获得了长足的发展,被业界认为是未来最有前途的操作系统之一。
Linux系统下,一般的控制器驱动测试方法,需要在Linux系统应用层根据内核中的驱动架构编写相应的应用程序来测试驱动程序,但是,当发现硬件驱动编写有误,特别是硬件控制器的值写错后,在修改完内核驱动后,需要重新编译Linux系统内核,再将Linux系统内核及应用程序加载到嵌入式设备上,即使,采用动态加载内核模块的方式,还是得重新编译并加载内核驱动程序,这种SoC(System on Chip,片上系统)外设控制器的驱动测试方法效率低且复杂。
发明内容
基于此,有必要针对一般SoC外设控制器的驱动测试方法效率低的问题,提供一种高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试的方法、装置、存储介质及其计算机设备。
一种驱动测试方法,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,包括步骤:
激活驱动设备节点;
在Linux系统内核中申请物理内存空间,记录为缓冲空间;
将缓冲空间映射到用户空间,记录为映射空间;
对映射空间赋SoC外设控制器初始化值;
将映射空间中的值刷到SoC外设控制器中;
启动SoC外设控制器,根据预设测试要求,循环动态修改映射空间中的数据,查看驱动测试结果。
一种驱动测试装置,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,包括:
启动模块,用于激活驱动设备节点;
空间申请模块,用于在Linux系统内核中申请物理内存空间,记录为缓冲空间;
映射模块,用于将缓冲空间映射到用户空间,记录为映射空间;
第一赋值模块,用于对映射空间赋SoC外设控制器初始化值;
第二赋值模块,用于将映射空间中的值刷到SoC外设控制器中;
驱动测试模块,用于启动SoC外设控制器,根据预设测试要求,循环动态修改映射空间中的数据,查看驱动测试结果。
本发明驱动测试方法与装置,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,激活驱动设备节点,在Linux系统内核中申请物理内存空间,记录为缓冲空间,将缓冲空间映射到用户空间,记录为映射空间,赋值SoC外设控制器初始化值,将已赋的数值刷到SoC外设控制器中,启动SoC外设控制器,循环动态修改映射空间中的数据,查看驱动测试结果。整个过程中,直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
另,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述方法的步骤。其中,驱动测试方法直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
另,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上述方法的步骤。其中,驱动测试方法直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
附图说明
图1为本发明驱动测试方法第一个实施例的流程示意图;
图2为本发明驱动测试方法第二个实施例的流程示意图;
图3为本发明驱动测试方法其中一个应用实例的流程示意图;
图4为本发明驱动测试方法其中一个应用实例的流程示意图;
图5为本发明驱动测试装置第一个实施例的结构示意图;
图6为本发明驱动测试装置第二个实施例的结构示意图。
具体实施方式
如图1所示,一种驱动测试方法,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,包括步骤:
S100:激活驱动设备节点。
Linux系统将所有的设备都归类为字符设备、块设备及网络设备。普通的字符设备驱动算是Linux系统内核中最简单的驱动,因此,非必要的,在这里可以选择采用Linux系统普通的字符设备驱动架构,即步骤S100具体可以为:激活Linux系统中字符设备驱动程序,以激活字符设备。更进一步的,还可以判断驱动设备节点是否已经成功激活,若已经成功激活,则进入步骤S200,若未成功激活,则终止本轮驱动测试。
S200:在Linux系统内核中申请物理内存空间,记录为缓冲空间。
Linux系统内核设置有一定大小的物理内存空间,在这里,在Linux系统内核中申请物理内存空间,将该申请的物理内存空间记录为缓冲(buffer)空间。非必要的,可以通过Linux系统提供的ioctl函数(ioctl函数是设备驱动程序中对设备的I/O通道进行管理的函数)控制字符设备驱动申请确定大小的物理内存空间——buffer。更进一步,在步骤S200之后还可以判断本次物理内存空间是否申请成功,若申请成功,则进入步骤S300,若申请失败,则选择重新申请,或,终止本轮驱动测试。
S300:将缓冲空间映射到用户空间,记录为映射空间。
将步骤S200申请的缓冲空间映射到用户空间,为便于说明将这部分空间记录为映射空间,需要理解的是,映射空间实质任属于用户空间,其仅是为了便于行文描述所采用的一个名词。下面将采用实例,详细说明在Linux系统中内核空间与用户空间的区别以及关系。Linux系统驱动程序一般工作在内核空间,但也可以工作在用户空间。下面将详细解析,什么是内核空间,什么是用户空间,以及如何判断。Linux系统简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux系统的虚拟地址空间也为0~4G。Linux系统内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux系统内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。Linux系统使用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB字节虚拟内核空间则为所有进程以及内核所共享。内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。虽然内核空间占据了每个虚拟空间中的最高1GB字节,但映射到物理内存却总是从最低地址(0x00000000)开始。对内核空间来说,其地址映射是很简单的线性映射,0xC0000000就是物理地址与线性地址之间的位移量。非必要的,可以通过mmap系统调用映射内核申请的缓冲空间到用户空间。
S400:对映射空间赋SoC外设控制器初始化值。
SoC外设控制器初始化值是SoC预先设定的数值,在步骤S300映射的缓冲空间中赋上该SoC外设控制器初始化值。具体来说,在应用层,按照SoC外设控制器与映射空间的对应关系,给缓冲空间填写相应寄存器的初始化值。SoC外设控制器必须被正确初始化后才能开始正常工作,SoC外设控制器的初始化工作就是赋初始值。
S500:将映射空间中的值刷到SoC外设控制器中。
再将映射空间中的值刷到SoC外设控制器中。需要指出的是,初始的时候映射空间中的值为SoC外设控制器初始化值,在后续驱动测试过程中,映射空间中的值是会改变的,因此,步骤S500应当理解为个伴随驱动测试持续进行的动作。非必要的,可以通过ioctl系统调用控制内核驱动程序将缓冲空间中的值刷到外设控制器中。
S600:启动SoC外设控制器,根据预设测试要求,循环动态修改映射空间中的数据,查看驱动测试结果。
启动SoC外设控制器,循环动态修改改映射空间中的数据,即最终修改SoC外设控制器数据,查看驱动测试结果。具体来说,可以通过ioctl系统调用控制内核驱动程序启动外设控制器,循环动态修改映射空间的中的值,查看驱动测试结果。
本发明驱动测试方法,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,激活驱动设备节点,在Linux系统内核中申请物理内存空间,记录为缓冲空间,将缓冲空间映射到用户空间,记录为映射空间,赋值SoC外设控制器初始化值,将已赋的数值刷到SoC外设控制器中,启动SoC外设控制器,循环动态修改映射空间中的数据,查看驱动测试结果。整个过程中,直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
在其中一个实施例中,将映射空间中的值刷到SoC外设控制器中的步骤包括:
在SoC外设控制器的中断服务程序中,或者通过Linux系统内核自带的timer机制,将映射空间中的值刷到SoC外设控制器中。
在本实施例中,可以采用两种不同的方式将将映射空间中的值刷到SoC外设控制器中,一种是,内核驱动程序中,在SoC的外设控制器的中断服务程序中,将在应用层动态修改过后的缓冲空间中值重新刷到SoC外设控制器的寄存器中,从而达到动态控制外设控制器的目的;另一种是,内核驱动程序中,利用Linux系统内核自带的timer机制,将在应用层动态修改过后的缓冲空间中值重新刷到SoC外设控制器的寄存器中,从而达到动态控制外设控制器的目的。
如图2所示,在其中一个实施例中,步骤S600之后还包括:
S700:当接收到停止测试信号时,解除缓冲空间与用户空间的映射关系。
在应用层测试程序中,查看是否收到测试停止信号或其他中断测试的信号如果收到相关的停止信号,则跳出测试循环,并且调用munmap函数解除缓冲空间与用户空间的映射关系,将驱动测试过程构建的关系解除,以便数据还原,避免影响Linux系统正常工作。
在其中一个实施例中,将缓冲空间映射到用户空间,记录为映射空间的步骤之前还包括:
构建缓冲空间与SoC外设控制器一一对应关系;
将缓冲空间映射到用户空间,记录为映射空间的步骤包括:
通过Linux系统中内置mmap函数将缓冲空间映射到Linux系统的用户空间,并根据缓冲空间与SoC外设控制器一一对应关系,构建SoC外设控制器与映射空间的对应关系;
对映射空间赋SoC外设控制器初始化值的步骤包括:
根据SoC外设控制器与映射空间的对应关系,在用户空间中填写相应SoC外设控制器的初始化值。
将内核申请的缓冲空间与SoC的控制器一一对应起来,这样确保应用层程序知道缓冲空间与SoC控制器的各对应关系。通过Linux系统提供的mmap系统调用函数将内核驱动申请的物理缓冲空间映射到Linux系统用户空间。在Linux系统中,一般应用层不能直接操作Linux系统的内核空间,因此,Linux系统通过mmap函数提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。在应用层,按照SoC外设控制器与映射空间的对应关系,给缓冲空间填写相应寄存器的初始化值。
为更进一步,详细解释本发明驱动测试方法的技术方案及其效果,下面将以两个应用实例,并结合图3以及图4进行说明。
应用实例一
如图3所示,在其中一个应用实例中,本发明驱动测试方法包括步骤:
S301:在应用层测试程序中,首先通过open系统调用打开驱动设备节点。
S302:判断字符设备是否成功打开。
S303:通过ioctl系统调用控制内核驱动程序在内核中申请特定大小的物理内存缓冲空间。
S304:判断缓冲空间是否申请成功。
S305:通过mmap系统调用映射内核申请的缓冲空间到用户空间。
S306:判断映射是否成功。
S307:给映射空间赋外设控制器的初始化值。
S308:通过ioctl系统调用控制内核驱动程序将buffer空间中的值刷到SoC外设控制器中。
S309:通过ioctl系统调用控制内核驱动程序启动SoC外设控制器。
S310:循环动态修改映射到用户空间buffer中的值。
S311:查看测试效果。
S312:判断是否接收到停止测试信号。
S313:调用munmap函数解除缓冲空间与用户空间的映射关系。
S314:释放内核中物理内存缓冲空间。
S315:关闭字符设备。
应用实例二
如图4所示,在其中一个应用实例中,本发明驱动测试方法包括步骤:
S401:激活字符设备驱动程序,Linux系统将所有的设备都归类为字符设备、块设备及网络设备,普通的字符设备驱动算是Linux内核中最简单的驱动,所以采用Linux普通的字符设备驱动架构。
S402:判断字符设备是否成功激活,如果未激活,终止本测试程序,如果字符设备成功激活,则继续执行本测试程序。
S403:通过Linux系统提供的ioctl函数控制字符设备驱动申请确定大小的物理内存空间——缓冲空间。
S404:判断物理内存空间——缓冲空间申请是否成功,如果申请内存失败,则重新申请或终止本测试程序,如果申请内存成功,则继续执行本测试程序。
S405:将内核申请的缓冲空间与SoC的控制器一一对应起来,这样确保应用层程序知道缓冲空间与SoC控制器的各对应关系。
S406:通过Linux系统提供的mmap系统调用函数将内核驱动申请的物理缓冲空间映射到Linux用户空间。在Linux中,一般应用层不能直接操作Linux的内核空间,因此,Linux通过mmap函数提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。
S407:判断mmap映射是否成功,如果不成功,则关闭字符设备程序并结束,如果成功则继续执行本测试程序。
S408:在应用层,按照SoC外设控制器与映射空间的对应关系,给缓冲空间填写相应寄存器的初始化值。SoC外设控制器必须被正确初始化后才能开始正常工作。
S409:在应用层的测试程序中通过ioctl系统调用,控制内核驱动将申请的buffer中的数据刷到SoC外设控制器的寄存器中,此时,SoC的外设控制器初始化完成。
S410:在应用层的测试程序中再通过ioctl系统调用,控制内核驱动启动SoC外设控制器。
S411:在应用层测试程序中,根据具体的测试要求,动态修改映射空间中的值。
S412:内核驱动程序中,在SoC外设控制器的中断服务程序中或者利用Linux内核自带的timer机制,将在应用层动态修改过后的映射空间中的值重新刷到SoC外设控制器的寄存器中,从而达到动态控制SoC外设控制器的目的。
S413:查看相关的测试效果。
S414:在应用层测试程序中,查看是否收到测试停止信号或其他中断测试的信号,如果收到相关的停止信号,则跳出测试循环,否则,跳转到S411处循环继续执行。
S415:在应用层测试程序中,当收到相关停止信号并跳出测试循环后,调用munmap函数解除缓冲空间的映射关系。
S416:在应用层测试程序中,通过ioctl系统调用控制器内核驱动程序释放申请的内存空间。
S417:在应用层测试程序中,关闭打开的字符设备节点。
S418:测试结束。
在上述实施例中,为更进一步提高驱动测试的效率,还有以下内容需要注意。
1)为了让测试方案尽量简单,内核驱动只需要做成最简单的普通字符驱动即可。
2)在驱动程序的init函数中注册字符设备节点,方便应用程序打开该设备节点来调用驱动中的相关操作。在驱动程序的init函数中还需要注册外设控制器的中断服务程序或注册一个timer。
3)在驱动程序的init函数中还必须注册文件操作函数集(fops)。
4)在文件操作函数集中,需要完成open、ioctl、mmap、munmap、release系统调用对应的内核驱动实现函数。
5)在ioctl系统调用的内核驱动实现函数中处理应用层用到的几个不同的操作:申请物理内存缓冲空间、释放物理内存缓冲空间、初始化外设控制器、启动外设控制器。
6)在mmap系统调用的内核驱动实现函数中映射申请的缓冲空间,在munmap系统调用的内核驱动实现函数中解除映射。
7)在驱动中可在外设控制器的中断服务程序中将申请的缓冲空间中的值刷到外设控制器中,也可利用Linux内核的timer机制定时循环将申请的缓冲空间中的值刷到外设控制器中。具体用哪种方法,需根据具体的外设控制器特点来选择。
如图5所示,一种驱动测试装置,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,包括:
启动模块100,用于激活驱动设备节点;
空间申请模块200,用于在Linux系统内核中申请物理内存空间,记录为缓冲空间;
映射模块300,用于将缓冲空间映射到用户空间,记录为映射空间;
第一赋值模块400,用于对映射空间赋SoC外设控制器初始化值;
第二赋值模块500,用于将映射空间中的值刷到SoC外设控制器中;
驱动测试模块600,用于启动SoC外设控制器,根据预设测试要求,循环动态修改映射空间中的数据,查看驱动测试结果。
本发明驱动测试装置,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,启动模块100激活驱动设备节点,空间申请模块200在Linux系统内核中申请物理内存空间,记录为缓冲空间,映射模块300将缓冲空间映射到用户空间,记录为映射空间,第一赋值模块400赋值SoC外设控制器初始化值,第二赋值模块500将已赋的数值刷到SoC外设控制器中,驱动测试模块600启动SoC外设控制器,循环动态修改映射空间中的数据,查看驱动测试结果。整个过程中,直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试
在其中一个实施例中,启动模块100用于激活Linux系统中字符设备驱动程序,以激活字符设备。
在其中一个实施例中,第二赋值模块500用于在SoC外设控制器的中断服务程序中,或者通过Linux系统内核自带的timer机制,将映射空间中的值刷到SoC外设控制器中。
如图6所示,在其中一个实施例中,本发明驱动测试装置还包括:
解除模块700,用于当接收到停止测试信号时,解除缓冲空间与用户空间的映射关系。
在其中一个实施例中,本发明驱动测试装置还包括:
对应关系构建模块,用于构建缓冲空间与SoC外设控制器一一对应关系;
映射模块300具体用于通过Linux系统中内置mmap函数将缓冲空间映射到Linux系统的用户空间,并根据缓冲空间与SoC外设控制器一一对应关系,构建SoC外设控制器与映射空间的对应关系;
第一赋值模块400具体用于根据SoC外设控制器与映射空间的对应关系,在用户空间中填写相应SoC外设控制器的初始化值。
另,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述方法的步骤。其中,驱动测试方法直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
另,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上述方法的步骤。其中,驱动测试方法直接通过内存映射方式传递数据,数据传递效率较高,特别是周期性的传递大量寄存器数据时,能够高效的用于对Linux系统应用层操作SoC外设控制器进行驱动测试。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种驱动测试方法,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,其特征在于,包括步骤:
激活驱动设备节点;
在Linux系统内核中申请物理内存空间,记录为缓冲空间;
将所述缓冲空间映射到用户空间,记录为映射空间;
对所述映射空间赋SoC外设控制器初始化值;
将所述映射空间中的值刷到所述SoC外设控制器中;
启动所述SoC外设控制器,根据预设测试要求,循环动态修改所述映射空间中的数据,查看驱动测试结果;
其中,在所述将所述缓冲空间映射到用户空间,记录为映射空间的步骤之前还包括:构建所述缓冲空间与SoC外设控制器一一对应关系;
所述将所述映射空间中的值刷到所述SoC外设控制器中的步骤包括:通过ioctl系统调用控制内核驱动程序将缓冲空间中的值刷到SoC外设控制器中;
所述在Linux系统内核中申请物理内存空间包括:
通过ioctl系统调用控制内核驱动程序在内核中申请特定大小的物理内存缓冲空间;
所述将所述缓冲空间映射到用户空间,记录为映射空间的步骤包括:
通过Linux系统中内置mmap函数将所述缓冲空间映射到Linux系统的用户空间,记录为映射空间,并根据所述缓冲空间与SoC外设控制器一一对应关系,构建SoC外设控制器与所述映射空间的对应关系。
2.根据权利要求1所述的驱动测试方法,其特征在于,所述激活驱动设备节点的步骤包括:
激活Linux系统中字符设备驱动程序,以激活字符设备。
3.根据权利要求1所述的驱动测试方法,其特征在于,所述将所述映射空间中的值刷到所述SoC外设控制器中的步骤包括:
在SoC外设控制器的中断服务程序中,或者通过Linux系统内核自带的timer机制,将所述映射空间中的值刷到所述SoC外设控制器中。
4.根据权利要求1所述的驱动测试方法,其特征在于,所述启动所述SoC外设控制器,根据预设测试要求,循环动态修改所述映射空间中的数据,查看驱动测试结果的步骤之后还包括:
当接收到停止测试信号时,解除所述缓冲空间与所述用户空间的映射关系。
5.根据权利要求1所述的驱动测试方法,其特征在于,所述对所述映射空间赋SoC外设控制器初始化值的步骤包括:
根据所述SoC外设控制器与所述映射空间的对应关系,在所述用户空间中填写相应SoC外设控制器的初始化值。
6.一种驱动测试装置,用于对Linux系统应用层操作SoC外设控制器进行驱动测试,其特征在于,包括:
启动模块,用于激活驱动设备节点;
空间申请模块,用于在Linux系统内核中申请物理内存空间,记录为缓冲空间;
映射模块,用于将所述缓冲空间映射到用户空间,记录为映射空间;
对应关系构建模块,用于构建缓冲空间与SoC外设控制器一一对应关系;
第一赋值模块,用于对所述映射空间赋SoC外设控制器初始化值;
第二赋值模块,用于将所述映射空间中的值刷到所述SoC外设控制器中;
驱动测试模块,用于启动所述SoC外设控制器,根据预设测试要求,循环动态修改所述映射空间中的数据,查看驱动测试结果;
第二赋值模块,还用于通过ioctl系统调用控制内核驱动程序将缓冲空间中的值刷到SoC外设控制器中;
所述空间申请模块,还用于通过ioctl系统调用控制内核驱动程序在内核中申请特定大小的物理内存缓冲空间;
所述映射模块,还用于通过Linux系统中内置mmap函数将所述缓冲空间映射到Linux系统的用户空间,记录为映射空间,并根据所述缓冲空间与SoC外设控制器一一对应关系,构建SoC外设控制器与所述映射空间的对应关系。
7.根据权利要求6所述的驱动测试装置,其特征在于,所述启动模块用于激活Linux系统中字符设备驱动程序,以激活字符设备。
8.根据权利要求6所述的驱动测试装置,其特征在于,所述第二赋值模块用于在SoC外设控制器的中断服务程序中,或者通过Linux系统内核自带的timer机制,将所述映射空间中的值刷到所述SoC外设控制器中。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任意一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任意一项所述方法的步骤。
CN201710422966.8A 2017-06-07 2017-06-07 驱动测试方法、装置、存储介质及其计算机设备 Active CN107329892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710422966.8A CN107329892B (zh) 2017-06-07 2017-06-07 驱动测试方法、装置、存储介质及其计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710422966.8A CN107329892B (zh) 2017-06-07 2017-06-07 驱动测试方法、装置、存储介质及其计算机设备

Publications (2)

Publication Number Publication Date
CN107329892A CN107329892A (zh) 2017-11-07
CN107329892B true CN107329892B (zh) 2020-09-11

Family

ID=60194515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710422966.8A Active CN107329892B (zh) 2017-06-07 2017-06-07 驱动测试方法、装置、存储介质及其计算机设备

Country Status (1)

Country Link
CN (1) CN107329892B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228407A (zh) * 2018-01-31 2018-06-29 深圳市证通电子股份有限公司 设备功能测试方法、装置及可读存储介质
CN114020652B (zh) * 2021-09-30 2022-12-30 荣耀终端有限公司 一种应用程序的管理方法及电子设备
CN114610557B (zh) * 2022-05-11 2022-08-26 宏晶微电子科技股份有限公司 设备驱动单元的测试方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881936A (zh) * 2006-05-09 2006-12-20 国家数字交换系统工程技术研究中心 一种路由器虚拟驱动模块的动态加载与控制方法
CN101540720A (zh) * 2008-06-06 2009-09-23 曙光信息产业(北京)有限公司 一种支持多类型网卡链路聚合的零拷贝方法
CN102750221A (zh) * 2012-05-29 2012-10-24 兰雨晴 一种针对Linux文件系统的性能测试方法
CN103488607A (zh) * 2013-09-07 2014-01-01 安徽华东光电技术研究所 嵌入式linux平台下SOC处理器与FPGA芯片的通信系统、方法
CN106713900A (zh) * 2015-11-17 2017-05-24 江西恒盛晶微技术有限公司 Next系列产品arm和linux测量系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881936A (zh) * 2006-05-09 2006-12-20 国家数字交换系统工程技术研究中心 一种路由器虚拟驱动模块的动态加载与控制方法
CN101540720A (zh) * 2008-06-06 2009-09-23 曙光信息产业(北京)有限公司 一种支持多类型网卡链路聚合的零拷贝方法
CN102750221A (zh) * 2012-05-29 2012-10-24 兰雨晴 一种针对Linux文件系统的性能测试方法
CN103488607A (zh) * 2013-09-07 2014-01-01 安徽华东光电技术研究所 嵌入式linux平台下SOC处理器与FPGA芯片的通信系统、方法
CN106713900A (zh) * 2015-11-17 2017-05-24 江西恒盛晶微技术有限公司 Next系列产品arm和linux测量系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Linux内存映射(mmap)";lknlfy;《https://www.cnblogs.com/lknlfy/archive/2012/04/27/2473804.html》;20120427;1-2、6 *

Also Published As

Publication number Publication date
CN107329892A (zh) 2017-11-07

Similar Documents

Publication Publication Date Title
US7421533B2 (en) Method to manage memory in a platform with virtual machines
CN107077377B (zh) 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品
US8966477B2 (en) Combined virtual graphics device
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
CN101714091B (zh) 用于在操作系统初始化期间显示平台图形的方法和系统
US7904914B2 (en) On-the-fly replacement of physical hardware with emulation
CN102207896B (zh) 虚拟机崩溃文件生成技术
CN107329892B (zh) 驱动测试方法、装置、存储介质及其计算机设备
US7802252B2 (en) Method and apparatus for selecting the architecture level to which a processor appears to conform
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
US20050182922A1 (en) Computer systems with several operating systems coexisting thereon and swapping between these operating systems
US20210224210A1 (en) Information processing method, physical machine, and pcie device
CN107209683B (zh) 备份映像恢复
CN107807839B (zh) 一种修改虚拟机内存数据的方法、装置及电子设备
US8065441B2 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
CN103034524A (zh) 半虚拟化的虚拟gpu
JP2009508183A (ja) 仮想マシン・モニタと、acpi準拠ゲスト・オペレーティング・システムとの間の双方向通信のための方法、装置及びシステム
US11556458B2 (en) Efficient fuzz testing of low-level virtual devices
CN113326105B (zh) 基于主机迁移的硬件设备配置方法、装置及设备
CN110968392B (zh) 一种升级虚拟化模拟器的方法和装置
CN107977251A (zh) 对在虚拟化系统中的共享寄存器的排他访问
CN112596950A (zh) 虚拟机数据备份方法、装置、设备及存储介质
US8528007B1 (en) Firmware downloading through process file system
US20150200807A1 (en) Dynamic server to server configuration and initialization
CN114625484A (zh) 虚拟化实现方法、装置、电子设备、介质及arm平台

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.

Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.