新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 新兴微型光学手指导航模组的嵌入式系统开发

新兴微型光学手指导航模组的嵌入式系统开发

作者:时间:2011-04-13来源:网络收藏

  具有EOS的软件,OFN驱动程序需要遵循相应EOS公用驱动程序的编写、调试、加/卸载要求,如Windows CE/Mobile的单/双层、本地/流接口驱动、动态库形式,ARMLinux的字符设备驱动、动态加/卸载、VxWorks的I/O设备驱动等。OFN驱动程序传播的是公用的人机交互输入信息,必须为公用驱动程序。EOS驱动程序可以划分为专用驱动程序或公用驱动程序两大类,公用驱动程序软件要求很高,需要根据具体EOS的特点和要求,认真编写、调试和测试。

  3 应用实践

  在各类应用使用OFN,软硬件体系设计的核心是OFN驱动程序的实现,其关键在于OFN数据信息的实时采集和具体EOS下公用信息的形成。下面针对一些最常见的OFN应用设计实践,加以阐述。其中涉及的I2C、SPI、UART、LCD(Liquid Crystal Display)、定时器(Timer)、GPIO(General Port Input/Output)等的软件驱动操作,限于篇幅,这里不再着重说明。

  3.1 工业测控/仪表仪器应用

  工农业过程控制、仪表仪器设备、器件性能检测等软件体系或ERTOS下的OFN应用,可以采用外部事件中断或定时器查询的方式,在其中断服务程序中直接操作I2C或SPI总线,高效地从OFN中获得触控信息,并进行屏幕指示、操作控制或数据的存储、转发等活动。

  下面的例程代码(见网络版)展示了ARM926T内核的S3C2440微处理器平台上测试OFNA2815性能的情形。中断服务程序中进行I2C或SPI总线操作,获得触控信息,在LCD屏上以“鼠标”形式随动显示,并通过UART接口上传数据给PC机。

  3.2 Nucleus MTK手机应用

  联发科技MediaTek推出的各种款式功能手机,以高度的性价比具有极高的市场份额,其内核是ARM7EJS或ARM9EJS微处理器,在MentorATI的优先级抢占调度和时间片轮转的多任务ERTOS--Nucleus基础上,形成了完整的人机接口MMI(Man Machine Interface)应用程序体制,俗称“MTK”。Nucleus MTK多数情况下采用可管理的逐级中断机制:低级中断LISR(Lower ISR)→高级中断HISR(High ISR)→中断任务处理ISR(Interrupt Serve Routine)。ISR可以与其他任务进行通信或同步的交互。

  Nucleus MTK系统不支持鼠标,但支持键盘和触摸屏操作,而触摸屏操作最终归结在键盘操作上。因此在Nucleus MTK下应用OFN模组,需要把OFN的“触控”信息转换为“方向动作”信息,进而广播为可以公用的“方向按键”信息,从而为多数现有的和未来的应用程序所共享。不容忽视的是必须实现高度频繁的OFN信息与缓慢的方向按键之间的合理匹配,可以通过均值滤波和逻辑分析进行取舍算法达到这一目的。

  需要注意的是,Nucleus MTK软件体系层次和等级较为严格,高低层之间除了通信、同步和信息传递,一般不允许函数互相调用;同时,为保证中断响应的及时性,不应在中断服务程序中作过多的停留,因此传统的设备驱动及其分析处理需要放在不同的层次上,按轻重缓急,分别加以实现。

  按照上述Nucleus MTK的设备驱动规范和OFN信息的运用机理,设计OFN模组的Nucleus MTK软件应用如下:定义OFN特定消息结构,分配中断形式和总线接口;实时获取OFN移动信息,取舍处理后,打包成OFN消息包,上传MMI应用处理层;MMI应用处理层拆包分析,变换成方向按键的“按下”和“释放”消息,进而广播给整个系统。相关的关键程序如下:

  ① 基本设置。增加全局操作常量MSG_ID_MMI_OFN_MOVE_REQ,定义OFN消息结构体ofn_hdr_ind_struct{LOCAL_PARA_HDR, kal_uint8 Direction},并在系统自定义设备驱动的初始化文件中加入对OFN初始化函数的调用。

  ② 底层驱动程序设计。限于篇幅,这里仅列出I2C接口的定时器中断查询实现。

  ③ 公用信息形成。在上层主要程序文件MMITask.c中添加代码。

  3.3 Windows CE/Mobile应用

  Windows CE/Mobile是一款在系统,特别是智能手机中,广泛应用的EOS。Windows CE/Mobile按照“物理中断IRQ(Interrupt ReQuest)→逻辑中断SYSINTR(System Interrupt)→中断服务线程IST(Interrupt Serve Thread)”的层层映射方式进行中断处理,其设备驱动程序以用户态下的DLL(Dynamic Link Library)文件形式存在,区分为本地与流接口驱动、独立与双层驱动,可以在系统启动时自动加载或动态加载。启动时加载的驱动程序,需要特别进行注册表的配置添加。

  OFN模组及其应用特点决定了在Windows CE/Mobile下,其驱动程序宜设计为独立的本地驱动形式,并在系统启动时能够自动加载。Windows CE/Mobile支持鼠标操作,有鼠标消息结构体的系统定义,可以用来简化OFN的驱动程序。OFN模组的Windows CE/Mobile软件应用可以完全在驱动程序中实现,中断服务程序的编写和系统注册表的配置添加是OFN模组Windows CE/Mobile驱动程序设计的关键。以I2C总线接口、外部中断事件触发方式说明OFN模组Windows CE/Mobile驱动程序的具体实现,核心微处理器为ARM926T内核的S3C2440。

  3.4 ARMLinux/Android应用

  ARMLinux/Android是一个源码开放、音/视频性能优良、网络功能强大、易于扩展开发的EOS及其应用体系,一经推出就在便携式移动通信、笔记本电脑等诸多领域得到了广泛运用。其底层多是基于CortexA8/A9、ARM1176、ARM9EJS等内核的微处理器。Linux下设备驱动规范是将设备视作文件操作,称为“设备文件”,应用十分方便。其设备驱动程序分为字符型、块型和网络型三类,系统的大多数外设或接口都可以作为字符型设备进行驱动。根据应用的特点,Linux将所有输入设备归为可以数据缓冲的链表结构的字符型输入子类(Input),包括鼠标、键盘、触摸屏等,其中鼠标类驱动(mousedev)架构体系十分完备。ARMLinux/Android体系的这些特征,使得OFN模组的驱动应用开发简便了很多:可以按照鼠标类驱动的实例化方式,快速实现OFN的驱动程序设计。Linux驱动可以动态加载,也可以在启动时加载;OFN设备使用频繁,宜选择启动时加载。这里以常见的TI推出的CortexA8内核的OMAP3530微处理器平台为例,关键的程序代码略--编者注。

  4 结语

  手指模组,性能高度集成,成本低,形体小,在嵌入式应用系统中备受青睐。只要按照各种嵌入式应用体系的具体特点,遵循各类嵌入式体系及其操作系统下驱动软件的开发规律,并因地制宜,具体情况具体分析,就可以无缝地将其融入到各个已有的嵌入式应用软硬件体系中,并拓展到新的嵌入式应用产品中。不断丰富完善的微型手指模组,应用前景极好,推动着人机输入界面的深远变革和长足发展。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭