本申请涉及计算机总线通信,具体涉及一种多通道轮询调度系统及其调度机制、数据传输方法。
背景技术:
1、串行接口在计算机系统中是一种很常见的接口,被广泛应用,串口通讯分为同步串口通讯和异步串口通讯。异步串口通讯是指外设和计算机之间通过数据信号线、地址线和控制线等,按位进行传输数据的一种通讯方式,根据数据线上高低电平的变化来指示数据内容。通常,串口通讯协议中约定的每一包串口数据由数据帧头、有效数据、数据校验和数据帧尾构成。对接收到的串口数据,需要解析并判断数据帧头、有效数据、数据校验和数据帧尾。
2、现阶段,对于一套系统来说,串口的作用非常重要,模块与模块之间的通信和外部信号的采集均需要通过串口来完成接收和发送。通常情况下,用户对于系统的上层控制采用一路高速总线,而底层串口为多路,上层对于底层的控制采用cpu顺序执行的方式,底层的各通道依序与上层进行数据交互,这种串行的方式造成了多条通道并行性较差。
技术实现思路
1、鉴于现有技术中的上述缺陷或不足,本申请旨在提供一种多通道轮询调系统及其调度机制、数据传输方法。
2、第一方面,本申请提供一种多通道轮询调度系统,包括:
3、多个串行模块,各所述串行模块与外部设备连接,配置用于接收所述外部设备发送的数据;
4、多个第一接收缓存模块,各所述第一接收缓存模块与所述串行模块远离所述外部设备端连接,配置用于存储数据;所述第一接收缓存模块具有第一状态和第二状态,当处于第一状态时,所述第一接收缓存模块内存储有数据,当处于所述第二状态时,所述第一接收缓存模块中未存储有数据;
5、轮询调度模块,所述轮询调度模块与各所述第一接收缓存模块远离所述串行模块端连接,配置用于依序依次查询所述第一接收缓存模块的状态,当所述第一接收缓存模块的状态为所述第一状态时,获取该所述第一接收缓存模块的数据,并通过高速总线发送至上位机;当所述第一接收缓存模块的状态为所述第二状态时,则继续询问下一个所述第一接收缓存模块。
6、根据本申请实施例提供的技术方案,所述高速总线包括但不仅限于pci总线、pcie总线、lvds串行差分总线、千兆以太网中的任一个。
7、根据本申请实施例提供的技术方案,各所述串行模块通过下行串口与所述外部设备连接,所述下行串口包括但不仅限于hdlc串口、uart串口中的任一个。
8、根据本申请实施例提供的技术方案,所述轮询调度模块还配置用于将由所述第一接收缓存模块中取得的数据进行封装形成第一封装数据。
9、根据本申请实施例提供的技术方案,所述轮询调度模块和所述上位机之间设有第二接收缓存模块,所述轮询调度模块将所述第一封装数据写入所述第二接收缓存模块,待所述高速总线空闲时,将所述第一封装数据发送出去。
10、根据本申请实施例提供的技术方案,所述第一封装数据包括帧头、数据类型、数据长度、通道号、第一有效数据、校验和帧尾。
11、根据本申请实施例提供的技术方案,所述第二接收缓存模块和所述上位机之间设有总线控制模块,所述总线控制模块通过所述高速总线与所述上位机连接,所述总线控制模块配置用于将所述第一封装数据转换为适用于所述高速总线的格式,得到第二封装数据。
12、第二方面,本申请提供一种以上所述的多通道轮询调度系统的调度机制,所述多通道轮询调度系统包括多个通道,各所述通道包括所述串行模块和所述第一接收缓存模块,所述调度机制包括如下步骤:
13、s101、系统复位,所述轮询调度模块处于空闲状态;
14、s102、判断所有所述第一接收缓存模块是否都处于所述第二状态,若是,所述轮询调度模块仍处于空闲状态,若不是,执行步骤s103;
15、s103、依序询问所述第一接收缓存模块是否处于所述第一状态,若是,执行步骤s104,若不是,执行步骤s105;
16、s104、读取该所述第一接收缓存模块的数据,并对下个通道的所述第一接收缓存模块执行步骤s103;
17、s105、对下个通道的所述第一接收缓存模块执行步骤s103。
18、第三方面,本申请提供一种以上所述的多通道调度系统的数据传输方法,所述数据传输方法包括数据上传方法和数据下发方法,其中所述数据上传方法包括如下步骤:
19、s200、接收多个所述外部设备发送的第一数据;
20、s201、满足第一触发条件后,获得第一有效数据,并将所述第一有效数据发送至所述第一接收缓存模块;
21、s202、判断所述第一接收缓存模块的状态为所述第一状态时,读取所述第一有效数据;
22、s203、封装所述第一有效数据,形成第一封装数据;
23、s204、将所述第一封装数据存储至所述第二接收缓存模块;
24、s205、判断所述高速总线处于空闲状态时,将所述第一封装数据发送至所述总线控制模块;
25、s206、将所述第一封装数据转换为第二封装数据;
26、s207、将所述第二封装数据发送至所述上位机。
27、根据本申请实施例提供的技术方案,所述数据下发方法包括如下步骤:
28、s300、接收来自所述上位机发送的第二数据并将所述第二数据存储至第二发送缓存模块;
29、s301、判断所述第二发送缓存模块处于第三状态时,读取所述第二数据;所述第三状态为所述第二发送缓存模块有数据;
30、s302、提取所述第二数据,获得通道号以及与所述通道号对应的第二有效数据;
31、s303、将所述第二有效数据写入与所述通道号对应的第一发送缓存模块;
32、s304、满足第二触发条件后,将所述第二有效数据发送至所述串行模块,并发送至所述外部设备。
33、综上所述,本申请提出一种多通道轮询调度系统,包括多个串行模块,与各串行模块连接的第一接收缓存模块,和各第一接收缓存模块连接的轮询调度模块,第一接收缓存模块具有第一状态和第二状态,第一状态代表第一接收缓存模块内有数据,第二状态代表第一接收缓存模块中没有数据,轮询调度模块依次查询各通道的第一接收缓存模块的状态,在此过程中,若第一接收缓存模块的状态为第一状态,则获取该第一接收缓存模块中的数据,并通过高速总线发送至上位机。本申请通过轮询调度模块通过轮询方式对底层通道进行合理的调度控制,使得每个通道与上位机交互彼此独立,不相互影响,在宏观上具有更好的并行度,且与现有技术的串行方式相比,具有较强的实时性。
1.一种多通道轮询调度系统,其特征在于,包括:
2.根据权利要求1所述的多通道轮询调度系统,其特征在于,所述高速总线包括但不仅限于pci总线、pcie总线、lvds串行差分总线、千兆以太网中的任一个。
3.根据权利要求1所述的多通道轮询调度系统,其特征在于,各所述串行模块(100)通过下行串口与所述外部设备(200)连接,所述下行串口包括但不仅限于hdlc串口、uart串口中的任一个。
4.根据权利要求1所述的多通道轮询调度系统,其特征在于,所述轮询调度模块(400)还配置用于将由所述第一接收缓存模块(310)中取得的数据进行封装形成第一封装数据。
5.根据权利要求4所述的多通道轮询调度系统,其特征在于,所述轮询调度模块(400)和所述上位机(500)之间设有第二接收缓存模块(720),所述轮询调度模块(400)将所述第一封装数据写入所述第二接收缓存模块(720),待所述高速总线空闲时,将所述第一封装数据发送出去。
6.根据权利要求4所述的多通道轮询调度系统,其特征在于,所述第一封装数据包括帧头、数据类型、数据长度、通道号、第一有效数据、校验和帧尾。
7.根据权利要求5所述的多通道轮询调度系统,其特征在于,所述第二接收缓存模块(720)和所述上位机(500)之间设有总线控制模块(600),所述总线控制模块(600)通过所述高速总线与所述上位机(500)连接,所述总线控制模块(600)配置用于将所述第一封装数据转换为适用于所述高速总线的格式,得到第二封装数据。
8.一种根据权利要求1-7任一项所述的多通道轮询调度系统的调度机制,其特征在于,所述多通道轮询调度系统包括多个通道,各所述通道包括所述串行模块(100)和所述第一接收缓存模块(310),所述调度机制包括如下步骤:
9.一种根据权利要求7所述的多通道轮询调度系统的数据传输方法,其特征在于,所述数据传输方法包括数据上传方法和数据下发方法,其中所述数据上传方法包括如下步骤:
10.根据权利要求9所述的多通道轮询调度系统的数据传输方法,其特征在于,所述数据下发方法包括如下步骤: