基于构件技术的嵌入式系统复用软件设计
接口说明:构件号是该构件的唯一标识和切入点(该构件入口虚拟程序地址指针);启动选择方式主要用于设定系统的启动方式;缺省通信方式主要是从CAN、MORDBUS和工业以太网中选择一种作为系统默认的通信方式;外部高速和低速时钟频率用于设置高速和低速外围所需的时钟频率,即可以修改最小系统中的初始配置;系统口令主要保证系统的安全性,不允许随意修改组态集成格式;系统型号和装配日期给出了系统软件集成的一些文本信息。设计者可以根据系统设计需要,在构件组态集成时自由配置。
本文引用地址:https://www.eepw.com.cn/article/83653.htm2.2.2 设计扩展构件
由于系统设计时,在系统总配置表单中规定了最大的原始构件数小于或等于511,因此当系统构件数目超过原始构件个数时,必须通过扩展构件来扩展系统构件。扩展构件的接口定义如下:
接口说明:为了方便扩展构件,该接口设计为比较灵活的方式。它仅指出了扩展构件的地址,而扩展的构件个数由组态集成结束标识0来终结组态接口参数的设置。
2.2.3 设计扩展内存构件
在支撑平台的设计中,根据嵌入式控制应用程序的需要,将系统的整个内存空间划分为4大块,每一块有固定的长度和使用域。当应用程序对内存的需求超出设计范围时,可以利用扩展内存构件对内存进行扩展。其接口定义如下:
2.2.4 设计系统结束构件
系统结束构件固定位于软件组态集成序列的前端,即组态集成号为0。它在系统软件构件组态集成完毕后、即将进入系统运行时启用该构件,即处于系统循环的最后。它在系统工作状态工作,执行返回软件组态集成序列起始地址的功能。在系统初始化状态时,完成标定数据和一般数据的获取和保存,并执行启动系统时钟和看门狗,以及返回组态序列起始地址等系统功能。接口参数仅有一个标识该构件的构件号0。
2.3 系统任务类软件构件的设计
任务创建构件Task:一般的多任务操作系统运行之前,系统必须至少建立一个任务,一般是一个空闲任务,其他任务可以在程序运行的过程中创建。但在本支撑平台的设计中,鉴于一个实际的嵌入式控制应用程序的任务数事先是可以确定的,因而设计了任务创建构件,可以利用该构件在应用程序的软件集成过程中创建所需的任务。该构件的组态集成接口定义如下:
设计说明:每定义一个任务使用一次该构件。任务号是外指针,用户可见,里面包含虚拟程序地址指针、任务优先级等信息;系统为每个任务分配了堆栈空间,由于任务的不同,可能对系统资源的需求也不同,为了节省整个系统的内存空间,用户可以从组态集成接口直接指定任务堆栈的大小;为了跟踪任务的运行时间和任务定时,在接口中设计了时间单位和时间长度2个参数,对任务的运行时间进行统计和定时计数。另外,为了方便任务切换,整个支撑平台设计了两类堆栈,即系统堆栈和任务堆栈。因此在建立任务时,要根据所处的系统状态,对每一个任务的任务堆栈进行初始化设置[4]。
2.4 通信和同步管理类软件构件的设计
任务间的通信有2种途径:通过全程变量,或发消息给另一个任务。使用全程变量时,必须保证每个任务或中断服务程序独享该变量。中断服务中保证独享的唯一办法是关中断。如果两个任务共享某变量,各任务实现独享该变量的办法可以是关中断再开中断,或使用信号量。在支撑平台的设计中,采用了信号量方式进行系统的通信和同步管理,包括P操作PSema和V操作VSema两种软件构件。
P操作软件构件实现下列功能:在系统注册状态完成注册表的填写,向系统申请所需的系统资源;在系统参数初始化状态完成信号量数据结构的初始化;在系统工作状态,如果信号量大于零(即信号量可用),则信号量减1,否则表示信号量不可用,进行任务悬挂操作和任务切换。其接口定义如下:
接口说明:信号量地址是外指针,用户可见,是信号量数据结构的入口点;信号量初值若设为1,则表示任务通信,若为0,则表示任务同步。
V操作软件构件只在系统工作状态下工作,与P操作软件构件公用一个数据结构。它首先将信号量减1,然后判断信号量是否大于零。若大于零,表示公共资源可用,则使所给定任务就绪,并进行任务调度和切换。其接口如下:
由于采用构件化的设计方式,系统通信和同步方式可以自由扩展。比如说可以在支撑平台添加邮箱或消息队列构件,采用哪种通信和同步方式主要根据系统的设计需要而定。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论