一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种远程调用框架的实现方法及系统与流程

2022-06-16 05:43:42 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别涉及一种远程调用框架的实现方法及系统。


背景技术:

2.现代计算机系统包括主机端和设备端,两者通过标准通信接口连接,例如pcie等。通常,计算过程是发生在主机端,设备端主要用于支持主机端完成计算过程,例如提供计算所需的数据等等。
3.其中,主机端通过驱动程序与设备端实现通信,驱动程序指的是设备驱动程序(device driver),其是一种可以使计算机和设备进行相互通信的特殊程序,相当于硬件的接口,主机端操作系统只有通过该接口才能控制设备端的工作。
4.但是当计算机系统中设备端的功能越来越强大时,对应的设备驱动程序也越来越复杂,传统的计算方式将会增加主机端的负载,使得设备端的功能无法得到充分发挥。因此,如何提高主机端和设备端的功效便成为一种新的开发趋势。


技术实现要素:

5.针对现有技术存在的设备端功能无法得到充分发挥的问题,本发明的目的在于提供一种远程调用框架的实现方法和系统。
6.为实现上述目的,本发明的技术方案为:
7.第一方面,本发明提供一种远程调用框架的实现方法,所述方法包括,
8.主机端生成调用或者请求并发送给设备驱动程序,所述调用或者请求中携带有设备端需要执行的命令;
9.设备驱动程序接收所述调用或者请求后,确定与所述命令相对应的参数在共享内存中的保存地址;
10.设备驱动程序将所述调用或者请求以及所述参数的保存地址封装到消息中;
11.设备驱动程序将所述消息发送到设备端的硬件消息队列中,以便于设备端的固件从所述硬件消息队列中获取到所述消息,并通过解析获得设备端需要执行的命令,从而在执行完所述命令而获得执行结果后将所述执行结果存储在所述共享内存中并向所述主机端发送完成通知,所述完成通知中携带有所述执行结果在所述共享内存中的存放地址;
12.主机端接收所述完成通知,并根据所述完成通知中携带的所述存放地址从所述共享内存中获取所述执行结果。
13.第二方面,本发明还提供一种远程调用框架的实现方法,所述方法包括,
14.设备端的固件从设备端的硬件消息队列中获取消息,所述消息由主机端通过设备驱动程序发送到所述硬件消息队列中;
15.所述固件从所述消息中解析出设备端需要执行的命令以及与所述命令相对应的参数在共享内存中的保存地址;
16.所述固件根据所述保存地址从共享内存中获取所述参数,再根据所述参数执行所
述命令从而获得执行结果;
17.所述固件将所述执行结果保存在所述共享内存中,并向所述主机端发送完成通知,所述完成通知中携带有所述执行结果在所述共享内存中的存放地址,以便于所述主机端根据所述存放地址从所述共享内存中获取所述执行结果。
18.第三方面,本发明还提供一种远程调用框架的实现方法,所述方法包括:
19.主机端生成调用或者请求并发送给设备驱动程序,所述调用或者请求中携带有设备端需要执行的命令;
20.设备驱动程序接收所述调用或者请求后,确定与所述命令相对应的参数在共享内存中的保存地址;
21.设备驱动程序将所述调用或者请求以及所述参数的保存地址封装到消息中;
22.设备驱动程序将所述消息发送到设备端的硬件消息队列中;
23.设备端的固件从设备端的硬件消息队列中获取消息,所述消息由主机端通过设备驱动程序发送到所述硬件消息队列中;
24.所述固件从所述消息中解析出设备端需要执行的命令以及与所述命令相对应的参数在共享内存中的保存地址;
25.所述固件根据所述保存地址从共享内存中获取所述参数,再根据所述参数执行所述命令从而获得执行结果;
26.所述固件将所述执行结果保存在所述共享内存中,并向所述主机端发送完成通知,所述完成通知中携带有所述执行结果在所述共享内存中的存放地址;
27.主机端接收所述完成通知,并根据完成通知中携带的所述存放地址从所述共享内存中获取所述执行结果。
28.进一步的,所述消息具有优先级,所述固件遍历所述硬件消息队列后按照优先级从高到低的顺序获取消息。
29.优选的,每当所述固件从所述硬件消息队列中读取一次消息后,所述硬件消息队列中存储的所述消息的优先级增加预设值。
30.优选的,所述固件按照时间先后顺序读取同等优先级的消息。
31.进一步的,所述硬件消息队列设置有多个分组,且各分组分别配置有独立的内存页表。
32.优选的,所述主机端与所述设备端通过pcie总线通信连接。
33.进一步的,所述设备端将上报的事件或状态以及对应的数据封装在消息中,通过中断上报给主机端。
34.第四方面,本发明还提供一种远程调用框架的实现系统,包括:
35.主机端,所述主机端用于生成调用或请求,所述调用或请求中携带有设备端需要执行的命令;
36.设备驱动程序,所述设备驱动程序安装在所述主机端并用于使所述主机端与所述设备端相互通信,所述设备驱动程序用于接收所述调用或请求并确定与调用或请求中携带的所述命令相对应的参数在共享内存中的保存地址,再将所述调用或者请求以及所述参数的保存地址封装到消息后发送到设备端的硬件消息队列中;
37.设备端,所述设备端包括固件和硬件消息队列,所述硬件消息队列用于存放所述
设备驱动程序发送的消息,所述固件用于将所述消息从所述硬件消息队列中取出并从所述消息中解析出设备端需要执行的命令以与所述命令对应的参数的保持地址,所述固件还用于根据所述保存地址从共享内存中获取所述参数后再根据所述参数执行所述命令从而获得执行结果,所述固件还用于将所述执行结果保存在所述共享内存后向所述主机端发送携带有所述执行结果在共享内存中存放地址的完成通知;
38.以及共享内存,所述共享内存与所述主机端以及所述设备端通信连接,所述共享内存用于保存所述参数和所述执行结果。
39.优选的,所述设备端配置有多个,多个所述设备端分别通过对应的设备驱动程序与所述主机端通信连接。
40.采用上述技术方案,由于主机端通过设备驱动程序将命令以及对应的参数保存地址封装到消息中后再发送给设备端的硬件消息队列中,使得设备端藉由其固件能够从该消息中解析出需要执行的命令,并根据参数的保存地址获得参数,从而根据参数执行命令并获得执行结果,实现了对设备端功能的远程调用,使设备端的功能得到充分发挥,并且能够降低主机端的负载,提高计算机系统的功效。
附图说明
41.图1为本发明实施例一的方法流程图;
42.图2为本发明实施例二的方法流程图;
43.图3为本发明实施例三的方法流程图;
44.图4为本发明实施例八中的系统结构示意图。
具体实施方式
45.下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
46.需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示对本发明结构的说明,仅是为了便于描述本发明的简便,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
47.对于本技术方案中的“第一”和“第二”,仅为对相同或相似结构,或者起相似功能的对应结构的称谓区分,不是对这些结构重要性的排列,也没有排序、或比较大小、或其他含义。
48.另外,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个结构内部的连通。对于本领域的普通技术人员而言,可以根据本发明的总体思路,联系本方案上下文具体情况理解上述术语在本发明中的具体含义。
49.实施例一
50.一种远程调用框架的实现方法,该方法应用于主机端,如图1所示,该方法包括以
下步骤:
51.s1,主机端生成调用或者请求并将该调用或者请求发送给设备驱动程序。其中,该调用或者请求中携带有设备端需要执行的命令,主机端通常是根据业务需求生成调用或者请求。
52.例如,主机端(host)端调用设备驱动程序接口:get device version()。
53.s2,设备驱动程序接收到调用或者请求后,确定与设备端需要执行的命令相对应的参数在共享内存中的保存地址。
54.其中共享内存(shared memory)通常指在多处理器的计算机系统中,可以被不同中央处理器(cpu)访问的大容量内存。共享内存是unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,多个程序间也可以通过共享内存来传递信息。
55.本实施例中,共享内存用于同时与主机端和设备端通信,使得主机端和设备端均能够访问该共享内存,使得共享内存中存储的数据可被主机端和设备端使用。
56.s3,设备驱动程序将调用或者请求以及参数的保存地址封装到消息中。
57.例如,设备驱动程序将调用或请求封装成消息(message),该消息中包含命令:get_device_version,及用于与该命令对应的参数在共享内存中的保存地址,该地址指向共享内存(shared memory)中存储有对应参数的某个区域。
58.s4,设备驱动程序将封装好的消息发送到设备端(device)的硬件消息队列(hardware message queue)中,以便于设备端的固件从该硬件消息队列中获取到上述的消息,之后固件通过对该消息进行解析而获得设备端需要执行的命令(即get_device_version),以及与该命令对应的参数在共享内存中的保存地址,再之后固件通过参数在共享内存中的保存地址从共享内存中获取到对应的参数并根据该参数执行上述的命令,执行完该命令后即获得执行结果,固件将执行结果存放在共享内存中后再向主机端发送完成通知,该完成通知中携带有执行结果在共享内存中的存放地址。
59.s5,主机端接收完成通知,并根据完成通知中携带的存放地址从共享内存中获取执行结果,至此,主机端完成对设备端的远程功能调用。
60.可见,通过本实施例提供的方法,使得主机端的负载可以通过设备端来实现。
61.实施例二
62.一种远程调用框架的实现方法,该方法应用于设备端,如图2所示,该方法包括以下步骤:
63.s11,设备端的固件从设备端的硬件消息队列中获取消息,该消息由主机端通过设备驱动程序发送到硬件消息队列中的。
64.该消息中包含有设备端需要执行的命令以及与该命令相对应的参数在共享内存中的保存地址。
65.s12,固件从获取到的消息中解析出设备端需要执行的命令以及与该命令相对应的参数在共享内存中的保存地址。
66.s13,固件根据该保存地址从共享内存中获取到相应的参数,再根据该参数执行命令,从而获得执行结果。
67.s14,固件将该执行结果保存在共享内存中,并向主机端发送完成通知,完成通知中携带有执行结果在共享内存中的存放地址,以便于主机端根据存放地址从共享内存中获
取执行结果。
68.实施例三
69.一种远程调用框架的实现方法,该方法应用于主机端和设备端,该主机端与设备端通过标准接口通信连接,例如pcie、标准串口(rs232)、以太网接口、usb接口、无线接口等。
70.如图3所示,该方法包括以下步骤:
71.s21,主机端生成调用或者请求并将该调用或者请求发送给设备驱动程序。其中,该调用或者请求中携带有设备端需要执行的命令,主机端通常是根据业务需求生成调用或者请求。
72.例如,主机端(host)端调用设备驱动程序接口:get device version()。
73.s22,设备驱动程序接收到调用或者请求后,确定与设备端需要执行的命令相对应的参数在共享内存中的保存地址。
74.其中共享内存(shared memory)通常指在多处理器的计算机系统中,可以被不同中央处理器(cpu)访问的大容量内存。共享内存是unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。
75.本实施例中,共享内存用于同时与主机端和设备端通信,使得主机端和设备端均能够访问该共享内存,使得共享内存中存储的数据可被主机端和设备端使用。
76.s23,设备驱动程序将调用或者请求以及参数的保存地址封装到消息中。
77.例如,设备驱动城区将调用或请求封装成消息(message),该消息中包含命令:get_device_version,及用于与该命令对应的参数在共享内存中的保存地址,该保存地址指向共享内存(shared memory)中存储有对应参数的某个区域。
78.s24,设备驱动程序将封装好的消息发送到设备端(device)的硬件消息队列(hardware message queue)中。
79.s25,设备端的固件从设备端的硬件消息队列中获取消息,消息由主机端通过设备驱动程序发送到硬件消息队列中。
80.s26,固件从其获取的消息中解析出设备端需要执行的命令以及与该命令相对应的参数在共享内存中的保存地址。
81.s27,固件根据参数在共享内存中的保存地址从共享内存中获取到对应的参数,再根据该参数执行上述命令,从而获得执行结果。
82.s28,固件将执行结果保存在共享内存中,并向主机端发送完成通知,完成通知中携带有上述的执行结果在共享内存中的存放地址。
83.s29,主机端接收该完成通知,并根据完成通知中携带的存放地址从共享内存中获取执行结果。
84.可以理解的是,主机端既可以实现同步调用,也可以实现异步调用。在同步调用下,主机端每向设备端发送一个调用或者请求后,需等待设备端反馈的执行结果后,再进行下一轮循环。在异步调用下,主机端在向设备端发送调用或者请求后,相关的进程进入休眠状态,直至相关的各进程所需要的执行结果被反馈到主机端后,相关的进程被唤醒以继续执行后续操作。其中,同步调用与异步调用与进程没有必然关系,同一进程中既可以同步调
用,也可以异步调用。
85.实施例四
86.在上述任一个实施例提供的方案中,在一段时间内,主机端向设备端发送的调用或者请求通常有多个,设备端一方面可以按照时间先后顺序执行其接收到的消息中携带的命令,另一方面,还可以通过主机端为调用或者请求设置优先级,例如0-255共256个等级,使得存储在硬件消息队列中的消息具有优先级,从而使得设备端的固件在硬件消息队列中发现有多个消息时,能够通过比较各个消息中调用或者请求的优先级信息后按照优先级由高到低的顺序处理各个消息,通常,固件遍历硬件消息队列后按照优先级信息以从高到低的顺序获取消息。
87.实施例五
88.在实施例四提供的方案基础上,当硬件消息队列中的消息有多个且配置有优先级时,为了防止低优先级的消息永远等不到被执行的情况发生,本实施例中,具体配置上述的方法还包括以下步骤:
89.每当固件从硬件消息队列中读取一次消息后,硬件消息队列中存储的消息的优先级增加预设值。
90.其中,预设值优选为1,即固件每读取一次消息后,硬件消息队列中仍然存在的消息的优先级的等级增加1,如此设置,使得低优先级的消息在等待一定的时间后即能够获得较高的优先级,从而避免了低优先级的消息始终无法被执行的情况发生。
91.在一个优选实施例中,对于硬件消息队列中优先级相同的消息,固件按照时间先后顺序读取同等优先级的消息。
92.实施例六
93.在实际应用中,上述任一实施例提供的方案中,设备端的硬件消息队列支持多个分组,且每个分组配置有独立的内存页表;如此设置,使得服务于同一进程的命令能够被存储在同一个分组中,并共用一个内存页表,从而使得设备端可以方便的进行进程/页表的切换。并且可以理解的是,硬件消息队列支持多个分组的设置形式,并不限于主机端是单进程还是多进程。
94.以主机端获取设备版本号为例说明主机的调动过程:
95.1、主机端创建一个任务进程,并获取进程号(xpid);
96.2、在该进程内,主机端(host)调用驱动接口:getdeviceversion(),并将该调用的优先级设为x(0~255之间的任意值);
97.3、驱动将调用或请求封装成消息(message)q,消息中包含命令:get_device_version、进程号(xpid)、调用序列号以及用于保存调用参数的内存地址,改地址指向共享内存中(shared memory)的某个区域;然后将消息发送到设备端(device)的硬件消息队列的特定分组中,该特定分组通过进程号(xpid)与主机端的进程绑定;
98.4、同步调用时,主机端等待设备端的状态返回;异步调用时,主机端先让进程休眠,等待设备端状态返回时唤醒;
99.5、设备端遍历硬件消息队列的各个组,取出并执行消息;切换组时,也同时切换到对应的内存页表;
100.6、遍历消息q时,如果消息q的优先级x在同组中最高,则取出该消息,解析出命令:
get_device_version、调用序列号,以及对应的参数在共享内存中的地址,同时该组中的其他消息的优先级升高一级;
101.7、设备端执行该指令,将结果保存到共享内存中,并向主机端发送完成通知。
102.实施例七
103.在上述任一实施例提供的方案中,设备端将上报的事件或状态以及对应的数据封装在消息中,通过中断方式上报给主机端,以便于主机端获取到该消息后执行相应的操作,同时在设备端出现错误情况时主动上报状态或事件。
104.实施例八
105.一种远程调用框架的实现系统,如图4所示,包括主机端、设备驱动程序、设备端、固件、硬件消息队列和共享内存。
106.其中,主机端用于生成调用或请求,调用或请求中携带有设备端需要执行的命令。
107.其中,设备驱动程序安装在主机端并用于使主机端与设备端相互通信,设备驱动程序用于接收调用或请求并确定与调用或请求中携带的命令相对应的参数在共享内存中的保存地址,再将调用或者请求以及参数的保存地址封装到消息后发送到设备端的硬件消息队列中。
108.其中,设备端包括上述的固件和硬件消息队列,其中硬件消息队列用于存放设备驱动程序发送的消息。而固件则用于将消息从硬件消息队列中取出并从消息中解析出设备端需要执行的命令以及与该命令对应的参数的保持地址,固件还用于根据保存地址从共享内存中获取参数后再根据参数执行命令从而获得执行结果,固件还用于将执行结果保存在共享内存后向主机端发送携带有执行结果在共享内存中存放地址的完成通知。
109.其中,共享内存与主机端以及设备端通信连接,共享内存用于保存参数和执行结果。
110.其中,主机端还用于为调用或者请求配置优先级信息,以便于:使固件遍历硬件消息队列后按照优先级信息以从高到低的顺序获取消息;每当固件从硬件消息队列中读取一次消息后,将硬件消息队列中存储的消息的优先级增加预设值;以及使固件按照时间先后顺序读取同等优先级的消息。
111.其中,硬件消息队列对应地设置有多个分组,且各分组分别配置有独立的内存页表。
112.在另一个实施例中,设备端配置有多个,多个设备端均通过对应的设备驱动程序(其中,当设备端相同时,对应的设备驱动程序也相同)与主机端通信连接,而主机端则通过不同的共享内存与各个设备端通信,或者主机端还可以通过同一个共享内存与各个设备端通信。如此设置,使得主机端的任务可以分发给更多的设备端来执行,从而进一步提高系统的功效。
113.以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献