嵌入式微体系架构是C#与CMSIS架构的复合体,如下图所示:
根据C#规范,分为运用层App与体系层System两层。选用两个大结构体AppStruct和SystemStruct把它们各自封装起来。
Appstruct里封装了两个结构体:Data和Menu。两者都是运用层的数据类型。
Data是运用层事务逻辑所触及的传感器、驱动器等全局变量、进程变量、存储参数、设置参数等数据,Data结构体相似数据库概念,仅仅嵌入式体系数据一般不大,用一个结构体完成即可。
Menu是运用层需求的各种菜单显现页面,一个页面下能够加载多种控件,比方布景文字(BackText)、表(Chart)、标签(Label)和文本(TextBox)四种。现在版别msOS由于首要针对工控,支撑本地支撑是非字库屏,所以只需求这四种控件即可,菜单结构相对简略,往后需求支撑是非点阵屏乃至是彩屏,需求支撑的控件就更多了。
AppStruct能够认为是运用层App的数据库,里边包含了事务逻辑的数据库和菜单界面显现的各个页面。根据这种结构体封装的优点在于把全局变量统一到数据库中办理,尤其是事务逻辑中的全局变量都放到Data区中统一办理,这充沛的利用了全局变量的运用便利性,又有用的防止全局变量满天飞,处理了长期以来引起极大争议的全局变量问题。
运用层分为三块,除了数据库意思的AppStruct外,还有事务逻辑(Logic)及菜单界面(Menu),两者别离跟工业自动化控制体系的可编程控制器(PLC)和组态屏(HMI)对应。在工业自动化中,PLC内部有事务逻辑参数存储单元,HMI内部有菜单页面存储单元,现在等价于把PLC和HMI的存储单元合并在AppStruct中来办理。
事务逻辑(Logic)呼应各种传感器过来的信息,经过给定的算法或操作流程,及时指挥驱动器作业,所以需求设定在较高优先级的使命中。菜单界面(Menu)显现事务逻辑处理进程中需求显现的各种参数,只需求满意眼睛的改写频率即可,所以改写速度相对较慢,一般放在最低优先级使命中处理。需求留意的是,菜单界面不包括按键部分,按键发生按键音讯,归入事务逻辑中,菜单界面仅仅显现各种参数,而不会去修正参数,这个确保了数据库只被事务逻辑一个使命修正,防止了一个数据一起被多个使命修正发生过错的问题。
SystemStruct封装了整个底层体系,笼统成一个面向运用的接口芯片。
Initialize为初始化函数,在体系运用前,必需求先初始化。
Device结构体中封装了各类设备,比方LCD、ADC、USART、IO、Timer等。
OS中封装了uC/OS-II的各种常用接口函数。
Gui中封装了界面处理接口。
AppStruct和SystemStruct都是一个自界说的结构体类型,需求用这两个类型界说一个目标。
界说运用层结构体。
界说体系层结构体。需求留意的是,由于选用结构体模仿类功用,System在界说的时分就指定了System的Initialize初始化函数,这样体系开端就能够运用System.Initialize功用,便于形式上的完美。
一个System结构体,封装了整个体系层,中间件接口及设备接口,都在System中表现,等价于一个面向于运用层的处理器,App运转于体系层之上,App只需求调用System中的接口即可,简略、易用,这样规划做到了跟实践的芯片无关性,比较简单跨渠道,当需求替换芯片的时分,只需求确保System接口共同,运用层无需修正代码。