一种具备优先级调度的多协议转换方法

文档序号:9326829阅读:606来源:国知局
一种具备优先级调度的多协议转换方法
【技术领域】
[0001]本发明涉及一种通信技术领域,尤其是一种具有优先级调度的多协议转换方法。
【背景技术】
[0002]现阶段,数据传输可以采用的通信协议有多种,在一个嵌入式系统中使用多种通信协议传输数据的情况下,为了能够使数据在系统内实时传输,需要进行各种类型的协议转换。
[0003]因为嵌入式系统中各种数据到来的时间具有不确定性,导致各种类型的协议转换要求进行的时间也具有不确定性。同时,由于不同数据的重要性不同,导致不同类型的协议转换的优先级不同,所以需要一种简单易行的方法,能够及时检测到和指示出要求进行的协议转换,并且根据不同协议转换类型的优先级进行调度,保证优先级高的协议转换总能及时进行,避免重要数据的传输延迟。

【发明内容】

[0004]本发明目的在于提供一种简单合理、适用于嵌入式系统的具备优先级调度的多协议转换方法。
[0005]为实现上述目的,采用本发明方法如下:
[0006]所述转换方法运行在嵌入式系统中,该嵌入式系统由硬件和软件组成,硬件由嵌入式微处理器、存储器、通用设备接口、电源组成,通用设备接口有串行通信接口、以太网接口、通用串行总线接口、I2C接口、SPI接口和其他接口,不同接口使用不同的通信协议传输数据;软件运行在嵌入式微处理器中,对整个系统进行控制;
[0007]嵌入式系统初始化,在系统初始化阶段定义一个仲裁字节和一个仲裁字节更新定时器为系统协议转换使用,所述的仲裁字节占用一个字节的内存空间,其中该字节每一位均代表一种协议转换类型,字节的每一位从高到低代表的协议转换类型优先级依次降低,最高位代表优先级最高的协议转换类型;其中,仲裁字节的某一位为1,代表有该位对应的协议转换需要进行或者正在进行;仲裁字节的某一位为0,代表没有该位对应的协议转换需要进行;
[0008]所述仲裁字节更新定时器为嵌入式微处理器中的一个内部定时器,通过设定该定时器的寄存器,该定时器能够以需要的时间间隔循环定时;
[0009]系统初始化完成后,利用仲裁字节更新定时器对所有接口进行定时监听,确定是否有协议转换需要进行或正在进行,根据监听结果对仲裁字节的各位信息进行更新;然后系统根据仲裁字节信息对不同优先级的协议转换进行调度;某一个协议转换完成后,系统对该协议对应的仲裁字节的位进行清零操作,执行完清零操作后,系统重新从仲裁字节的最高位开始按高低位检测各位信息。
[0010]系统检测仲裁字节某一位是否为I的方法为:首先系统生成一个字节,定义为检测字节,所述的检测字节由8位二进制数组成,该检测字节与仲裁字节本次检测位的对应位置为1,其他位置为O ;通过检测字节与仲裁字节进行与运算,如果运算结果为1,表示仲裁字节该位为1,仲裁字节该位所代表的协议转换要求进行或者正在进行;如果运算结果为O,表示仲裁字节该位为O,仲裁字节该位所代表的协议转换没有要求进行;系统从仲裁字节的最高位开始,按照从高位到低位的顺序,使用检测字节与仲裁字节的与运算的运算结果检测各位信息。
[0011]系统在执行仲裁字节中某一位对应的协议转换后,系统对该协议对应的仲裁字节的位进行清零操作,清零操作的方法为:仲裁字节与该位对应的检测字节进行异或运算,并将运算结果赋值给仲裁字节,仲裁字节中本次检测的位置0,其他位依然为清零操作之前的值。
[0012]在系统执行非最高优先级的协议转换执行之前,系统需通过判断一个确认字节与仲裁字节的与运算的运算结果是否为0,确认是否有更高优先级的协议转换要求进行。
[0013]为防止系统在执行该位对应的协议转换之前有更高优先级的协议转换要求进行,需要对仲裁字节进行确认操作,系统对仲裁字节费最高位进行确认操作的方法为:首先系统生成一个字节,定义该字节为确认字节,该确认字节,与仲裁字节本次检测位的对应位为0,该位之前各高位为1,该位之后各低位为0,然后确认字节与仲裁字节进行与运算,如果运算结果不为0,表示此刻有更高优先级的协议转换要求进行,系统重新从仲裁字节的最高位进行检测;如果运算结果为0,表示此刻该位对应的协议转换可以执行。
[0014]与现有技术相比,本发明具有如下优点:设计简单、处理精确、应用广泛,能够使多个任务和协议在系统中按照优先级别进行处理和执行,提高协议转换效率和准确率。
【附图说明】
[0015]图1是本发明实施例1的系统框图。
[0016]图2是本发明实施例1的协议转换方法流程图。
【具体实施方式】
[0017]下面结合附图对本发明做进一步说明:
[0018]本发明采用如下方法:
[0019]所述转换方法运行在嵌入式系统中,该嵌入式系统由硬件和软件组成,硬件由嵌入式微处理器、存储器、通用设备接口、电源组成,通用设备接口包括串行通信接口、以太网接口、通用串行总线接口、I2C接口、SPI接口及其他接口,不同接口使用不同的通信协议传输数据;软件运行在嵌入式微处理器中,对整个系统进行控制;
[0020]嵌入式系统初始化,在系统初始化阶段定义一个仲裁字节和一个仲裁字节更新定时器为系统协议转换使用,所述的仲裁字节占用一个字节的内存空间,其中该字节每一位均代表一种协议转换类型,字节的每一位从高到低代表的协议转换类型优先级依次降低,最高位代表优先级最高的协议转换类型;其中,仲裁字节的某一位为1,代表有该位对应的协议转换需要进行或者正在进行;仲裁字节的某一位为0,代表没有该位对应的协议转换需要进行;
[0021]所述仲裁字节更新定时器为嵌入式微处理器中的一个内部定时器,通过设定该定时器的寄存器,该定时器能够以需要的时间间隔循环定时;
[0022]系统初始化完成后,利用仲裁字节更新定时器对所有接口进行定时监听,确定是否有协议转换需要进行或正在进行,根据监听结果对仲裁字节的各位信息进行更新;然后系统根据仲裁字节信息对不同优先级的协议转换进行调度;某一个协议转换完成后,系统对该协议对应的仲裁字节的位进行清零操作,执行完清零操作后,系统重新从仲裁字节的最高位开始按高低位检测各位信息。
[0023]下面是详细叙述系统如何对仲裁字节进行检测和执行调度的:
[0024](I)系统检测仲裁字节的最高位
[0025]系统检测仲裁字节某一位是否为I的方法为,首先系统生成一个字节,命名为检测字节,该检测字节,与仲裁字节本次检测位的对应位置1,其他位置0,例如要检测仲裁字节的最高位,检测字节为10000000,十六进制表示0x80,然后检测字节与仲裁字节进行与运算(运算符为“&”),如果运算结果为1,表示仲裁字节该位为1,如果运算结果为0,表示仲裁字节该位为O。
[0026]系统使用检测字节0x80与仲裁字节进行与运算,如果仲裁字节最高位为1,系统执行最高位对应类型的协议转换。
[0027]转换完成后,系统对仲裁字节的最高位进行清零操作,系统对仲裁字节的某一位进行清零操作的方法为,仲裁字节与该位对应的检测字节进行异或运算(运算符为“?”),并将运算结果赋值给仲裁字节,这样仲裁字节中本次检测的位置0,其他位依然为清零操作之前的值。这里对仲裁字节的最高位进行清零操作就是仲裁字节与0x80进行异或运算,并将运算结果赋值给仲裁字节。
[0028]执行完清零操作后,系统重新从仲裁字节的最高位开始检测。
[0029](2)如果仲裁字节的最高位为0,系统检测仲裁字节的次高位
[0030]系统使用检测字节0x40与仲裁字节进行与运算,如果仲裁字节的次高位为1,为防止系统在执行该位对应的协议转换之前有更高优先级的协议转换要求进行,需要对仲裁字节进行确认操作,系统对仲裁字节某一位(除最高位)进行确认操作的方法为,首先系统生成一个字节,命名该字节为确认字节,该确认字节,与仲裁字节本次检测位的对应位为0,该位之前各高位为1,该位之后各低位为0,例如要检测仲裁字节的次高位,确认字节为10000000,十六进制表示0x80,然后确认字节与仲裁字节进行与运算,如果运算结果不为0,表示此刻有更高优先级的协议转换要求进行,系统重新从仲裁字节的最高位进行检测,保证了具有高优先级的协议转换优先进行,如果运算结果为0,表示此刻该位对应的协议转换可以执行。
[0031]如果仲裁字节的次高位为I,系统使用确认字节0x80与仲裁字节进行与操作,如果运算结果不为0,系统重新从仲裁字节最高位开始检测,如果运算结果为0,系统执行次高位对应的协议转换,转换结束后,对仲裁字节的次高位进行清零操作。
[0032]执行完清零操作后,系统重新从仲裁字节的最高位开始检测。
[0033](3)如果仲裁字节的次高位为0,系统按照次高位的操作方法检测仲裁字节下面各位是否为1,直到遇到某一位为1,系统进行确认操作,该位的确认字节与仲裁字节进行与运算,如果运算结果不为0,系统重新从仲裁字节的最高位进行检测,如果运算结果为0,系统执行该位对应的协议转换,转换结束后,系统对仲裁字节的该位进行清零操作。
[0034]执行完清零操作后,系统重新从仲裁字节的最高位开始检测。
[0035](4)如果系统检测到,仲裁字节中代表某种类型协议转换的位全部为0,系统返回仲裁字节最高位重新开始进行检测。
[0036]实施例1:
[0037]嵌入式系统中有多种通用设备接口,不同的接口使用不同的通信协议传输数据,本实施例中系统仅包含4种接口,分别为接口 A、接口 B、接口 C、接口 D,分别使用协议A、协议B、协议
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1