新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Android平台的鼠标的设计方案

基于Android平台的鼠标的设计方案

作者: 时间:2012-03-20 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/149387.htm

2. 2硬实现

本文的硬件sep6200 是一款定位于手持视频播放设备、卫星导航产品的高性能芯片。其LCDC 支持16bpp、18bpp、24bpp 格式rgb 图像显示;支持yuv420、yuv422、yuv444 格式视频图像显示;支持1080p 高清视频输出;支持HDMI 输出接口;支持最多四层Overlay 透明显示:基层(800× 600,24bpp/18bpp/16bpp rgb 图像), 覆盖层1 ( 800 × 600,yuv422/420/424 视频图像), 覆盖层2 (800 × 600,24bpp/18bpp/16bpprgb 图像),层(1bpp/2bpp图像)。因此通过为层分配内存并实现相应的ioctl 操作即可实现硬件鼠标。下面介绍的是整个Overlay 驱动的实现,包括鼠标的实现。

2. 2. 1 Overlay 驱动实现

Overlay 驱动的核心结构体是platform_driver 和miscdevice,他们定义如下:

其中sep6200_overlay_fops 的定义如下:

结构体sep6200 _overlay_misc_device 用于为Overlay 创建一个字符设备节点以便与用户空间通信,而sep6200_overlay_fops 是对该设备节点的操作函数,我们要对这个结构体进行填充并编写所有与Overlay 相关的功能函数,以使Overlay 层能够正常工作。

对于鼠标层来说最主要的是在sep6200_overlay_probe 中调用dma_alloc_writecombine( )为鼠标层分配内存以及在sep6200_overlay_ioctl 中实现两个ioctl 操作:

OVERLAY_SHOW_CURSOR显示鼠标,即画鼠标图形并复制到上面分配的内存中。

OVERLAY_SETPOS_CURSOR设置鼠标位置。

2. 2. 2硬鼠标上层实现

鼠标驱动实现后,用户空间就可以调用相应的接口操作实现鼠标功能。由于硬件鼠标的坐标值只需要传给底层Overlay 驱动即可,所以主要是在上面已经实现好的MouseInputMapper 类的构造函数里调用OVERLAY_SHOW_CURSOR 显示鼠标,在其成员函数sync ( nsecs _ t when) 处理数据之后调用OVERLAY_SETPOS_CURSOR 把鼠标坐标值传给Overlay 驱动的鼠标层,配置相应的寄存器设置鼠标的位置,就可以实现硬鼠标的精确移动。

2. 3 软鼠标和硬鼠标的对比

由上面实现可知,软鼠标和硬鼠标的实现机制是一样的:绘制鼠标和设置鼠标位置。但是软鼠标由软件来绘制,性能比较差,且消耗CPU 资源;而硬鼠标完全由硬件控制,性能高。通过实验验证,当玩大型游戏或者播放视频时,软鼠标反应迟钝,有时几乎不动,而硬鼠标则反应灵敏,移动位置精确。

3 总结

本文面向当前手持终端市场,充分考虑到了实际产品的需要,有针对性地提出了实现鼠标的两种不同:软鼠标和硬鼠标,并指出了其优缺点。这两种根据不同的硬件有不同的应用。本文实际产品研发,项目中的芯片支持硬鼠标功能,采用了硬鼠标,产品具有一定的市场竞争力。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭