一种共享内存的嵌入式软件接口设计方法与流程

文档序号:12176391阅读:1000来源:国知局
一种共享内存的嵌入式软件接口设计方法与流程

本发明属于计算机控制技术领域,具体涉及一种共享内存的嵌入式软件接口设计方法,能解耦应用层软件和硬件或外部总线之间的关系。



背景技术:

大部分的嵌入式软件都过分依赖硬件,从而导致软件的可移植性比较差。而对于嵌入式软件来说,有一大部分的工作都是和硬件在进行数据交互,那么采取何种行之有效的方法,可以对嵌入式软件的接口数据进行统一的管理,也就成了亟待解决的问题。

在嵌入式软件中,应用层软件通常难以进行项目之间的复用,原因是每个软件项目接口部分都会不尽相同。如果将应用层软件和接口软件交织在一起,则会发现每个项目都需要对软件进行大幅度的更改,尤其是和接口数据相关的部分。如果存在一种软件接口的设计,将嵌入式应用层软件和硬件地址或总线进行剥离,接口软件专门负责和外设、硬件地址或总线数据交互,而应用层软件不再和硬件地址或总线进行数据交互,则在一定程度上可以解耦嵌入式应用层软件和硬件地址或总线之间的关系。

同时,对于嵌入式软件而言,在应用层软件计算过程中,难免也会产生很多的中间变量,产生这些中间变量的应用可能各不相同,从而数据的存放格式也会不尽相同。对于该部分中间变量的数据进行存取,就会有很多种方式,这样无疑增加了编程人员的工作难度。

图1显示的是原始的嵌入式应用层软件和硬件地址或总线数据的交互模式。可以看出应用层软件需要和硬件设备或总线每周期进行交互,不同的项目,就 会使得软件的应用层移植性较差,同时,不利于接口数据的统一管理。



技术实现要素:

本发明的目的是,能够实现嵌入式应用层软件和硬件设备或外部总线之间解耦合,从而使得应用层软件不再和硬件地址或外部总线直接交互,进一步提高应用层软件的可移植性。

综合以上提出的问题,我们需要提出一种方法,在嵌入式软件的设计过程中,应用层软件所需要和产生的数据不再出现在应用层里,而是专门去一个共享内存数据字典池里存取,于此同时,共享内存数据字典池的数据都统一管理,这样一来就可以实现嵌入式应用层软件和硬件设备的接耦合,并提高编程效率。

本发明中的嵌入式软件接口的设计方法,采用共享内存数据字典池作为载体,并包括以下步骤:

步骤1.建立硬件地址或总线的数据和共享内存数据数据字典池的索引

共享内存数组字典池的地址分配,将输入/输出硬件地址或总线数据分配到共享内存数据字典池中的固定地址;对于输入/输出硬件地址或总线的数据,通过配置文件和共享内存数据字典池建立对应关系;该配置文件存放的是输入/输出硬件地址或总线的数据和共享内存数据字典池中数据的对应关系,即数据索引,数据索引包括模拟量、离散量、整形、浮点型数据的输入/输出索引;

步骤2.建立应用层软件的数据和共享内存数据字典池的交互

应用层软件和共享内存数据字典池通过函数或宏,实现交互数据的读取或存放,并进一步进行计算。

本发明具有的优点和有益效果:实现了嵌入式应用层软件和硬件地址或总线数据的解耦合,使用共享内存数据字典池的方法,对数据进行统一管理,可 以进一步提高数据的一致性,可以采用工具生成配置文件,从而提高程序设计人员的工作效率。

附图说明

图1是原始的嵌入式软件接口数据的设计模式;

图2是本发明的嵌入式软件接口数据的设计模式;

图3是本发明的一个应用实例模型。

具体实施方式

使用本发明时,首先需要建立一个共享内存数据字典池,如图2中,共享内存数据字典池中包含了应用层软件所输入输出所需要的所有数据,还包括产生的中间变量。

接下来形成一个配置文件,该配置文件是将硬件地址或总线数据和共享内存中定义的数据对应起来。这样通过专用的数据接收方法,硬件地址或总线数据直接放入共享内存中统一管理起来,这个步骤可以通过工具来实现。

接下来对于嵌入式应用层软件来说,与之交互的就只剩下共享内存的数据了。共享内存数据可以分成整形和浮点型数据等,数据的整形和浮点型也都满足对应关系,从而满足应用层软件所需要的输入输出。

嵌入式应用层软件获取自己需要的数据,运算之后将运算结果或产生的中间变量在一一放置在共享内存中,需要输出的数据则通过配置文件和硬件地址或总线进行关联,从而实现数据的输出。

完成以上步骤之后,就可以实现基于共享内存的嵌入式软件接口设计方法。

实施例

应用场景如下:在基于DSP的伺服控制中,一个伺服的系统软件可以控制 多个舵机(本例中控制两个舵机)。对于舵机的控制来说,首先需要舵机控制的数据,也就是舵机的相关信息,其次需要舵机的控制命令,最后将舵机控制的状态再汇报给上位的系统。

对于伺服的软件,采用基于共享内存的方法进行接口部分的设计,如图3所示。首先建立共享内存数据字典池。在该实例中,共享内存的数据字典池包括两部分,分别是整形的共享内存数据字典池和浮点型的共享内存数据字典池。对于定义好的共享内存数据池,然后通过工具生成IO_Config文件,将FPGA或硬件设备的数据地址和共享内存数据池关联起来,通过数据的采集就可以将FPGA或硬件设备上的数据放置到整形的共享内存中去,然后将部分需要转换成浮点型的数据进行浮点型的转化,存放在浮点型的共享内存数据字典池中去,这样就实现了共享内存数据字典池和FPGA或硬件设备的数据交互。

整形和浮点型的共享内存数据池的内容都包括舵机1、舵机2和系统相关的信息。对于伺服的应用层软件,直接从共享内存的数据字典池中取数据进行运算,将最终的结果在重新填入共享内存数据池中,从而通过配置文件输出到FPGA或硬件设备中去,完成整个伺服软件的输入输出过程。

当前第1页1 2 3 
网友询问留言 已有1条留言
  • 访客 来自[新疆乌鲁木齐市电信] 2019年06月15日 17:13
    买内存比买电脑主机还要贵…,所以才走结进。
    0
1