本设计是在东南大学国家专用集成电路系统工程技术研究中心自主研发的,并在遵循uITRON 3.0标准的RTOS-ASIX OS基础上设计出一套适合于手持设备、仪器仪表等应用的图形用户界面一一ASIX Window。该图形用户界面采用面向对象的设计思想,基于消息循环和事件驱动机制,构建了比较完整的窗口系统,为用户提供了类Win32 API的用户编程接口。考虑到一般嵌入式应用的屏幕较小,以及嵌入式系统处理器与存储器容量的限制,ASIX Window在设计上放弃了窗口剪切等复杂特性,大大降低了系统的复杂性,减少了对系统资源的占用。由于采用基于控件的设计概念,ASIX Window非常适合裁减,可以根据用户的需求方便地增加或删减控件,增加了系统的可裁减性。该图形用户界面已成功应用于PDA,电子词典,税控收款机等多款产品设计中。
1 与 *** 作系统内核的接口
ASIX Window的整体架构是基于消息分发,消息循环以及消息处理之上的。整个ASIX OS平台的结构如图1所示。图1中,最底层的是系统的消息源,包括中断(键盘、触摸屏等)和定时器,一般将它们统称为中断源。中断发生后,进入中断处理程序,该中断处理程序维护其对应的缓冲区后(如果它需要缓冲区),设置事件发生(通过调用内核的事件标志系统调用)。因为系统任务是阻塞在这个事件标志上的,而且系统任务的优先级最高,系统任务将被内核调度运行,系统任务根据所发生事件的类型,来进行相应的处理。比如说,如果是笔中断事件,中断处理程序将笔的坐标信息存放在相应的缓冲区中,并设置相应的事件标志,系统任务将笔坐标的数据转换为相应活动区域(AcTIve Area)的消息,并由系统任务将这个消息发送到当前需要该中断事件的任务中。LCD显示,键盘和笔中断一定是由前台任务(拥有屏幕的任务)接管的,其他外围设备所对应的中断源则由占用该资源的任务接管。
每个任务都有一个自己的信箱(Mail B0x),在每个信箱上都维护着一条消息队列,所有发往该任务的消息都连接在这个队列中。任务代码应该通过消息循环不断地从该队列中取消息并处理,如果消息队列为空,则该任务阻塞,由ASIX OS内核选择下一个就绪的高优先级任务运行。
系统任务是内核的扩展,提供系统基本的服务功能和接口。它接管系统所有的中断资源并将相应的中断事件翻译成为相应的系统消息,并将该消息分发到对应的应用程序任务;系统任务同时维护系统中所有任务的信息,负责确定前台任务(拥有显示屏幕和用户输入焦点的任务,前台任务不一定是CPU正在运行的任务)以及前台任务的切换。系统任务阻塞在底层中断的事件标志上,系统任务拥有最高的优先级。
在系统任务之上是服务任务。服务任务负责提供系统的其他扩展服务。服务任务没有屏幕显示(类似于Linux中的守护进程),服务任务阻塞在自己的消息队列上。服务任务拥有第二高的优先级。
应用程序任务是用户使用的各个应用。应用任务阻塞在自己的消息队列上,所有的应用程序一般都应该拥有屏幕显示,所有的应用程序在同一优先级上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)