串行端口多执行绪测试方法.pdf

上传人:奻奴 文档编号:636194 上传时间:2018-02-28 格式:PDF 页数:21 大小:741.59KB
返回 下载 相关 举报
摘要
申请专利号:

CN03122067.3

申请日:

2003.04.22

公开号:

CN1540510A

公开日:

2004.10.27

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 11/00申请日:20030422授权公告日:20090701终止日期:20110422|||授权|||实质审查的生效|||公开

IPC分类号:

G06F11/00

主分类号:

G06F11/00

申请人:

英业达股份有限公司;

发明人:

刘文涵; 宋建福; 孟祥滨

地址:

台湾省台北市士林区后港街66号

优先权:

专利代理机构:

中原信达知识产权代理有限责任公司

代理人:

陈肖梅;文琦

PDF下载: PDF下载
内容摘要

本发明涉及一种串行端口的多执行绪测试方法,用于对串行端口进行多执行绪测试,通过多执行绪以及分片机制,增加测试过程中对串行端口的压力,提高测试效率,本发明包括下列步骤:执行多个测试执行绪,并将每个测试执行绪分割成多个执行绪片段,从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪,在临界区执行当前执行绪的当前执行绪片段的测试,退出临界区,其它未测试完的执行绪继续根据临界区的互斥规则进行竞争。

权利要求书

1: 一种串行端口多执行绪测试方法,其特征在于,该方法至少 包括以下步骤: 执行多个测试执行绪,并将每个测试执行绪分割成多个执行绪片 段; 从该多个测试执行绪中通过竞争选择一个具有临界区存取权限的 当前测试执行绪; 在临界区内执行该当前执行绪的当前执行绪片段的测试;及 退出临界区。
2: 如权利要求1所述的串行端口多执行绪测试方法,其特征在 于,该多个测试执行绪的测试内容是相同的。
3: 如权利要求1所述的串行端口多执行绪测试方法,其特征在 于,该通过竞争选择一个具有临界区存取权限的当前测试执行绪,是通 过操作系统对执行绪的管理机制来完成的。
4: 如权利要求1所述的串行端口多执行绪测试方法,其特征在 于,执行该当前执行绪的测试更包括如下步骤: 该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入 临界区; 该执行绪片段占用串行端口并对该串行端口的帧格式进行设置; 确定当前测试波特率; 根据该当前测试波特率,按照预先设定的字节数进行数据传输测 试; 释放对临界区的占用;及 确定当前测试执行绪在所有波特率下的测试情况。
5: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该临界区的互斥规则是指当临界区已被占用时,该当前执行绪中 的当前执行绪片段继续等待直到该临界区处于空闲;当该临界区未被 占用时,该当前执行绪中的当前执行绪片段获得临界区的存取权限。
6: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该帧格式为8位字长、1位停止位、无校验位。
7: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该确定当前测试波特率更包括以下步骤: 该当前测试执行绪在该波特率下的测试尚未完成时,将波特率设 置为当前值;及 该当前测试执行绪在该波特率下的测试全部完成时,将波特率设 置为未经测试的值。
8: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该波特率的选择范围是从300到115200之间共11种不同的波特 率。
9: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该预先设定的字节数为1个字节。
10: 如权利要求4所述的串行端口多执行绪测试方法,其特征在 于,该确定该当前测试执行绪在所有波特率下的测试情况更包括以下 步骤: 该当前测试执行绪还有未经测试的波特率时,则该执行绪继续和 其它待测试执行绪竞争临界区的存取权限;及 当前测试执行绪完成所有波特率下的测试时,则结束该执行绪。
11: 如权利要求1所述的串行端口多执行绪测试方法,其特征在 于,该在临界区内执行该当前测试执行绪的当前执行绪片段的步骤更 包括以下步骤: 该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入 临界区; 设置该执行绪片段占用串行端口并对该串行端口的帧格式; 确定当前测试波特率;及 在该当前测试波特率下,按照预先设定的字节数向进行数据传输 测试;及 释放对临界区的占用。
12: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该临界区的互斥规则是指:当临界区已被占用时,该当前执行 绪中的当前执行绪片段继续等待直到该临界区处于空闲;当该临界区 未被占用时,该当前执行绪中的当前执行绪片段获得临界区的存取 权。
13: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该帧格式为8位字长、1位停止位、无校验位。
14: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该确定当前测试波特率更包括以下步骤: 该当前测试执行绪在该波特率下测试尚未完成时,将波特率设置 为当前值;及 该当前测试执行绪在该波特率下测试全部完成时,将波特率设置 为未经测试的值。
15: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该波特率的选择范围是从300到115200之间共11种不同的波 特率。
16: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该预先设定的字节数为1个字节。
17: 如权利要求11所述的串行端口多执行绪测试方法,其特征 在于,该退出临界区的步骤之后更包括返回执行多个测试执行绪的步 骤。

说明书


串行端口多执行绪测试方法

    【技术领域】

    本发明涉及一种串行端口测试方法,特别是指一种使用多执行绪对串行端口进行测试的方法。

    背景技术

    随着计算机使用范围越来越广泛,对计算机的各种硬设备进行检测的要求也越来越高。串行端口(COM PORT)作为PC中一个不可或缺的I/O(输入/输出)端口,担负着与外围或其它PC之间通讯的重要任务。由于串行端口自身的特点的限制,在其数据传输过程中,每一个数据帧都必须按位连续传输,中间无法中断;而且每一时刻串行端口的状态(如接脚状态,以及波特率、帧格式(Frame Format)等)也只能是唯一的,若多个执行绪(Multi Thread)同时存取串行端口就会产生不可预知的后果。

    因此,针对串行端口的测试的传统做法是以单执行绪串行的方式进行,其方法如下:在操作系统的执行绪管理机制调度下,某一个测试执行绪进入处理器,并占用串行端口进行测试;当这个测试进程完成、且退出之后,操作系统才能将下一个进程调入处理器,并占用串行端口进行测试。这种单执行绪的测试方法,不但效率低下,而且对于多任务的系统如Windows 2000,如果当前测试执行绪测试完毕退出处理器后,在下一执行绪进入处理进入处理器并占用端口进行测试之前,串行端口就会处于闲置状态,这样就使得测试压力相应降低了,不利于进行大规模的串行端口测试。

    此时需要一种简单、高效,并可对串行端口增加测试压力的串行端口执行绪测试方法来解决这一问题。

    【发明内容】

    本发明为解决上述问题提出了一种串行端口多执行绪测试地方法,本发明的主要目的在于揭露一种可以增加测试过程中对串行端口的压力,提高测试效率的测试方法。

    为达上述目的,本发明所提的一种串行端口的多执行绪测试方法,包括下列步骤:执行多个测试执行绪,并将该每个测试执行绪分割成多个执行绪片段;从该多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪;在临界区执行该当前执行绪的当前执行绪片段的测试;退出临界区,其它未测试完的执行绪继续根据临界区的互斥规则进行竞争。

    与传统的检测方法相比,本发明提供的方法中,虽然每个执行绪实际上并没有同时运行,但是每个执行绪片段每一次运行的时间相对较短,可以近似地认为各个执行绪是并发运行的。另外,当某个执行绪退出处理器,暂停运行时,其它的执行绪仍然有可能被运行。这样,无疑提高了测试的效率;同时,串行端口被闲置的可能性也相应降低,测试压力得以提高。在执行绪较多的情况下,这种效率提升尤为明显。

    【附图说明】

    图1是本发明的串行端口多执行绪测试方法的测试的逻辑示意图;

    图2是本发明的串行端口多执行绪测试方法的流程图;

    图3是本发明所提的执行该当前执行绪的测试的流程图;

    图4是本发明所提的在临界区内执行该当前测试执行绪的当前执行绪片段的流程图;

    图5是本发明所提的确定当前测试波特率的流程图;

    图6是本发明所提的确定当前测试执行绪在所有波特率下的测试情况的流程图。

    图中符号说明

    10          执行的待测试的执行绪

    20          执行的待测试的执行绪

    M           执行的待测试的执行绪

    10a~10n    被分割后的执行绪片段

    20a~20n    被分割后的执行绪片段

    Ma~Mn      被分割后的执行绪片段

    10a         进入临界执行的执行绪片段

    30          临界区

    步骤210     执行多个测试执行绪,并将该每个测试执行绪分割成多个执行绪片段

    步骤220     从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪

    步骤230     在临界区内执行前测试执行绪的当前执行绪片段

    步骤240     退出临界区,并回到步骤220

    步骤310     该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入临界区

    步骤320     该执行绪片段占用串行端口并对该串行端口的帧格式(frame format)进行设置

    步骤330     确定当前测试波特率

    步骤340     根据该当前测试波特率,按照预先设定的字节数进行数据传输测试

    步骤350     释放对临界区的占用

    步骤360     确定当前测试执行绪在所有波特率下的测试情况

    步骤410     该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入临界区

    步骤420     该执行绪片段占用串行端口并对该串行端口的帧格式(frame format)进行设置

    步骤430     确定当前测试波特率

    步骤440    根据该当前测试波特率,按照预先设定的字节数进行数据传输测试

    步骤450    释放对临界区的占用

    步骤510    该当前测试执行绪在该波特率下测试尚未完成时,将波特率设置为当前值

    步骤520    该当前测试执行绪在该波特率下测试全部完成时,将波特率设置为未经测试的值

    步骤610    该当前测试执行绪还有未经测试的波特率时,则该执行绪继续和其它待测试执行绪竞争临界区的存取权限    

    步骤620    当前测试执行绪完成所有波特率下的测试时,则结束该执行绪

    【具体实施方式】

    以下结合附图对本发明的流程进行说明:

    图1是本发明的串行端口多执行绪测试方法的测试逻辑示意图,其说明如下:

    首先将待测试执行绪10、20、M分割成多个执行绪片段(10a、10b、......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn),然后从多个执行绪(10a、10b、10c、10d......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn)中选择一个具有临界区存取权限的当前测试执行绪10;再在临界区30内执行该当前测试执行绪10的当前执行绪片段10a;最后释放对临界区30的占用。

    所谓临界区就是指一段代码,操作系统对于临界区的实现就是利用特定结构,以及对应的算法,提供的对一段特殊代码的保护或者说上一种同步机制。从其物理意义上讲,与普通代码不同的是,这段代码受到操作系统的监控,一旦某个运行的执行绪进入这段代码,就不允许其它的执行绪共享这段代码,其它请求进入这段代码运行的执行绪就只能等候,直到临界区中的代码退出为止。

    在Windows 2000中及Windows NT中,临界区的建立是通过:EnterCriticalSection()、∷LeaveCriticalSection()这一对API函数来实现的。这两个函数之间的代码,就是临界区代码。

    出于提高运行效率的考虑,临界区中的处理必须尽可能的少,因为若在临界区中进行过多的处理会带来“阻塞”,我们不能让其它的执行绪因被阻塞太长的时间而得不到处理。所以临界区内代码的长度应该适当,一个字节或多个字节均可,只要能够保证这段代码在临界区内高效的执行。

    应该注意的是,这两个函数必须成对出现:执行前者进入临界区后,必须执行后者释放它,否则,执行绪将永远不能离开临界区。

    请参阅图2,图2是本发明的串行端口多执行绪测试方法流程图,其流程如下:

    首先执行多个测试执行绪10、20、M,并将该每个测试执行绪分割成多个执行绪片段10a~10n、20~20n、Ma~Mn(步骤210);然后根据临界区30的互斥规则,从多个测试执行绪(10a、10b、......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn)中选择一个具有临界区30存取权限的测试执行绪10(步骤220);再在临界区30内执行该当前执行绪的当前执行绪片段10a的测试(步骤230);最后释放对临界区30的占用(步骤240)。

    在windows下执行多个测试执行绪,是通过一个API函数∷CreateThread()来实现的,具体的实现方法如下:首先设置一个执行绪实现函数,然后通过执行CreateThread()函数,将实现函数的指针传递进去,这个执行绪就建立了。此时这个执行绪的生存周期就是始于“实现函数”的入口,终于“实现函数”的结束。

    从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪是通过操作系统的执行绪调度机制来完成的。在当前每个处于运行态的执行绪中,根据他们的优先级(优先级是由系统指定、用户指定、运行时间等多方面的因素计算出来的)分配时间片(time slice,可以理解为处理器的指令周期),优先级高就优先得到时间片,而得到时间片的执行绪就获得了占据处理器运行的机会。得到时间片的执行绪会一直运行,直到它主动放弃运行的机会(有可能是已经结束)或者调度器再次进行调度。

    从多个待测试执行绪中(10a、10b、......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn)通过竞争选择出的当前测试执行绪10的执行流程请参阅图3,图3是本发明所提的执行该当前执行绪的测试的流程图,流程如下:

    首先该当前执行绪10中的当前执行绪片段10a按照临界区30的互斥规则段进入临界区30(步骤3 10);然后设置该执行绪片段10a占用串行端口并对该串行端口的帧格式(frame format)(步骤320);确定当前波特率下是否完成测试(步骤330);在该当前测试波特率下,按照预先设定的字节数向临界区30输入测试数据进行测试(步骤340);释放对临界区30的占用(步骤350);最后确定当前测试执行绪在所有波特率下是否完成测试(步骤360)。

    该当前测试执行绪10的多个执行绪片段10a~10n中的当前执行绪片段10a在临界区内30执行的流程请参阅图4,图4是本发明所提的在临界区内执行该当前测试执行绪的当前执行绪片段的流程图,流程如下:

    首先该当前执行绪10中的当前执行绪片段10a按照临界区30的互斥规则段进入临界区30(步骤410);然后该执行绪片段10a占用串行端口并对该串行端口的帧格式(frame format)进行设置(步骤420);确定当前波特率下是否完成测试(步骤430);在该当前测试波特率下,按照预先设定的字节数进行数据传输测试(步骤440);释放对临界区30的占用(步骤450);最后进入步骤240。

    该当前执行绪片段在临界区内执行的流程是包含在从多个待测试执行绪中,通过竞争选择出的当前测试执行绪的执行流程,是当前测试执行绪执行流程的一部分。

    确定当前测试波特率的流程请参阅图5,图5是本发明所提的确定当前测试波特率的流程图的流程图,流程如下:

    该当前测试执行绪在该波特率下尚未测试完成时,将波特率设置为当前值(步骤510);该当前测试执行绪在该波特率下的测试全部完成时,将波特率设置为未经测试的值(步骤430);最后进入步骤440。

    确定当前测试执行绪在所有波特率下的测试情况的流程请参阅图6,图6是本发明所提的确定当前测试执行绪在所有波特率下的测试情况的流程图,流程如下:

    该当前测试执行绪还有未经测试的波特率时,则该执行绪继续和其它待测试执行绪竞争临界区30的存取权限(步骤610);当前测试执行绪完成所有波特率下的测试时,则结束该执行绪(步骤620)。

    上述测试过程不断循环运行直到整个全部待测试执行绪测试程完毕为止。

    本发明在测试中采用了多个测试内容相同的测试执行绪;每个执行绪被分割成多个执行绪片段,该执行绪片段每次传输到临界区数据帧格式(frame format)为8位字长、1位停止位、无校验位;波特率的范围,选择了从300到115200之间共11种不同的波特率;测试数据的范围,选择了0x00到0xff共256种不同数据,保证了测试的完整性。

    在测试中,如果只是一般的串行端口性能测试,测试执行绪的数据内容可以相同,测试执行绪数量也可以较少;如果需要对串行端口的最大负载量进行测试,则测试执行绪的数据内容和数量可进一步增加;如果是检测串行端口对各个不同的数据段的接受性能,那么测试数据的涵盖范围就要尽可能详尽。总之,测试执行绪的测试内容和数量的选择并不是固定的,需要根据测试目的不同进行选择。

    下面用一个简单实例来说明整个测试过程:

    测试的数据为0100、0101两种;测试波特率为300,600两种;一共执行2个执行绪;每个执行绪片段执行只输入一个字节的测试数据。

    执行绪1、2被分割为如下执行绪片段

    执行绪1  片段编号   波特率  测试内容    1    300    0100    4    600    0101

    执行绪2  片段编号   波特率  测试内容    1    300    0100    4    600    0101

    该测试的过程如下:

    执行绪1、2对临界区的存取权限进行竞争,执行绪1得到临界区的存取权限;

    执行绪1开始执行,其执行绪片段1进入临界区内;

    该片段占用串行端口并对端口的帧格式(frame format)进行设置;

    确定测试的波特率:当前波特率300还未进行测试,设置波特率为当前值300;

    执行测试;

    释放对临界区的占用;

    确定当前测试执行绪在所有波特率下的测试情况:执行绪1还有执行绪片段未执行,故该执行绪继续和执行绪2竞争临界区的存取权限。

    假设此时执行绪2得到临界区的存取权限;

    执行绪2以开始执行,其执行绪片段1进入临界区内;

    该片段占用串行端口并对端口的帧格式(frame format)进行设置;

    确定测试的波特率:当前波特率300还未进行测试,设置为当前值300;

    执行测试;

    释放对临界区的占用;

    确定当前测试执行绪在所有波特率下的测试情况:执行绪2中还有执行绪片段未执行,故该执行绪继续和执行绪1竞争临界区的存取权限。

    假设此时执行绪1再次得到临界区的存取权限;

    执行绪1开始执行,其执行绪片段2进入临界区内;

    该片段占用串行端口并对端口的帧格式(frame format)进行设置;

    确定测试的波特率:当前波特率600还未进行测试,设置为当前值600;

    执行测试;

    释放对临界区的占用;

    确定当前测试执行绪在所有波特率下的测试情况:当前执行绪1已经全部测试完,故执行绪1结束。

    执行绪2再次得到临界区的存取权限;

    执行绪2开始执行,其执行绪片段2进入临界区内;

    该片段占用串行端口并对端口的帧格式(frame format)进行设置;

    确定测试的波特率:当前波特率600还未进行测试,设置为当前值600;

    执行测试;

    释放对临界区的占用;

    确定当前测试执行绪在所有波特率下的测试情况:当前执行绪2已经全部测试完,故执行绪2结束。

    至此,整个测试过程全部完成。

    以上所述者,仅为本发明的较佳实施例,并非用来限定本发明的实施范围;即凡依本发明申请专利范围所作的均等变化与修饰,皆为本发明的权利要求书所涵盖。

串行端口多执行绪测试方法.pdf_第1页
第1页 / 共21页
串行端口多执行绪测试方法.pdf_第2页
第2页 / 共21页
串行端口多执行绪测试方法.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《串行端口多执行绪测试方法.pdf》由会员分享,可在线阅读,更多相关《串行端口多执行绪测试方法.pdf(21页珍藏版)》请在专利查询网上搜索。

本发明涉及一种串行端口的多执行绪测试方法,用于对串行端口进行多执行绪测试,通过多执行绪以及分片机制,增加测试过程中对串行端口的压力,提高测试效率,本发明包括下列步骤:执行多个测试执行绪,并将每个测试执行绪分割成多个执行绪片段,从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪,在临界区执行当前执行绪的当前执行绪片段的测试,退出临界区,其它未测试完的执行绪继续根据临界区的互斥规则进行竞争。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1