嵌入式图形用户界面在S3C44B0X上的移植网(2)
2014-02-16 01:05
导读:移植的目标平台的液晶模块使用320×240分辨率, 通过总线的形式连接在S3C44B0X的Bank3上, 并在系统的内存区开辟了一块内存作为液晶显示的后台缓存。 要成功
移植的目标平台的液晶模块使用320×240分辨率, 通过总线的形式连接在S3C44B0X的Bank3上, 并在系统的内存区开辟了一块内存作为液晶显示的后台缓存。
要成功将μC/GUI移植到该平台上一般要解决以下几方面的问题。
3.2 μC/GUI与操作系统的接口相关部分的修改
μC/GUI 在与μC/OS-II结合应用时通常被分为几个小的显示任务,由于每个显示任务都共用一个GUI_Context上下文变量,在操作系统进行任务切换时一个GUI任务对上下文的操作可能被另外一个GUI任务打断,此时新的GUI任务对上下文的操作是在被中断任务的上下文基础上进行的,这样前一个任务的信息会被后一个任务所使用,有些基本信息作为公用信息需要被共用,而有些信息在处理过程中是不能被打断的。这就存在资源互斥的问题。
μC/GUI在设计时是通过上锁和解锁来解决此问题。其过程是通过在关键区域入口设置GUI_X_Lock()以获得专一访问权,用完后在出口处设置GUI_X_ Unlock()让出资源,达到多个GUI任务对同一数据在关键区域内访问的互斥。
在μC/GUI移植到μC/OS-II的过程中,则需要利用操作系统实现资源互斥的系统调用对上述宏进行替换,这涉及到3个任务调度函数的重新定义:
void GUI_X_InitOS (void);
/*任务初始化*/
void GUI_X_Lock (void);
/*任务锁定*/
void GUI_X_Unlock (void);
/*任务解锁*/
此外μC/GUI还用到μC/OS-II中的延时调用,通过在GUI_X_Delay()中调用μC/OS-II的OSTimeDly()实现延时和任务切换。这涉及到2个系统时间接口函数的定义:
int GUI_X_GetTime (void);
/*取系统时间*/
void GUI_X_Delay (int ms);
/*延时函数*/
下一页