新闻中心

EEPW首页 > 光电显示 > 设计应用 > 基于I2C的OSD显示驱动设计与实现

基于I2C的OSD显示驱动设计与实现

作者:时间:2012-07-31来源:网络收藏

T128设备的初始化,主要是首先映射GPIO和T128相关寄存器到虚拟地址空间,然后检测总线有没有初始化,创建互斥体,并建立一个写线程OsdWriteProc(),同时建立一个写命令非空事件g_hevOsdQueueEmpty这样检测到非空事件时就可以调用写进程。初始化设备失败或者设备卸载的时候调用设备卸载函数,卸载时要释放虚拟GPIO寄存器的空间,调用的卸载函数,并关闭互斥体。

2.3.3 写入流程

实践中发现在写OSD时需要停止T128 MCU,写完后恢复其运行,否则OSD会错乱。如果要停止T128MCU时,它正在切换视频、检测视频信号,操作未完成时被停掉,则液晶屏会错乱,图像分成几个部分。而上层应用的写OSD请求不能丢弃,否则上层的状态又会错乱,该隐藏的未隐藏,该的没。因此需要一种机制,既保证上层的写OSD操作不丢弃,又不与T128 MCU冲突。

如图5所示,一个缓冲队列,接收到上传人的OSD数据压入队列。OSD留给上层的Write接口,不负责实际的写操作,将数据压入队列(此时会激活队列非空事件)后立即返回。创建一个OSD写线程,等待缓冲队列非空事件激活后,查询T128 MCU状态,待其空闲后,获取关键代码段,执行写操作,写完后退出关键代码段,进入下一轮循环。

3 性能分析

T128通过3根主线跟CPU通信,由T128处理从DVD和PXA270来的视频信号,这样OSD就可以在各个源的信号上叠加。由于T128处理了很大一部分视频信号,降低了CPU的负担,同时也圆满解决了OSD在DVD信号上的叠加问题。由于的多主控特点,不会影响挂在I2C上的其他外设的工作和性能。

4 结语

本文介绍了PXA270处理器和Windows CE5.0操作系统上的OSD。目前已经在本平台上稳定运行,具有很好的OSD处理能力。同时,鉴于T128强大的处理功能,该驱动还可以优化和拓展,比如可以利用T128车载平台机构的翻转。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭