一种基于内存直接读写的流程配置方法与流程

专利2022-05-10  36



1.本发明涉及一种基于内存直接读写的流程配置方法,属于计算机控制领域。


背景技术:

2.流程配置方法,即系统运行过程中具有较强的步骤性,从运行开始到程运行结束都是按照预设的步骤进行的,这类操作步骤通常具有高度的统一性,不同步骤往往只有参数不同,步骤可以进行高度抽象统一。
3.计算机运行最基本的操作是内存的读写,直接基于内存读写设计软件具有高效性,由软件开发者以基于内存读写的方法进行软件开发需要较高的成本投入。
4.流程配置方法通常采用面向过程的开发方法,使用状态机进行跳转,当一个流程完成后跳转到接下来的流程,每一个流程的过程都是先判断总线数据或者开关量输入值是否满足某一条件,然后进行总线数据输出或者将某个开关量输出,但是传统的设计方法在流程变动的时候,或者输入输出条件变化的时候,都需要进行代码修改,对于不同的流程操作,需要不同的设计,开发成本高效率低。


技术实现要素:

5.本发明的技术解决问题是:克服现有技术的不足,提供了一种基于内存直接读写的流程配置方法,通过内存映射将总线上数据输入与输出全部映射到内存的读和写,在系统设计中提供了输入数据的判断方法以及输出数据的操作方法。提高了系统的可扩展性,可移植性,以及可维护性。
6.本发明的技术解决方案是:
7.一种基于内存直接读写的流程配置方法,步骤如下:
8.(1)在操作系统堆中申请内存空间,并对内存空间进行划分;
9.(2)设计数据的操作单元结构;
10.(3)设计数据处理结构;
11.(4)根据所述数据处理结构,设计完整操作结构,该完成操作结构包括输入数据处理结构和输出数据处理结构;
12.(5)对输入数据处理结构类型和输出数据处理结构类型进行设计;
13.(6)将程序所操作的底层硬件驱动资源进行内存映射到步骤(1)中所申请的内存空间中;
14.(7)按照完整操作结构定义结构数组,以二进制文件形式读取用户配置的操作步骤及操作方法文件,将读取到的内容填入到所定义的结构数组中,定义数组执行步骤并进行操作。
15.进一步的,所述步骤(1)在操作系统堆中申请内存空间,并对内存空间进行划分,具体为:
16.(1.1)将申请到的内存空间划分为只读地址区ram_in、只写地址区ram_out、标记
量数据区ram_flag以及大块内存临时缓冲区ram_buff;
17.(1.2)使用动态内存申请方法申请内存,并对内存进行划分,设置四种类型内存偏移分别为:
18.只读地址区偏移:offsite_ram_in,值为0x0000;
19.只写地址区偏移:offsite_ram_out,值为0x2000;
20.标记量数据区偏移:offsite_ram_flag,值为0x8000;
21.大块内存临时缓冲区偏移:offsite_ram_buff,值为0xc000。
22.进一步的,步骤(2)设计数据的操作单元结构stru_ramtackle,具体为:
23.(2.1)操作单元结构stru_ramtackle设计为三个16位数据,数据操作包括字节操作和位操作;
24.(2.2)操作地址addroffset为第一个16位数据,可表示为位操作地址、字节操作地址或内存搬移的目的地址;
25.(2.3)操作条件一:cond1为第二个16位数据,可表示为比较值范围的上限值、位操作的匹配位或内存搬移的源地址;
26.(2.4)操作条件二:cond2为第三个16位数据,可表示为比较值范围的下限值、位操作的掩码位或内存搬移的长度。
27.进一步的,所述步骤(3)数据处理结构stru_step_half中包括需要进行的操作类型type、所需要操作数据结构的数量num、以及操作单元结构stru_ramtackle阵列,其中,操作类型包括输入数据处理结构类型type_in和输出数据处理结构类型type_out,操作单元结构stru_ramtackle阵列数量支持最多32个。
28.进一步的,所述步骤(4)设计完整操作结构,具体为:
29.(4.1)完整操作结构stru_step包括两个数据处理结构stru_step_half,以及一个未成功匹配次数变量nomatcnt;
30.(4.2)两个数据处理结构stru_step_half分别为输入数据处理结构和输出数据处理结构;输入数据处理结构和输出数据处理结构具有完全相同的数据结构。
31.进一步的,所述步骤(5)对输入数据处理结构类型type_in和输出数据处理结构类型type_out进行设计,具体为:
32.(5.1)输入数据处理结构类型type_in包括匹配查找match和范围查找region,匹配查找match表示数据实际值和查找设定值一致,范围查找region表示实际值在查找设定值的上下限波动;
33.(5.2)输出数据处理结构类型type_out包括:
34.①
按位写值bit_write,用于对io位的操作;
35.②
按字写值word_write,用于数据的输出,标记量的操作;
36.③
内存搬移操作mem_cpy,内存搬移操作用于对缓冲区数据的处理。
37.进一步的,所述步骤(6)将底层硬件资源进行映射,具体为:
38.(6.1)将所有总线的输出缓冲区和只写地址区ram_out进行映射,映射方法为地址一一对应法;
39.①
1553b总线部分将rt的32个写缓冲区进行输出映射,每个缓冲区32个16位字;
40.②
将can总线基本操作的8个字节写地址区进行映射;
41.③
将开关量输出共n个16位地址进行映射,n为正整数;
42.④
将串口底层1024个字节的发送环形缓冲区进行映射;
43.所述所有总线包括1553b总线、can总线、开关量输出以及串口;
44.(6.2)将所有总线的输入缓冲区和只读地址区ram_in进行映射,映射方法为一一对应法:
45.①
1553b总线部分将rt的32个读缓冲区进行输入映射,每个缓冲区32个16位字;
46.②
将can总线基本操作的8个字节读地址区进行映射;
47.③
将开关量输入共n个16位地址进行映射;
48.④
将串口底层1024个字节的接收环形缓冲区进行映射。
49.进一步的,所述步骤(7)按照完整操作结构定义结构数组,以二进制文件形式读取用户配置的操作步骤及操作方法文件,将读取到的内容填入到所定义的结构数组中,定义数组执行步骤并进行操作,具体为:
50.(7.1)将只读地址区ram_in的数据内容进行更新,将各总线接收缓冲区的数据按照映射关系拷贝到只读地址区ram_in的对应区域中,所述数据内容包括1553b总线收到的数据、can总线收到的数据、串口收到的数据以及开关量输入的状态;
51.(7.2)根据当前索引所对应完整操作数据结构中输入数据处理结构类型type_in进行数据匹配;
52.(7.3)根据数据结构中输出数据结构的操作类型进行数据操作,包括单个位的写,单个字的写以及内存搬移操作;
53.(7.4)将数组执行步骤数值step进行加一操作,继续解析数据下一个结构数据,直到解析完为止。
54.进一步的,所述步骤(7.2)根据当前索引所对应完整操作数据结构中输入数据处理结构类型type_in进行数据匹配,具体为:
55.(7.2.1)如标识为match,将配置文件中的虚拟地址映射到设计内存操作地址,取出操作地址addroffset中的数据,按位与操作条件一cond1,然后异或操作条件二cond2,计算结果如果为0,则查找成功,跳转到步骤(7.3);如果查找失败,将未成功匹配次数变量nomatcnt进行加一操作,回到步骤(7.1);
56.(7.2.2)如标识为region,取出操作地址addroffset中的数据,判断是否大于操作条件一cond1的值,同时小于操作条件二cond2的值;如果满足条件,则查找成功,跳转到步骤(7.3),若不满足条件,查找失败,将未成功匹配次数变量nomatcnt进行加一操作,回到步骤(7.1)。
57.进一步的,所述步骤(7.3)根据数据结构中输出数据结构的操作类型进行数据操作,具体为:
58.(7.3.1)如输出数据结构处理类型typ_out为按位写值bit_write或者为按字写值word_write,这两种操作方式完全一致,首先将虚拟地址映射到内存操作地址,取出操作地址addroffset中的数据,按位与操作条件一cond1,然后异或操作条件二cond2,再将数据写入操作地址addroffset中;
59.(7.3.2)如果输出数据结构处理类型type_out为内存搬移操mem_cpy,则将结构数据中的虚拟地址全部映射到内存操作地址,此时操作地址addroffset表示目的地址,操作
条件一cond1表示源地址,操作条件二cond2表示内存搬移的长度;以操作条件一cond1表示的地址为起始地址,操作条件二cond2的值为长度的内存数据拷贝到操作地址addroffset为起始地址,操作条件二cond2值为长度的内存中,跳到步骤(7.4)。
60.本发明与现有技术相比的有益效果是:
61.(1)本发明基于内存读写,提出了一种流程性配置的设计方法,可以将不同的操作流程适配到同一个流程代码中,针对相同的硬件,只更改流程则不需要对代码进行修改,只需要简单修改配置文件,即可完成流程的重新适配。
62.(2)本发明方法通过内存映射将总线上数据输入与输出全部映射到内存的读和写,在系统设计中提供了输入数据的判断方法以及输出数据的操作方法。提高了系统的可扩展性,可移植性,以及可维护性。
附图说明
63.图1为一种基于内存直接读写的流程配置方法流程图;
64.图2为内存读写结构分解示意图。
具体实施方式
65.下面结合附图对本发明的具体实施方式进行进一步的详细描述。
66.流程配置方法通常采用面向过程的开发方法,使用状态机进行跳转,当一个流程完成后跳转到接下来的流程,每一个流程的过程都是先判断总线数据或者开关量输入值是否满足某一条件,然后进行总线数据输出或者将某个开关量输出,但是传统的设计方法在流程变动的时候,或者输入输出条件变化的时候,都需要进行代码修改,对于不同的流程操作,需要不同的设计,开发成本高效率低,结合流程配置方法的特性,本发明提出了一种基于内存直接读写的流程配置方法,通过内存映射将总线上数据输入与输出全部映射到内存的读和写,在系统设计中提供了输入数据的判断方法以及输出数据的操作方法。提高了系统的可扩展性,可移植性,以及可维护性。
67.如图1所示,本发明提出一种基于内存直接读写的流程配置方法,步骤如下:
68.1、在操作系统堆中申请内存空间,将所申请到的空间划分为只读地址区,只写地址区,标记量数据区以及大块内存临时缓冲区,并确定四块内存地址的偏移量。
69.2、设计数据的操作单元结构,包括三个16位数据,分别表示操作内存的虚拟地址,第二个16位数据表示操作条件一(包括比较值范围的上限值、位操作的匹配位、内存搬移的源地址),第三个16位数据表示操作条件二(包括比较值范围的下限值、位操作的掩码位、以及内存搬移的长度)。
70.3、设计数据处理结构,包括需要操作处理的类型,操作单元结构的数量,以及操作单元结构的数据阵列。
71.4、设计完整操作结构,包括两个数据处理结构,分别为输入数据处理结构和输出数据处理结构,以及一个未成功匹配的变量。
72.5、输入数据处理结构包括匹配查找和范围查找,而输出数据处理结构包括按位写值,按字写值,以及内存搬移操作。
73.6、将底层硬件资源进行映射,包括串口,can总线,1553b总线以及开关量输入和输
出。将所有总线的输出缓冲区(开关量输出地址区)和只写地址区进行映射。将所有总线的输入缓冲区(开关量输入地址区)和只读地址区进行映射。
74.7、读取用户配置的操作步骤以及方法文件,将文件读取到操作步骤数组中,定义步骤执行变量:
75.step1:将只读地址区的数据内容进行更新,将各总线接收缓冲区的数据按照映射关系拷贝到只读地址区中。
76.step2:根据当前索引所对应完整操作数据结构中输入数据处理结构类型type_in进行数据匹配。
77.step3:根据数据结构中输出数据结构的操作类型进行数据操作,包括单个位的写,单个字的写以及内存搬移操作。
78.本发明方法,通过内存映射将总线上数据输入与输出全部映射到内存的读和写,在系统设计中提供了输入数据的判断方法以及输出数据的操作方法。提高了系统的可扩展性,可移植性,以及可维护性。
79.实施例:
80.具体的,本发明流程配置方法按照如下步骤细节执行:
81.s1:在操作系统堆中申请内存空间,并对内存空间进行划分,如图2所示。
82.(1)将申请到的堆空间划分为只读地址区ram_in,只写地址区ram_out,标记量数据区ram_flag,以及大块内存临时缓冲区ram_buff。
83.(2)使用动态内存申请函数malloc()申请内存,并对内存进行划分,设置四种类型内存偏移分别为
84.只读地址区偏移:offsite_ram_in(值为0x0000)。
85.只写地址区偏移:offsite_ram_out(值为0x2000)。
86.标记量数据区偏:offsite_ram_flag(值为0x8000)。
87.大块内存临时缓冲区偏:offsite_ram_buff(值为0xc000)。
88.s2:设计数据的操作单元结构stru_ramtackle。
89.(1)操作单元结构stru_ramtackle设计为三个16位数据,数据操作包括字节操作和位操作。
90.(2)操作地址addroffset为第一个16位数据,可表示为位操作地址、字节操作地址以及内存搬移的目的地址。
91.(3)操作条件一cond1为第二个16位数据,可表示为比较值范围的上限值,位操作的匹配位,内存搬移的源地址。
92.(4)操作条件二cond2为第三个16位数据,可表示为比较值范围的下限值,位操作的掩码位,以及内存搬移的长度。
93.s3:设计数据处理结构stru_step_half。该结构中包括需要进行的操作类型type(操作类型包括输入数据处理结构类型type_in和输出数据处理结构类型type_out),所需要操作数据结构的数量num,以及s2中设计的操作单元结构stru_ramtackle阵列(该阵列数量支持最多32个)
94.s4:设计完整操作结构stru_step。完整操作结构由s3步数据处理结构stru_step_half组成。
95.(1)完整操作结构stru_step包括两个数据处理结构stru_step_half,以及一个未成功匹配次数变量nomatcnt。
96.(2)两个数据处理结构stru_step_half分别为输入数据处理结构和输出数据处理结构。输入数据处理结构和输出数据处理结构具有完全相同的数据结构,不同只是对数据处理的方式不同。
97.s5:对s3中输入数据处理结构类型type_in和输出数据处理结构类型type_out进行设计。
98.(1)输入数据处理结构类型type_in包括匹配查找match和范围查找region。匹配查找match表示数据实际值和查找设定值要一致,范围查找region表示实际值在查找设定值的上下限波动。
99.(2)输出数据处理结构类型type_out包括:

按位写值bit_write,用于对io位的操作。

按字写值word_write,用于数据的输出,标记量的操作。

内存搬移操作mem_cpy,内存搬移操作用于对缓冲区数据的处理。
100.s6:将程序所操作的底层硬件驱动资源进行内存映射到s1中所申请的内存空间中。映射部分包括1553b总线、can总线、开关量输入及开关量输出、串口。
101.(1)将所有总线(包括1553b总线、can总线、开关量输出、串口)的输出缓冲区(开关量输出地址区)和只写地址区ram_out进行映射。映射方法为地址一一对应法

1553b总线部分将rt的32个写缓冲区(每个缓冲区32个16位字)进行输出映射,

将can总线基本操作的8个字节写地址区进行映射,

将开关量输出共n个16位地址进行映射,

将串口底层1024个字节的发送环形缓冲区进行映射。
102.(2)将所有总线的输入缓冲区(开关量输入地址区)和只读地址区ram_in进行映射。映射方法为一一对应法

1553b总线部分将rt的32个读缓冲区(每个缓冲区32个16位字)进行输入映射,

将can总线基本操作的8个字节读地址区进行映射,

将开关量输入共n个16位地址进行映射,

将串口底层1024个字节的接收环形缓冲区进行映射。
103.s7:按照完整操作结构stru_step定义结构数组,数组长度为max_length(值为256),以二进制文件形式读取用户按照s1、s2、s3数据结构配置的操作步骤及操作方法文件,将读到的内容填入到所定义的结构数组tacklestep中,将其内容初始化为0值。定义数组执行步骤step(step从0开始,每执行一条进行加一操作),接下来按步骤周期进行操作。
104.步骤一:将只读地址区ram_in的数据内容进行更新,将各总线接收缓冲区的数据按照映射关系拷贝到只读地址区ram_in的对应区域中(内容包括1553b总线收到的数据,can总线收到的数据,串口收到的数据,以及开关量输入的状态)。
105.步骤二:根据当前索引step完整操作结构stru_step中输入数据处理结构类型type_in进行数据匹配。
106.(1)如标识为match,将配置文件中的虚拟地址映射到设计内存操作地址,取出操作地址addroffset中的数据,按位与上操作条件一cond1,然后异或上操作条件二cond2,计算结果如果为0,则查找成功,跳转到步骤三,如果查找失败,将未成功匹配次数变量nomatcnt进行加一操作,回到步骤一。
107.(2)如标识为region,取出操作地址addroffset中的数据,判断是否大于操作条件一cond1的值,同时小于操作条件二cond2的值。如果满足条件,则查找成功,跳转到步骤三,
若不满足条件,查找失败,将未成功匹配次数变量nomatcnt进行加一操作,回到步骤一。
108.步骤三:根据数据结构中输出数据结构处理类型typ_out进行数据操作。
109.(1)如输出数据结构处理类型typ_out为按位写值bit_write或者为按字写值word_write,这两种操作方式完全一致,首先将虚拟地址映射到内存操作地址,取出操作地址addroffset中的数据,按位与上操作条件一cond1,然后异或上操作条件二cond2,再将数据写入操作地址addroffset中。
110.(2)如果输出数据结构处理类型type_out为内存搬移操mem_cpy,则将结构数据中的虚拟地址全部映射到内存操作地址,此时操作地址addroffset表示目的地址,操作条件一cond1表示源地址,操作条件二cond2表示内存搬移的长度。以操作条件一cond1表示的地址为起始地址,操作条件二cond2的值为长度的内存数据拷贝到操作地址addroffset为起始地址,操作条件二cond2值为长度的内存中。跳到步骤四。
111.步骤四:将步骤数值step进行加一操作,继续解析数据下一个结构数据,直到解析完为止。
112.上述实施例可以将不同的操作流程适配到同一个流程代码中,针对相同的硬件,只更改流程则不需要对代码进行修改,只需要简单修改配置文件,即可完成流程的重新适配。
113.本发明说明书中未作详细描述的内容属于本领域的公知技术。
转载请注明原文地址:https://doc.8miu.com/index.php/read-1722466.html

最新回复(0)