基于ARM7支持触摸屏和实时操作系统的开发与应用
d参数,进行X、Y向触摸点选择、去抖、位置的计算等
return ack;//返回触摸屏对应位
置值;
}
mC/GUI及与操作系统的接口
mC/GUI是运行于操作系统之上的程序,它既需要与操作系统协调,又需要与各种输入/输出设备协调,即通过输入设备接收用户请求,通过输出设备发送微处理器的处理结果。因此,mC/GUI的接口主要包括两个:与操作系统的接口和与输入/输出设备的接口,这也正是在移植mC/GUI的过程中所要解决的关键问题。mC/GUI与mC/OS-II结合应用时通过上锁和解锁来解决资源互斥的问题,其过程是通过在关键区域入口设置GUI_X_Lock()以获得专一访问权,用完后在出口处设置GUI_X_Unlock()让出资源,达到多个GUI任务对同一数据在关键区域内访问的互斥。
在mC/GUI移植到mC/OS-II的过程中,需要利用操作系统的资源来实现GUI所需要的功能,即利用μC/OSII提供的时间管理、任务管理和资源共享机制来实现μC/GUI中相应的功能,具体要实现以下函数的重新定义:
(1)时间函数
GUI_X_Delay() //延迟指定的时间段后返回
GUI_X_ExecIdle() //视窗管理器的非堵塞函数调用
GUI_X_GetTime() //返回当前
系统的时间,以毫秒为单位
(2)内核接口函数
GUI_X_InitOS() //初始化内核
接口模块
GUI_X_GetTaskID() //返回一个
当前任务/线程唯一的32位标识符
GUI_X_Lock() //给GUI上锁
GUI_X_UnLock() //解锁GUI
GUI_X_Log() //返回调试信息
(3)LCD底层驱动程序
要使mC/GUI能够在目标系统上运行,首先要对mC/GUI进行配置和修改,也就是移植。移植工作主要是指对配置头文件中的宏定义根据具体情况进行修改,包括LCD宏和LCD控制器宏。使用mC/GUI库函数时,必须在主函数前调用头文件"gui.h",并根据需要做适当的修改。值得注意的是,在此文件的预定义语句中,必须将GUI_SUPPORT_TOUCH设为1。如果需要在屏幕上显示中文,除了添加中文字库到工程中外,还需要将GULDEFAULT_FONT设为&GULFontHZ12,HZ12代表使用的中文字体。如果需要在mC/GUI的控件中使用中文,也需要在控件的预定义语句中作相应的修改。由于ARM7芯片S3C44B0X内部集成了LCD控制器,LCD底层驱动程序主要是设计与LCD屏相关的参数以及其特殊的控制寄存器,主要包括以下的参数和寄存器:
#dene SCR_XSIZE (640)
//LCD水平尺寸
#dene SCR_YSIZE (240)
//LCD垂直尺寸
#dene LCD_XSIZE (640)
//LCD水平分辨率
#dene LCD_YSIZE (240)
//LCD垂直分辨率
#define ARRAY_SIZE_COLOR (SCR_XSIZE/1*SCR_YSIZE)
//LCD水平与垂直比例
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
//LCD水平字节尺寸
#dene SCR_XSIZE (640)
//LCD水平尺寸
#dene SCR_XSIZE (640)
//LCD水平尺寸
寄存器的定义根据不同的微处理器和LCD颜色、尺寸等来定义,这里以S3C44B0X说明:
rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);
rLCDCON2=(LINEVAL)
|(HOZVAL_COLOR<<10)|(10<<21);
rLCDSADDR1= (0x3<<27)|(((U32)frameBuffer>>22)<<21)|M5D((U32)frameBuer>>1);
rLCDSADDR3= (LCD_XSIZE/2)|(((SCR_XSIZE-LCD_XSIZE)/2)<<9);
嵌入式操作系统下应用程序的开发
在嵌入式操作系统下开发基于ARM7的应用程序主要是进行任务的划分,根据每个任务的紧急程度建立不同优先级,下面就任务划分的原则和实例进行说明:
任务划分原则
将一个软件系统分解成并行任务时,主要考虑系统内功能的异步性。通过分析数据流图中的变换,确定哪些变换是并行的,哪些变换本质上是顺序执行的。通过这种方法,一个变换对应一个任务,或一个变换包括几个任务,同时应遵循如下原则:
● I/O依赖性:由于I/O速度的限制,对它操作的程序应独立为一个任务;
● 时间关键性:将有时间关键性的功能分离出来,组成独立的任务,赋予高优先级;
● 计算功能:计算功能要占用较多CPU时间间,应赋予他们较低的优先级;
● 功能内聚:将紧密相关的功能组成一个任务,使各种功能共享资源或相同事件的驱动;
● 时间内聚:将在同一时间内完成的任务,即使功能不相关,组成一个独立的任务;
● 周期执行功能:相同周期内执行的各功能组成一个任务,频率高的赋予高优先级。
应用实例
本文以实际项目为例进行分析,在本项目中触摸屏作为输入设备、系统检测输出窗口,通过控制器嵌入mC/OS-II操作系统和mC/GUI配合使用实现完成相应按钮指令的功能,并在后台的特定任务中完成各种中断、计算、通讯等功能。因此进行了如表1所列的任务划分和定义。
触摸屏的应用程序可以根据触摸屏的实际使用情
- 嵌入式实时操作系统ECOS在S3C2510上的移植实现(04-21)
- 嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现(06-09)
- 嵌入式系统便携式数据采集装置设计(06-19)
- VxWorks下AD/DA驱动系统设计及测试(01-11)
- Coldfire内核的MCU通用工业控制平台(08-09)
- 基于ARM的人体生理参数监护系统的设计(11-28)