当前位置:首页 > 平台
  • Wind River嵌入式Linux平台图形化功能更丰富

    全球嵌入式及移动应用软件领导厂商风河(Wind River)近日发布平台升级套件Wind River 4 Update Pack 2 。这是Wind River最新版的商业化嵌入式开发暨Run-Time平台,也是市场??上第一款可针对最新英特尔和德州仪器处理器提供从线路板级到用户界面框架层级完全整合型图形软件栈的商业化嵌入式Linux平台。 预先整合在新版Wind River Linux平台中的图形软件栈,内含多套常见的部件库(Widget Library),诸如GTK、Qt、X.Org以及Wind River本身的图形处理套件Tilcon Suite。这个创新设计的软件栈可使用最新的硬件及图形驱动程序,包括支持OpenGL 的® ™处理器中所内置的®嵌入式媒体及图形驱动程序(Embedded Media and ) 和内置PowerVR驱动程序的德州仪??器AM35x、AM37x、AM389x TI Sitara™ ARM®微处理器以及支持OpenGL ES的TI OMAP35x处理器。这套全新软件栈还内置了多款广受市场欢迎的图形应用程式的最新版本,同时也已针对嵌入式开发作业予以优化;兼容性方面,这个软件栈透过LBS自由软件标准基础(Linux Standards )确保所有已通过LBS兼容性验证的第三方应用程序,均可合乎兼容性的要求。 Wind River Linux产品营销暨策略发展副总裁Paul Anderson表示:"随着深度嵌入式设备变得越来越复杂,连网及互连程度也越来越高,我们察觉到一个明显的演进态势,就是这些设备逐渐往图形功能更丰富、使用者介面更细腻的方向发展,而设备制造商也希望这些设备能被应用于更广泛的产业领域。有鉴于此,我们尽力设法满足这类需求,这次推出的新版商业级嵌入式Linux平台创业界之先河,预先整合了由中间件连结至硬件层的图形软件栈,并可顺利适应各种硬件平台。新版升级套件为Wind River旗下Linux产品注入了各项崭新功能,同时也显著提升了使用操作上的便利性以及硬体支持能力。最重要的是,人机界面设计人员将可借此创造出更丰富精细的图形化界面,产品执行效能也可提升,但是却仅需更少的空间(Footprint)以及更低的功耗,设计人员将从而获得更多DIY自订功能的弹性。" 低功耗嵌入式软件资深营销经理Vasu Jakkal指出:"Wind River推出的这款完全整合图形软件栈的新版嵌入式Linux平台不但能为客户带来明显助益,也为产业带来开源软件技术方面的重大突破。透过整合Intel的嵌入式媒体暨图形驱动程序,新版Wind River Linux平台将可协助设备制造商切入更多元且涵盖范围更广的各类应用市场,并以更低成本、更快速度创建出兼具安全性、可靠性,同时又已针对图形功能优化的新一代系统设备。" 德州仪器Sitara™ ARM微处理器营销总监Jake Alamat则表示:"TI持续在寻找能提高互补软件(Complementary )的价值并让嵌入式设备设计变得更加简易的。Wind River的Linux 4.2平台整合了能与TI提供的Linux软件开发套件(SDK)配套运行的图形软件栈,同时还内置了TI的PowerVR驱动程序,客户可借此快速开发出兼具高级图像处理功能及高安全性的新一代嵌入式设备。" Wind River Linux 4 Update Pack 2的主要新增功能还包括: Web 2.0 Cross Web Development :这款开发工具套件可以让开发人员利用、Javascript或网页生成的语言来直接针对目标部件进行调试、部署或测试作业。 Qt Development :专门针对嵌入式软件开发做过优化化的开发工具套件,可以有效提高开发工作效率、降低整体成本,并缩短最终产品上市日程。 新增多项安全防护功能,包括可强化IP安全性的开源VPNstrongSWAN以及可让用户利用精简化语言来创建或编辑其安全策略进而确保系统安全的全新功能SEEdit。 可供Linux开发人员使用的多项Wind River Workbench强化功能及全新工具,使开发人员得以有效精简Linux产品开发流程,提高开发效率。 Paul Anderson总结指出:"Wind River Linux平台不断为业界注入丰富的开源软件技术活力,并持续为嵌入式软件开发领域提供整合性与优化程度最高的。我们持之以恒地不断创新并强化旗下Linux平台,全力为厂商汇集他们所需的种种必要元素,使他们能以最经济的成本效益迅速投入其世界级产品的开发及测试作业,并提供最高品质的后续支援服务。" Wind River Linux 平台已经连续三年被市场研究机构VDC Research 评比为嵌入式Linux市场的领导产品。根据VDC所发布的"2011年嵌入式Linux系统及市场解析"研究报告,Wind River在2010年以超过30%的市场整体营收占有率稳居嵌入式Linux市场的冠军厂商宝座;与最接近的第二名竞争厂商相较,Wind River的市场占有率甚至还高出对手成绩的两倍以上。

    时间:2018-10-22 关键词: Linux 嵌入式 平台 功能 图形化

  • Wind River嵌入式Linux平台支持图形化功能

    全球嵌入式及移动应用软件领导厂商风河(Wind River)近日发布平台升级套件Wind River 4 Update Pack 2 。这是Wind River最新版的商业化嵌入式开发暨Run-Time平台,也是市场上第一款可针对最新英特尔和德州仪器处理器提供从线路板级到用户界面框架层级完全整合型图形软件栈的商业化嵌入式Linux平台。 预先整合在新版Wind River Linux平台中的图形软件栈,内含多套常见的部件库(Widget Library),诸如GTK、Qt、X.Org以及Wind River本身的图形处理套件Tilcon Suite。这个创新设计的软件栈可使用最新的硬件及图形驱动程序,包括支持OpenGL 的® ™处理器中所内置的®嵌入式媒体及图形驱动程序(Embedded Media and ) 和内置PowerVR驱动程序的德州仪器AM35x、AM37x、AM389x TI Sitara™ ARM®微处理器以及支持OpenGL ES的TI OMAP35x处理器。这套全新软件栈还内置了多款广受市场欢迎的图形应用程式的最新版本,同时也已针对嵌入式开发作业予以优化;兼容性方面,这个软件栈透过LBS自由软件标准基础(Linux Standards )确保所有已通过LBS兼容性验证的第三方应用程序,均可合乎兼容性的要求。 Wind River Linux产品营销暨策略发展副总裁Paul Anderson表示:"随着深度嵌入式设备变得越来越复杂,连网及互连程度也越来越高,我们察觉到一个明显的演进态势,就是这些设备逐渐往图形功能更丰富、使用者介面更细腻的方向发展,而设备制造商也希望这些设备能被应用于更广泛的产业领域。有鉴于此,我们尽力设法满足这类需求,这次推出的新版商业级嵌入式Linux平台创业界之先河,预先整合了由中间件连结至硬件层的图形软件栈,并可顺利适应各种硬件平台。新版升级套件为Wind River旗下Linux产品注入了各项崭新功能,同时也显著提升了使用操作上的便利性以及硬体支持能力。最重要的是,人机界面设计人员将可借此创造出更丰富精细的图形化界面,产品执行效能也可提升,但是却仅需更少的空间(Footprint)以及更低的功耗,设计人员将从而获得更多DIY自订功能的弹性。" 低功耗嵌入式软件资深营销经理Vasu Jakkal指出:"Wind River推出的这款完全整合图形软件栈的新版嵌入式Linux平台不但能为客户带来明显助益,也为产业带来开源软件技术方面的重大突破。透过整合Intel的嵌入式媒体暨图形驱动程序,新版Wind River Linux平台将可协助设备制造商切入更多元且涵盖范围更广的各类应用市场,并以更低成本、更快速度创建出兼具安全性、可靠性,同时又已针对图形功能优化的新一代系统设备。" 德州仪器Sitara™ ARM微处理器营销总监Jake Alamat则表示:"TI持续在寻找能提高互补软件(Complementary )的价值并让嵌入式设备设计变得更加简易的。Wind River的Linux 4.2平台整合了能与TI提供的Linux软件开发套件(SDK)配套运行的图形软件栈,同时还内置了TI的PowerVR驱动程序,客户可借此快速开发出兼具高级图像处理功能及高安全性的新一代嵌入式设备。" Wind River Linux 4 Update Pack 2的主要新增功能还包括: Web 2.0 Cross Web Development :这款开发工具套件可以让开发人员利用、Javascript或网页生成的语言来直接针对目标部件进行调试、部署或测试作业。 Qt Development :专门针对嵌入式软件开发做过优化化的开发工具套件,可以有效提高开发工作效率、降低整体成本,并缩短最终产品上市日程。 新增多项安全防护功能,包括可强化IP安全性的开源VPNstrongSWAN以及可让用户利用精简化语言来创建或编辑其安全策略进而确保系统安全的全新功能SEEdit。 可供Linux开发人员使用的多项Wind River Workbench强化功能及全新工具,使开发人员得以有效精简Linux产品开发流程,提高开发效率。 Paul Anderson总结指出:"Wind River Linux平台不断为业界注入丰富的开源软件技术活力,并持续为嵌入式软件开发领域提供整合性与优化程度最高的。我们持之以恒地不断创新并强化旗下Linux平台,全力为厂商汇集他们所需的种种必要元素,使他们能以最经济的成本效益迅速投入其世界级产品的开发及测试作业,并提供最高品质的后续支援服务。" Wind River Linux 平台已经连续三年被市场研究机构VDC Research 评比为嵌入式Linux市场的领导产品。根据VDC所发布的"2011年嵌入式Linux系统及市场解析"研究报告,Wind River在2010年以超过30%的市场整体营收占有率稳居嵌入式Linux市场的冠军厂商宝座;与最接近的第二名竞争厂商相较,Wind River的市场占有率甚至还高出对手成绩的两倍以上。

    时间:2018-10-22 关键词: Linux 嵌入式 平台 功能 图形化

  • 奇趣推出基于嵌入式Linux的面向单一应用嵌入式产品的开发平台

      奇趣科技公司推出了Qtopia® , 一款基于嵌入式的面向单一应用嵌入式产品的开发平台。   Qtopia 融合了奇趣科技面向桌面软件的诸多优点,可以让众多设备的开发商从中获益,例如汽车自动化、、POS 机、办公设备以及图象处理设备等。   Qtopia 使奇趣科技的技术又向前迈进了一大步,取代Qt/Embedded成为奇趣科技嵌入式产品家族中的基础软件。   奇趣科技首席执行官Haavard Nord表示:“Qtopia Core为基于嵌入式的开发奠定了基础。借助Qtopia Core,开发商可以专注于产品的创新而不是普通的基础性编程。”   Qtopia Core作为独立式的技术,是为基于嵌入式的单应用设备开发的稳定、可定制的开发平台。为高价值应用设计的Qtopia Core包含一整套数据库和绘图工具,用以帮助企业快速经济的开发基于嵌入式Linux的产品。

    时间:2018-10-22 关键词: 产品 Linux 嵌入式 平台 奇趣

  • Linux平台下P51系列A/D采集卡驱动开发

    Linux平台下P51系列A/D采集卡驱动开发

      摘 要: 讨论了基于Linux平台的A/D采集卡的工作过程及在工业控制中采用Linux操作系统进行应用开发的方式,特别对利用Linux可加载核心模块(LKM)开发A/D采集卡驱动的相关核心机制及调用作了详细讨论。  关键词: LKM 核心驱动 温度采集卡 工业控制 ISA  Linux操作系统经过十多年的发展,以其运行稳定可靠、占用资源少、长期运行仍能保证效率的特性,获得了众多的企业和政府部门的认可。近几年,在工业控制中Linux也有非常好的表现,控制领域中RTLinux应用研究正在进行。笔者开发了Linux供热控制平台。在此Linux控制系统应用研究中着重研究了核心可加载驱动模块机制。本文将详细讨论采集卡的核心驱动模块。1 硬件介绍  P51系列A/D采集卡是一个8通道ISA总线的温度采集卡。它将温度传感器(热电偶、热电阻等)的输出信号或电流、电压通过A/D转换器转换成数字量。其主要特点:精度高、抗干扰能力强、可靠性高。1.1 P51采集卡的工作过程  图1说明了接口板采集数据的整个过程。  每个通道数据以16位二进制原码形式输出,低字节在前。8个通道16字节数据按顺序输出。1.2 I/O端口  主机与接口板的接口使用2个输入端口,由于A0未参加译码,实际上占用了4个端口地址。接口板的地址可由板上的跳线开关设定。地址默认设置为164H及166H,如表1所示。  该硬件只用到了2个I/O端口:状态口和数据口,字长都是8位。其中,状态口只用D0位作为检验数据是否已经准备好的标志,其它位没有定义。2 软件部分  软件部分由应用程序和设备驱动程序两部分构成,本文主要讨论设备驱动程序部分。在Linux平台上实现对硬件的驱动支持可以有两种方式:一种直接在用户空间实现;另一种使用Linux内核中提供的机制来实现。考虑到用户空间驱动程序的局限性,在开发中采用了第二种方式。2.1LKM机制简介  Linux内核提供了两种机制来开发设备驱动程序:一种直接把驱动程序联编到内核中;另一种则是通过称为Linux可加载模块(LKM)机制来开发可动态加载和卸载的驱动模块。基于各方面的考虑本文采用后者。  Linux作为单核结构效率比较高,但是系统灵活性不足。为了平衡这两者的关系,提供了LKM 机制。利用这种机制可以开发Linux内核模块,并且可以动态地对它加载和卸载。Linux下的设备驱动程序一般都支持这种方式,且模块被加载到内核后,它就可以任意利用内核提供的各种资源和服务了。Linux内核维护了一张所有内核资源的符号表(称为内核资源符号表),用于在模块载入时解决相应资源的引用问题。并且,Linux允许模块的堆栈操作,一个模块可以使用其他模块提供的资源。也就是说:一个模块对另一个模块资源的使用与其对内核资源的使用非常相似,不同的只是这些服务的资源从属于另一个模块而已。每当一个模块被加载,Linux就会修改内核资源符号表,将该模块所提供的服务和资源加入进去。这样另一个模块载入时,如果需要就可以引用这个模块的资源了。  卸载一个模块时,需要知道当前模块是否正在被使用。如果没有被使用,在卸载时要能够通知该模块它将被卸载,以便由它自己释放已被它占用的系统资源。同时Linux还要从内核资源符号表中删除该模块提供的所有资源和服务。  从上面的原理分析可知,内核模块编写时,有两个主要的接口函数:init_module()用于在模块加载时注册服务和申请资源;cleanup_module()用于在模块卸载时清除掉由init_module()所做的工作,从而使内核模块可以安全地卸载。其中对init_module()的调用是在根用户执行insmod命令加载模块时。而对cleanup_module()的调用是在根用户执行rmmod命令卸载模块时。2.2 Linux下设备驱动程序  系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件细节。在应用程序看来,硬件设备只是一个设备文件, 可以通过相应的系统调用象操作普通文件一样对硬件设备进行操作。2.2.1 Linux设备分类  Linux支持两种标准硬件设备:块设备和字符设备。块设备接口仅支持面向块的I/O操作,所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,它可以支持几乎任意长度和任意位置上的I/O请求,即提供随机存取的功能。字符设备接口支持面向字符的I/O操作,只支持顺序存取的功能,一般不能进行任意长度的I/O请求。I/O请求的长度必须是设备要求的基本块长的倍数。2.2.2 设备标识方式  Linux设备由一个主设备号和一个次设备号标识。主设备号唯一标识了设备类型,即设备驱动程序类型,它是块设备表或字符设备表中相应表项的索引。次设备号仅由设备驱动程序解释,一般用于识别在若干可能的硬件设备中,I/O请求所涉及到的那个设备。值得一提的是次设备号还可以被分成几个部分,用来区分子设备驱动程序和具体的设备。2.2.3 Linux设备驱动程序组成部分  Linux设备驱动程序可以分为三个主要组成部分:  (1)自动配置和初始化子程序。负责检测所要驱动的硬件设备是否存在并能否正常工作。如果该设备正常,则对这个设备及其相关的设备驱动程序需要的软件状态进行初始化。  (2)服务于I/O请求的子程序。主要是file_operations结构的各个入口点的实现。这部分的实现支持文件系统调用(如open、close、read等)。  (3)中断服务子程序。在Linux系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统接收硬件中断,再由系统调用中断服务子程序。2.3 温度采集卡驱动程序内核模块2.3.1 file_operations结构的初始化  file_operations结构是Linux操作系统中用于实现驱动程序的最重要的数据结构,它为Linux提供的服务于I/O请求的子程序的代码实现提供了一系列入口点。该结构贯穿在整个驱动程序中,笔者在文件作用域内进行了定义,并对本程序中用到的入口点做了初始化,其伪代码如下:  struct file_operations p51_fops=} open : p51_open;      //把实现的p51_open函数指针赋给open入口点。 release : p51_release;    //把实现的p51_release函数指针赋给release入口点。 read : p51_read; //把实现的p51_read函数指针赋给read入口点。  {2.3.2 模块初始化与模块卸载  温度采集卡模块初始化通过对init_module()的实现来完成以下几个任务:  (1)以字符设备类型向系统注册温度采集卡设备,同时动态获得主设备号。通过调用下面这个函数来实现:int register_chrdev(unsigned int major, const char * name, struct file_operations *fops);这里使major参数为0,这样系统就会动态地分配并返回主设备号。name参数是用于标识设备的字符串。file_operatons传入的是如前所述的p51_fops。  (2)向系统申请温度采集卡的I/O端口地址。根据前面提到的跳线方法得到I/O地址,调用系统提供的宏:  check_region(start,n)     //检查端口地址范围start~start+n-1是否可用,是则返回0,否则返回1。  request_region(start,n,name) //用于申请通过上述函数检查的地址范围。  (3)做一些必要的系统日志,根据各种条件用printk向系统日志缓冲区写入不同级别的信息。  (4)控制内核资源提供的符号表输出的符号信息(即在LKM简介部分提到的模块要注册的服务)。这里使用EXPORT_NO_SYMBOLS使得该模块不输出任何符号信息。  温度采集卡模块卸载需要完成以下几个任务:  (1)调用release_region(start,n)宏,释放模块初始化时申请的I/O端口资源。  (2)调用int unregister_chrdev(unsigned int major, const char * name)向系统注销该字符设备。本程序中major参数是前面注册时动态获得的主设备号,name与注册时提供的name字符串相同。  (3)调用printk函数,做一些必要的系统日志。2.3.3 file_operations结构中入口点的实现  (1)open和release入口点  这两个入口点在本模块中被赋予的是file_operations结构的p51_open和p51_close函数指针。它们主要通过调用MOD_INC_USE_COUNT及MOD_DEC_USE_COUNT来进行模块计数。用计数来控制温度卡驱动模块是否正在被使用,防止模块使用中被意外卸载,导致核心对设备操作出现异常。  (2)read入口点的实现  这个入口点在本模块中被赋予的是file_operations结构的p51_read函数指针,它是设备操作的核心部分,实现了如下几个功能:  ·用inb_p宏访问硬件的状态和数据端口,以读取相应的状态和数据信息。  ·调用long sleep_on_timeout(wait_queue_head_t *q, long timeout)把当前进程加入时钟等待队列q中,等待timeout时间。从采集卡的工作方式来看,这样做可以减少轮询时间,大大提高了效率。  ·如前所述,程序从温度卡读取的是数据的原码形式,须实现原码与补码之间的转换。  ·Linux分为核心空间和用户空间。用户空间的代码不能直接访问核心空间,故需调用Linux核心提供的copy_to_user(to,from,n)宏,把数据从内核空间地址from拷贝到用户空间地址to中。这样,系统调用返回后,用户空间的代码就可以通过to指针来访问相应的数据并进行处理了。  数据采集核心部分如图2所示。2.3.4 温度卡故障的处理  故障处理在工业控制中非常重要。由于本采集卡在硬件一级对故障预报和发现提供的支持比较少,故在软件层次上,在满足需求的情况下通过对状态口依照前面所提供的方法查询三次失败后,将重新对设备进行初始化和设置,再作以上尝试。如果还是失败将由用户进程进行处理。2.4 应用程序开发  对上述模块编译并加载后,Linux根用户可用mknod命令,利用动态分配的主设备号(该设备号在用户空间,可以从/proc/devices文件中获得)建立相应的设备文件,并对它设置恰当读写权限。就可以在应用程序中,使用Linux的文件系统调用这个设备文件来操作温度采集卡。这样做使应用程序编程风格更加统一,代码更具鲁棒性,应用系统更加安全,更易于维护。而且可在核心级保证关键部分的实时响应,从而降低了用户程序开发的难度。  对于Linux下的工业控制软件开发,还有很长的路要走。而其中非常重要的基础性工作就是对各种工控设备提供稳定可靠的核心驱动模块的支持。本文所作的工作对此进行了一次很好的尝试。参考文献1 仲崇权,杨素英.智能pc.std总线光隔温度,电流和电压接口板使用说明书[A]. 大连:大连理工大学科技开发中心2 Alessandro Rubini, Jonathan Corbet. Liunx device drivers[M]. O'REILLY3 周巍送.Linux系统分析与高级编程技术[M]. 北京:机械工业出版社,19994 毛德操, 胡希明.Linux内核源代码情景分析[M]. 杭州: 浙江大学出版社,2001

    时间:2018-10-23 关键词: Linux 平台 系列 卡驱动

  • Mentor产品通过64位Linux平台认证

    明导国际(Mentor)宣布其模拟与混合信号工具通过64位平台认证,这些通过认证的产品包括以及ADVanceMS模拟与混合信号产品线,皆可在采用RedHat3平台的Opteron和EM64T处理器架构上运行。 Mentor表示,在65纳米或更先进工艺技术中,芯片设计的逻辑门数也提高到数百万个,使得升级至64位计算平台更加重要。在硬件上运行的操作系统,适合做为Mentor的64位工具平台,包括模拟与混合信号产品、客户规格IC设计工具、可测试设计(DFT)工具、ModelSim以及Calibre设计与制造平台。 仿真器可提供高速仿真以及精确度,RF则可将Eldo晶体管层级仿真器的功能运用至射频组件设计。ADVanceMS则为是一套语言中立的混合信号仿真器,可针对百万逻辑闸等级的模拟/混合信号系统单芯片,提供设计支持与验证功能;ADVanceMSRF则为混合信号仿真工具。 Mentor产品并支持在Xeon-64和Opteron处理器上运行的LinuxSLES9,以及RedHat Linux3等操作系统。

    时间:2018-11-05 关键词: 产品 Linux 平台 mentor

  • WindRiver推出商用级Linux平台

    风河系统公司(WindRiver)日前宣布推出最新的电子设备制造专用Linux软件平台。该平台是目前业界内最领先的商用级Linux产品系列,能够满足包括从手持电子设备到巨型网络设备在内的各种类型设备的软件开发需求。设备制造商采用风河商用级Linux平台能够灵活高效地开发各种类型技术领先的设备产品。该平台是业界内唯一的商用级别Linux平台,基于通过严格测试的纯Linux2.6内核实现,同时内置了Eclipse核心开发包,另外,风河公司还针对该平台提供业界领先的全球化专业技术支持和服务,全部技术专家均具备20年以上的相关专业经验,为设备制造商的产品开发提供最全面的服务和保障。;风河商用级Linux作为风河最新推出的电子设备软件平台,率先在业界内达到了商用级的性能标准,使设备制造商能够更加灵活有效地开发、部署和维护各类基于Linux的设备产品。 风河公司作为业界内发展最迅速、最值得信任的商用Linux设备软件提供商,为广大客户提供了全方位的解决方案,包括业界领先的开发和运行时(runtime)产品、全球化Linux专业技术服务和全球范围的本地化技术专家技术支持,使真正意义的商用级平台成为现实。风河公司是目前唯一集商用级产品、商用级客户服务和商用级产品保障于一体的Linux平台提供商。

    时间:2018-11-06 关键词: windriver Linux 平台

  • Android平台消息响应机制的研究及其触摸屏响应的优化实现

    Android平台消息响应机制的研究及其触摸屏响应的优化实现

    0 引言近些年来,随着3G 网络的大规模建设和智能手机的迅速普及,移动互联网时代已经到来。作为Google 推出的一款操作系统,Android 自问世以来就吸引了人们广泛的关注,受到众多厂商和开发者的青睐。Android 是一个开放、完整、免费的手机平台,强大的开源特性吸引了越来越多的开发者,Android的版本如今已由最初的1.1 升级到最新的4.0,功能越来越强大,用户体验越来越好,在Android 平台上发布的应用产品更加丰富多彩。Android 平台上的应用越来越多,人们对应用的要求越来越高。现阶段触屏手机是趋势,触摸是人们与应用交互的主流方式,人们对触摸的灵敏度,简易性和方便度要求越来越高,有必要优化应用的触摸效果。1 Android 平台的触摸机制一般而言,事件是用户与UI(图形界面)进行交互的时候所触发的操作。例如在手机屏幕上触摸特定的区域就会触发对应的事件,在Android 中这些事件将被传送到事件处理器,它是一个专门接受事件对象并对其进行翻译和处理的方法。在 Android 中用户事件响应是很重要的,用户消息主要来源于3 种硬件外部设备:触摸响应(ONTouch系列方法)、按键响应(onKey系列方法)和轨迹球(Trackball)。不论我们是通过触摸方式与屏幕交互,还是使用轨迹球来交互,任何与屏幕相关的交互都是与屏幕相应位置上的视图控件的交互。现在 Android 系统的手机几乎全是触屏,基本的按键越来越少,触摸屏响应成为发展的大趋势,所以在应用设计的时候主要考虑触摸的效果问题,着重优化用户触摸响应。图1 Android 平台用户消息处理流程图 1 详细说明了各种用户操作被系统捕获的过程。系统捕获用户的响应后,由Linux 驱动捕获用户的消息,经过Android 框架层的AcTIvity Manager 的作用传递给Activity中的系统方法,通过执行相应的系统方法更新View 类,消息传递至Application Framework 层,最后调用Linux 驱动,控制着界面的绘制和更新。在Android 工程中,触摸相关的接口函数主要封装在android.view.KeyEvent 类中,写触摸屏操控的时候首先导入该类的包,在Activity的子类中对该方法进行说明即可。Android 的事件处理机制相对简单,对于事件处理机制不必详细理解,实现各种响应时只需具体实现各个方法即可,各个方法的具体实现在View类中进行,下面着重说明Android 平台触摸响应的实现。2 Android 平台触摸响应的实现一般而言在 Android 中,对于触摸事件的处理如同UI 事件一样,主要通过两种方法来处理,一种是利用View 类的onTouchEvent()方法,一种是实现OnTouchLiSTener 接口的onTouch()方法。系统中当这两种方法都存在的前提下,系统将会优先采用OnTouchListener接口回调方法进行处理。一般在简单的UI 设计界面重写onTouchListener()方法,涉及到多个Activity 切换时在方法中实现Activity 信息保存与跳转即可。对于大型应用而言,界面状态比较复杂,触摸响应需要详细处理,系统提供了一个专门用于处理用户触摸事件的接口函数onTouchEvent()。实际开发过程中只需先声明此接口函数,然后在主View类中重写该函数实现具体的触摸效果即可。下面是接口函数的声明:触屏监听方法中只有一个MotionEvent event 参数,此类的实例中保存了玩家触屏的各种动作,常见的有:按下动作、移动动作、多点触屏、屏幕压力等,在此类中定义了很多动作的静态常量值,通过event.getAction()方法获取玩家的动作与所需动作常量值进行匹配。上面是声音界面的触摸响应处理:event.getAction()是键控的类型,是MotionEvent 类的系统方法,获取当前的触摸响应。当向下触摸屏幕时,就响应MotionEvent.ACTION_DOWN这个动作,当触点满足给定的区间范围,就执行相当的操作,实现游戏的状态跳转。触摸范围在划分的时候最好以屏幕的相对位置为参考点,这样在应用横竖屏的处理或者应用移植的时候会更方便,避免了频繁修改参考坐标的值。在程序入口处继承Activity 的子类中可以获取当前设备屏幕宽和高的具体属性,这样触摸范围确定时以屏幕的宽和高的属性值来定位就可以了。整个触摸部分的流程图如下:图2 触摸屏操作响应的具体流程图 2 显示的是游戏过程中触摸屏幕时具体的响应流程,主要涉及到Activity 类和View类。在Activity 类中进行触摸方法onTouchEvent()的声明,在View 类中对该方法进行详细定义和说明。当触摸响应后,触发事件响应机制,event 对象通过getAction()方法获取触摸响应,获得当前的触摸点坐标event.getX()和event.getY(),与方法中的触摸范围进行判断,若在区域内则执行触摸响应。触摸响应执行后需要在触摸释放MotionEvent.ACTION_DOWN进行触摸释放的处理,及时释放当前的触摸响应。 3 Android 平台触摸响应的优化值得注意的是,上面触摸响应MotionEvent.ACTION_DOWN 中,特意定义了一个临时触摸计数变量keyCount,当计数变量加到一定的程度时候才执行触摸响应。这样处理能有效地防止连续触摸响应,触摸不释放而直接跳到下一个状态,触摸变量的设置在各个界面跳转过程中尤其是游戏菜单中各界面跳转中是很有必要的。触摸响应中除了各个菜单界面的响应以外还有一个重要的响应就是游戏中对主角的操控。主游戏界面的触摸响应原理和菜单界面是一致的,不同的是触摸判断范围的选取有差异,菜单界面各个触摸范围是固定的,而游戏界面触摸区域的划定是动态的。由于在角色扮演等游戏中主角是核心人物,因此对主角的操控的触摸响应显得尤其重要,进行触摸设计的时候一般以主角为中心进行设计,以主角的坐标作为基本点来判断。图3 主角控制时区域的划分图 3 所示的是主角移动时候的区域划分,以水平和垂直坐标轴的交点作为主角的坐标中心点,将主角周边的区域划分为10 个区域,触点在区域9-10 的时候方向向右,对称的区域5-6 的时候方向向左,区域7-8 的时候方向向下。对于区域1-4 进行进一步的划分,2-3 区域方向向上,只响应向上的操作,区域1 同时响应右键和上键,区域4 同时响应左键和上键。这样对区域进行细化符合实际情况,区域1 和区域4 的角度范围可以根据实际情况微调。以主角为中心划分主角周边的区域以后,斜上方区域响应斜上方的键控,即响应上键的时候同时响应左键或者右键;右边区域响应右键;上下区域分别响应上和下键,响应按键后执行对应的触摸按键操作,这样按照区间划分区域具有很好的用户体验。这的注意的是,主角操控的触摸键控一定得对应触摸按键的释放,要不然系统接收用户的触摸响应后对应的逻辑会一直执行下去。当event.getAction()状态为MotionEvent.ACTION_UP 时执行触摸按键的释放,触摸按键释放的操作如下:if ((player.keyStatus & SonicPlayer.KEY_LEFT) == SonicPlayer.KEY_LEFT){player.keyUp(SonicPlayer.KEY_LEFT);}//释放具体的触摸响应触摸屏接口设计模块的改进在于根据主角的中心点细化区域,然后根据划分的区域执行相应的操作,同时在触摸的响应时增加了计数变量。4 结论Android 平台的触摸响应是非常重要的,本身的触摸事件处理机制比较复杂,但是触摸响应实现时非常简单,只需实现相关方法即可。应用的触屏响应主要分为菜单界面的触摸响应和游戏界面的触摸响应,这两部分的实现机制是相同的,只不过划定触摸范围的方法不同。在菜单各个界面中主要依靠菜单中各个图片相对屏幕的像素位置来确定触摸范围,然后实现触屏响应;在游戏界面主要以主角为中心,根据上述的区域范围划分来确定触摸范围和相应的操作。在实现触摸方法的过程中,触摸临时计数变量的设置非常必要,起到缓冲的作用,防止一次触摸键控不释放引发多个界面的响应。本论文主要对Android 平台的触摸响应进行了实现和优化,大大增强了用户体验,具有很强的应用价值。

    时间:2018-06-22 关键词: Android 平台 触摸响应 消息处理

  • Android平台非标准硬件设备驱动程序设计

    Android平台非标准硬件设备驱动程序设计

    Android系统是Google推出的基于Linux内核和Java架构的操作系统,在很短的时间内已成为主流的手机操作系统,并已逐步扩展应用到嵌入式系统、平板电脑和上网本上。它既有Linux系统所具有的硬件平台可移植性,也因使用Java语言开发应用程序带来了应用软件只编写一次即可在所有平台运行的巨大优势。Android虽然主要基于已有的技术,但在体系结构设计上有较大的创新。其主要设计目标之一就是要使应用程序和系统能独立于具体的计算机体系结构和硬件平台,表现在设备驱动程序设计上,对于已有的Linux标准设备驱动程序可以直接继续使用,只需为其增加应用层JNI接口。但对于Linux没有的非标准设备则提倡在Linux内核中驱动部分只做很少的接口工作,尽量把驱动程序的主要处理放在Android的上层架构中,即在应用层实现。本文对Android系统的底层实现技术进行深入的研究,包括Android的硬件抽象层和JNI技术实现等。并以S3C2440开发板上的LED灯设计显示驱动程序为例,提出了一种非标准硬件设备驱动程序的设计和实现方案。1 Android系统驱动程序架构1.1 驱动程序分层体系结构Android是基于Linux的,它使用了Linux内核,但应用程序使用Java语言开发,所以应用程序在调用设备驱动时不能像一般的Linux应用程序那样直接使用系统调用,必须通过Java虚拟机的JNI的本地(Native)方法使用设备。另一方面,Android要成为一个通用性强的平台,必须加强它的可移植性。这也是在Android架构添加一个硬件抽象层(HAL)的原因,目的是为设备的调用提供一个更高级的封装图1所示为Android驱动程序架构。图1 Android驱动程序架构HALStub是以Linux共享库(*.so)的形式存在,在整个驱动架构中,它是设备驱动程序运行在用户空间的一部分,它向上为Dalvik虚拟机提供硬件设备的抽象接口,向下通过系统调用与Linux内核中的驱动程序进行数据交互。在这个过程中HAL可以对驱动程序的数据进行处理,也就是说在Linux内核中的驱动程序部分只需要提供一个与硬件设备传输数据接口的功能,而其余具体的操作可以由HAL完成。1.2 Android的硬件抽象层Android的硬件抽象层HAL(HardwareAbstractLayer)在Android的架构中是在库这一层中,通过这一层,硬件厂商可以把部分设备的驱动源码封装在这一层而不公开源代码。对图1分析,设计HAL就是为了把应用框架和Linux内核分离出来,让Android使用Linux内核而又不完全依赖Linux内核。当然,驱动程序并不是完全从Linux内核中分离出来,一些基本的处理必须由内核来完成,HAL只是分担了Linux设备驱动的部分功能,至于这部分的功能占驱动程序功能的比例目前并没有一个标准。在Android系统发展过程中,HAL的实现也逐步有了一些变化,旧的HAL是一种模块化的思想,通过共享库的形式由Runtime在JNI时以函数调用方法调用,这种做法并没有通过封装,即上层应用可以直接调用硬件。另外,这种方法可被多个进程使用,映射到多个进程空间中浪费内存资源。现在HAL提出一种Stub的思想,HALStub是一种代理的概念,Stub同样是以共享库(*.so)格式存在,但上层应用并不像加载动态库那样调用Stub。这种HAL是由模块与Stub结合而成,Runtime通过模块提供的统一接口获取并操作Stub。Stub向HAL提供操作的回调函数,Runtime向HAL取得指定模块的操作函数后,调用这些回调函数。这是一种间接函数调用的方式,HAL里包含了多个Stub。图2为HALStib原理。图2 HALStub原理1.3 ndroid的JNI实现原理JNI是JavaNativeInterface的缩写,是在Sun的Java平台中首先定义出来的,它允许Java代码与其他语言代码进行交互。Android中JNI的设计目的也是一样:(1)应用程序需要与硬件平台交互时,Java库中的类不可能支持;(2)本地已经使用其他语言编写的库允许Java程序访问;(3)某些功能用较低级的语言实现的执行效率较高,让Java程序调用这些函数。在Android应用层中的程序或组件都是用Java语言开发的,这些Java代码编译后变成Dex格式的字节码,由Dalvik虚拟机执行,在执行过程中需要调用本地库时,由虚拟机载入这些本地库,然后让Java函数调用库中的函数,虚拟机相当于一座桥梁,让Java与本地库能够透过标准的JNI界面互相沟通。应用程序在虚拟机里执行,通过函数System.loadLibrary()通知虚拟机载入指定的库,例如在Java代码中包含代码如:虚拟机就会在Android文件系统的“/system/lib/”目录中查找libsample_jni.so库文件,虚拟机载入libsample_jni.so后,Java代码就可以与库文件结合起来一起执行。这些用C语言编写的本地库必须遵循规范,当虚拟机执行System.loadLibrary()函数时,首先执行本地库里的JNI_OnLoad()函数,这个函数需要实现的功能是:返回给虚拟机此本地库使用的JNI版本;对库进行初始化。如果本地库里没有实现JNI_OnLoad()函数,虚拟机就会默认本地库使用最老的JNI1.1版本。JNI_OnUnload()函数与装入函数相对应,在虚拟机释放该本地库时,会调用JNI_OnUnload()函数进行资源回收动作。在应用层的Java代码通过虚拟机调用本地函数,一般要依赖于虚拟机查找库里的本地函数,如果需要调用比较频繁,每次都要寻找一遍,就会花费较多的时间影响效率,在这里可以通过registerNativeMethods()函数把gMethods[]表格所含的本地函数注册到虚拟机里。

    时间:2018-07-11 关键词: Android 硬件 平台 设备驱动程序 非标准

  • 基于OBD协议的Android平台汽车虚拟仪表设计

    基于OBD协议的Android平台汽车虚拟仪表设计

    摘 要: 提出了一种基于OBD协议的Android平台汽车虚拟仪表设计方法。该装置以连接器硬件和解析OBD数据软件为核心,连接器硬件读取OBD接口实时数据,软件解析相关参数值,最后在Android平台设备上进行图形化虚拟仪表显示。在分析OBD协议关键技术后,具体阐述了Android SDK开发环境下软件的设计方案。按该方案设计的汽车虚拟仪表已经实现,工程实测证明:此种设计方案高效可靠,能够达到监测汽车运行参数的预期目的。关键词: 车载诊断系统; 安卓; 汽车; 虚拟仪表 OBD(On Board Diagnostics)即“车载诊断系统”[1],装载OBD协议的汽车能够自动监测汽车各项运行参数,具有很高的安全性。但是受到OBD仪表高额制造成本的制约,绝大部分汽车只支持OBD协议并提供OBD接口,但是未设置OBD车载检测仪表,因此OBD的各项功能未得到有效发挥。 Android是一款基于Linux平台的开源移动通信终端操作系统,由Google公司研发,目前全球长期使用的Android平台设备约有1 300万台。 本文介绍一种能够应用在Android设备平台的OBD汽车虚拟仪表设计方案。1 系统整体设计1.1 需求分析 OBD系统能够输出汽车电子控制单元ECU(Electronic Control Unit)通过车载传感器获得的燃油系统、温度系统、点火系统、动力系统以及废气控制辅助装置系统运行状态数据,在发生故障的情况下则输出故障码。 基于OBD协议的Android平台汽车虚拟仪表需要实现的功能是扩展OBD接口功能,与OBD接口通信,解析相关报文数据流,将解析结果以图形化的方式显示,如动力监控界面能够显示发动机状态、发动机转速、当前时速、剩余油量、发动机温度等。1.2 整体设计 用系统工程的方法划分虚拟仪表设计工作,参照模块化软件开发规范,按照以下步骤实现汽车虚拟仪表: (1)分析OBD接口,设计硬件连接器,将电平转换到Android平台设备可接受的范围; (2)虚拟仪表软件初始化连接器,读取输入信号,解析OBO信号报文并以图形化的方式显示。系统子模块图如图1所示。2 OBD接口 根据ISO DIS 15031-3规范,OBD接口被定义为双排16针插座,有A、B两种外形规范,A用于小型乘用车,B用于载重汽车[2]。A型接口一般位于转向柱和汽车中线之间。16个引脚信号定义如下。 如图2,插座的02、06、07、10、14 和15号引脚用于传输不同的汽车通信协议,通常用其作为诊断通信接口。因为一个型号的汽车只使用一种协议,所以同一型号的汽车,只需要使用其中的一个接线柱。插座01、03、08、09、11、12 和13 未做分配,由车辆制造厂商自行定义。如第4节工程实测中使用的长城CC7130SM00 汽车,将11 脚定义为发动机防盗信号、12定义为ABS(Anti-locked Braking System)车轮防抱死信号、13脚定义为安全气囊信号。3 硬件连接器设计3.1 连接器设计 连接器的作用是将OBD接口输出信号转换为Android平台设备能够识别的信号并输入。此处选用ELM电子生产的OBD转RS232专用芯片ELM327作为连接器主控芯片,连接器一端连接OBD插座,OBD接口16号引脚为芯片供电,OBD信号通过芯片转换后从数据收发口RXD、TXD输出。基于ELM327的连接器组成框图如图3所示。3.2 电平转换 Android平台设备一般采用无线蓝牙、WLAN或有线USB端口进行数据通信,这里选择USB端口作为信号输入端口。ELM327输出的信号范围是0 V~12 V,Android平台设备USB端口接收的信号范围为0 V~5 V,两者不匹配[3],设计以PL2303芯片为核心的转换电路完成转换,电路图如图4所示。4 虚拟仪表软件设计

    时间:2018-10-23 关键词: 汽车 协议 Android 平台 仪表

  • Google携手NXP将NFC引入Android 2.3手机平台

    恩智浦半导体(NXP Semiconductors)于日前宣布与Google达成一项战略合作协议,共同开发用于近距离无线通信(NFC)的开源软件协议栈。NFC软件协议栈将被集成到代号为Gingerbread的最新版AndroidTM平台中去,并将同时得到验证。Google还将恩智浦提供的NFC控制器(PN544)集成到其与三星公司合作开发的全新Nexus S手机中,以满足用户能使用上以NFC技术为基础的服务与应用需求。这些足以改变行业面貌的行动使得NFC的多样化应用优势迅速惠及全球消费者、开发人员和设备制造商。 凭借10多万种应用程序及众多开发人员的支持,Android平台在智能手机和移动设备领域的地位正日益提升。通过向Android开发人员提供开源NFC系统,恩智浦将帮助设计人员开发出更多将移动应用接口扩展到以外那些全新的、令人振奋的以及创新的应用领域。同时,设备制造商也可应用该技术开发出上市时间更短、研发和生产成本更低的NFC移动设备。 Google移动平台项目经理 Chu表示:“Android为移动设备的快速创新提供了绝佳的开发平台。我们始终都在寻求能够利用新技术来提高和拓展移动设备用途的创新方式。在恩智浦的帮助下,我们将NFC技术引入到Android平台中的这一举措将会为开发人员、服务商和设备制造商带来足以改变行业面貌的机会:在提供全新业务的同时,还能令用户以以往不可能实现的一种全新的方式与人及现实世界进行互动。” 恩智浦执行副总裁兼智能识别事业部总经理Ruediger Stroh表示:“虽然问世仅有两年,但业界分析师已认为Android系统有望至2014年成为第二大移动平台。此次Google采用NFC技术必将进一步促进NFC在手机终端和应用领域的发展。而开源开发环境也将进一步扩大创新领域,推动移动设备服务与应用的全面革新。” 现今,NFC为移动设备消费者带来了更多便利、互动与安全,并通过将虚拟世界应用与现实环境相链接,进一步改善了智能手机的用户体验。通过自然触碰手势,NFC设备还可以与各种附件轻松配对,实现点对点数据交换,同时也可与已经大量布署的阅读器和标签基础设施进行连接。采用Nexus S手机,消费者可随时读取NFC标签。 历经市场验证的NFC技术早在2002年就由恩智浦及其合作伙伴共同开发。2004年,恩智浦联合各方共同创立了NFC论坛,旨在引导业界所有利益相关方之间的合作并且促进NFC技术的标准化进程。NFC技术源于射频识别()和互联技术的融合。恩智浦已连续三年名列ABI Research非接触式IC供应商排行榜第一位,是NFC的全球领军企业,由其提供的已在全球超过150个NFC试用项目和主要商业项目中得到实地验证。

    时间:2018-11-07 关键词: 手机 NXP google Android 平台

  • Android平台的LTE协议堆栈

      为数字消费、家庭网络、无线、通信和商业应用提供业界标准处理器架构与内核的领导厂商美普思科技公司(MIPS)和为4G提供移动WiMAX和LTE嵌入式软件解决方案的领先供应商SySDSoft共同推出业界首个移植到Android™平台的LTE协议堆栈。此外,在MIPS-Based™ Android和Linux平台上运行的SySDSoft LTE协议堆栈的基准测试数据显示,在小数据包容量、低CPU运行频率和低功耗条件下,可实现接近理论最大值的CAT4数据吞吐量。该结果充分展现了MIPSTM架构可为4G移动电话带来的效率。与运行在500MHz的竞争解决方案相比,MIPS拥有更高的上传/下载吞吐量及类似或更高的性能。这是以350MHz内核运行小数据包量所能得到的最高性能表现。  SySDSoft的LTE UE软件堆栈是在采用350MHz MIPS32TM 24Kf™ CPU内核的MIPS-Based芯片组上的Linux和Android操作系统进行测试的。该基准测试利用eNodeB仿真器来测试不同大小的测试包,证明实现了符合CAT4要求的UE性能。结果显示,当数据包最小为256byte时,可达到150Mbps下载(Download-DL)和50Mbps上传(Upload-UL)的数据速率。针对128byte数据包,结果约为100Mbps DL以及50Mbps UL。即使在此严苛条件下,也可达到CAT3的性能。  这些基准测试显示,用最小的处理器MIPS消耗(平均为95MIPS),便可获得高性能。此外,无需在Linux和Android两种操作系统间进行程序代码修改就可达到这一性能,展现了LTE UE堆栈架构的通用性。

    时间:2018-11-05 关键词: 协议 Android 平台 堆栈

  • 分析:Android平台的技术动力和商业价值

    到2010年底,市面上将会有115款谷歌Android手机以及50款非手机的Android设备。不管这些数字是否准确,现实的情况是,Android开始突破其最初锁定的智能手机,开始向多个行业和领域的嵌入式设备进军。 为什么产品经理以及技术负责人都对这个热门的平台投以青睐的目光?为什么Android技术对、和车载信息娱乐系统等诸多不同的市场有如此大的吸引力?其中既有商业方面的因素,也有技术方面的因素。 产业动力 在开源授权许可下的技术,会给成本和开发团队建设带来极大的优势,这对技术经理和公司高管都有足够的吸引力。这方面的确有一些令人信服的理由,让他们选择嵌入式Android操作系统。 首先是授权许可因素。采用开放源代码技术的嵌入式系统开发要求开发商/卖方充分理解嵌入式软件组件的许可证。Android是非常有吸引力的,因为依据Apache 2.0授权许可的条款,所有内核包封装都是开放的,这就允许大家将其源代码用于自己的开源应用程序中,不管是商业盈利用途还是免费提供出去。 接下来是源代码因素。Android提供了一系列源代码,由Android团队特别编写,利用现有的开源项目提供了一个完整且紧密衔接的软件堆栈。在当前在公用的Android库中有200多个独立的Git树。这里不仅有核心包源代码,而且还有很多硬件部件厂商也愿意提供其特殊驱动程序的源代码。再加上有很多社区都在积极地对这些源代码进行管理和维护。显然,任何希望针对各种特殊用途而对代码进行优化的开发团队都将从中获益。 版本发行频率也是重要因素。Android以相对频繁的节奏推出主要版本。移动手机的血统决定,它必须以更快节奏的发布周期来满足市场期待。现在,每年推出很多个版本是家常便饭。但Android似乎计划将周期设定在每半年发布一个版本,这种更新速度将很明显地使Android采纳者受益。 来自产业链的支持更加有力。尽管最早期的Android产品工作重点关注ARM架构,实际上几乎所有的主要嵌入式芯片供应商都已经建立并积极地保留一个Android基本端口。这些硬件供应商可以协助开发人员加快其产品上市,并开放他们的架构以让开发人员从中受益。 从软件方面来看,已经有一个与Android相关的大型开发者社区,不仅推动应用层内容(有超过40,000个可用应用程序),而且还推动了Android中间件组件,从增强和优化等方面。这对Android的持续发展至关重要。 文档和培训也是重要因素。让开发团队精通Android所需要的时间也是要计成本的。要让你的团队变得能干,清晰、简洁、最新的文档至关重要。Android社区提供有一系列教学内容、视频(有一些是用户制做的,有一些来自商业供应商)、大量的博客和不同公司提供的Android学术研讨、最佳实例和教程。 技术动力 在技术方面,有很大一股力量推动着传统嵌入式开发人员积极采用Android平台来设计新产品。以下几个方面突出体现了移动装置制造商的首席技术官、工程负责人以及产品管理人员愿意采用Android的最主要原因。 首先是广为开放的技术框架。谷歌和其合作伙伴联盟正在投资用于满足特定的应用需求的框架(framework)。Android提供了新的、快速发展的技术框架,不仅是手机,甚至很多并非传统上的智能手机的设备,都将被纳入这个框架。这将为Android装置进入智能家庭、智能办公室市场开辟道路。 其次是现成可用的硬件参考平台。Android普及导致的结果之一就是,硬件厂商为了开发原型产品以及对自己的硬件产品进行性能测试,推出了许多参考性的平台。因此,最终产品开发制造商在此基础上只要稍加修改,即可推出自己的产品。目前,Android 硬件参考平台最大量的主要是基于ARM的手机(采用高通芯片),主要也是以特定库集合的性能基准测试或者Android一致性测试套件为目的。其它基于硬件的参考平台,例如德州仪器( )的Zoom 和Beagleboard参考系统。另外还有很多新的平板电脑、车载信息娱乐和产品。所有这些参考设计,都将成为最终产品制造商的最佳起点。 轻松上手的虚拟机。与软件堆栈的上层和中间层相关的编程语言是嵌入式系统的技术评价的决定性标准之一。是非常流行的编程语言,在业界已经有数量众多的工程师在开发方面经验十分丰富,而Android是基于变成语言的,虽然它是以自身的虚拟机Dalvik为基础。因此,尽管这些工程团队可能需要花些精力去熟悉和理解Android Java库和类以及字节编码结构,但这些受过精良训练的Java工程师无疑会成为Android产品开发的中间力量。 精良的开发和调试工具将是推动Android产品发展的重要动力。使用开放源开发环境和调试工具,允许现有的开发部门迅速地切换到新的Android平台上来,特别是如果其以往的经验建立在另一个基于嵌入式的开发环境,这就拥有了更好的基础。从调试的角度来看,开发人员很容易接受Android,因为GDB、GNU调试器,是一种常见的调试Android代码的方法。同时,NDK(Native Development Kit,本机开发工具包)也支持被添加到标准的Android软件开发工具包中,提供了一种建立性能和图形敏感应用的新方式。 在以Google为首、由电信运营商、设备制造商和半导体厂商构成的OHA中,风河公司是第一家商业成员,自然也就在Andorid的发展中起到了重要的作用,特别是跟所有的半导体芯片厂商密切合作,以便使Android系统和硬件芯片的效能都发挥到极致。同时,风河也为OHA的关键技术做出了重要贡献,例如ALSA( Linux Architecture )、V4L2集成、硬件抽象层、测试与兼容以及常见缺陷排除等。 的应用是以苹果公司为核心。PC的应用是以微软为核心。Android应用,不论核心在哪里,把产品建立在Wind River Platform for Android基础之上都是比较可靠的选择。

    时间:2018-11-07 关键词: 动力 Android 平台 技术 商业价值

  • 基于Windows平台VxWorks交叉编译工具设计

    1 交叉编译工具链功能说明 交叉编译技术,就是一种在一个异构平台上编译出目标平台程序的技术。比如在PC平台(X86 CPU)上编译出能运行在以VxWorks为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到VxWorks CPU平台上才能运行。 每一个软件在编译的过程中都要经过一系列的处理,才能从源代码变成可执行的目标代码。这一系列处理包括预编译、高级语言编译、汇编、链接及重定位。这一套流程里面用到的每个工具和相关的库组成的集合,就称为工具链( chain)。以GNU的开发工具GCC为例,它就包括了预编译器CPP、C编译器GCC、汇编器AS和链接器LD等。在GNU自己对工具链定义中,还加进了一套额外的用于处理二进制包的工具包Binutils,整个工具链应该是GCC+Binutils+Glibc。对于i586-wrs-vxworks工具来说,因为在生成VxWorks交叉编译工具链时,用到的C库文件是从Tornado开发软件中提取出来的,所以生成的实际交叉编译工具链应该是GCC+Binutils+Tornado(C库文件)。GCC(GNU C Compiler)是一个C语言编译器。随着众多自由开发者的加入和GCC自身的发展,如今的GCC已经是一个包含众多语言的编译器了。其中包括C、C++、Ada、Object C和等。所以,GCC也就变为GNU Compiler Collection,也就是GNU编译器集合。当然,如今的GCC借助其特性,具有了交叉编译器的功能,所以又将GCC称为交叉编译工具链。 2 i586-wrs-vxworks交叉编译工具链制作背景 现在市场上有很多公司的选用的是基于WindRiver(风河)公司的Vxworks系列产品。 一般说来,在开发VxWorks嵌入式的平台时,开发厂商会推出一整套交叉编译工具链来配合自身的嵌入式产品,但是这些由商业公司提供的工具链,都不会附有工具链相关的源代码和制作方法,灵活性不足,并且它们一般都与整套开发系统捆绑销售使用,成本较高。为了更好地理解这种技术和降低成本,我们使用了国际开源组织GNU开发的工具链作为产品开发的工具,提供了更好的使用灵活性。 3 交叉编译工具链设计 要构建出一个交叉工具链,需要解决3个问题: ①这个工具链必须是可以运行在原工作站平台上的。 ②需要更换一个与目标平台对应的汇编器,使得工具链能产生对应的目标代码。 ③要更换一套与目标平台对应的二进制库,使得工具链在连接时能找到正确的二进制库。 根据这样的思路,采取了如下几个步骤: 3.1 确定宿主机平台、目标机平台及开发工具 根据项目要求,GCC交叉编译工具要能工作在基于Windows构架的平台,编译生成的可执行代码要能够满足基于X86结构的VxWorks嵌入式平台。编译时选用的开发平台为Windows XP,开发工具为Cygwin。 Cygwin当初首先对GCC、GDB、GAS等开发工具进行了改进,使它们能够生成并解释Win32的目标文件。然后,他们要把这些工具移植到Wi-ndows平台上去。一种方案是基于Win32 API对这些工具的源代码进行大幅修改,这样显然需要做大量工作。因此,采取了一种不同的方法——写一个共享库(cygwin.dll),把Win32 API中没有的风格的调用(如fork、spawn、signals、、等)封装在里面,也就是说,基于Win32 API写了一个Llnix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用主机上的交叉编译器来生成可以在Windows平台上运行的工具集。 host_alias(宿主机名称) = i686?pc?cygwin32 host_cpu(宿主机cpu构架) = i686 host_(宿主机产商)= pc host_os(宿主机操作平台) = cygwin32 target_alias(目标机名称) = i586?wrs?vxworks target_cpu(目标机cpu构架) = i586 target_(目标机产商) = wrs target_os(目标机操作平台) = vxworks 3.2 选择开发资源包 GCC、Binutils文件均有各自的版本号,不是任意组合都可以编译成功并最终建立一个交叉编译环境的。基于稳定性方面考虑,这里选用的GCC和Binutils版本较老一点,但是大多数工程人员推荐的版本(Binutils-2.10,.95.3)。 3.3 建立环境变量 该步骤的目的是方便重复输入路径,直接输入绝对路径也是可行的。声明以下环境变量的目的是在之后编译工具库的时候会用到,方便输入,尤其是可以降低输错路径的风险。 export PRJROOT="/VxWorks" export TARGET="i586"?wrs?vxworks export PREFIX=$PRJROOT/s export TARGET_PREFIX=$PREFIX/$TARGET export PATH=$PREFIX/bin:$PATH 3.4 生成Binutils二进制库 Binutils是GNU工具之一,它包括链接器、汇编器和用于目标文件和档案的工具,是二进制代码的处理维护工具。安装Binutils工具包含的程序有addr2line、ar、as、c++filt、gprof、ld、am、objcopy、objdump、ranlib、readelf、size、strings、、libiberty、libbfd和libopcodes。 首先安装二进制工具,使用主机的GCC进行编译。生成的交叉二进制工具i586-wrs-vxworks-ar、i586-wrs-vxwor-ks-as、i586-wrs-vxworks-ld等是编译交叉程序的基础,所以必须放到第一步进行。编译过程如下: cd $PRJROOT cd tar xzvf binutils 2.10.tar.gz p binutils cd build binutils ../binutils 2.10/configure target=$TARGET prefix=$PREFIX prefix=$PREFIX export PATH=$PREFIX/bin:$PATH 编译完成以后,将会生成Binutils工具,对这些工具作用的解释略——编者注。 3.5 生成i586-wrs-vxworks交叉编译工具链 配置参数如下: cd $PRJROOT/build tar ?xjvf gcc?2.95.3.tar.bz2 build?gcc cd build?gcc ../gcc 2.95.3/configure tatget=$TARGET prefix=$PREFIX ?prefix=$PREFIX ?=/c/Tornado/target/h libs= /c/Tornado /target/lib included gettext with gnu as with gnu ld enable languages=c,c++ v LANGUAGES="c c++" make LANGUAGES="c c++" 执行完编译,安装命令之后,将会在$PREFIX/bin/文件夹中生成工具。至此,一个完整的基于VxWorks的GCC交叉编译工具链就建立起来了。 5 结论 本文生成的i586-wrs-vxworks交叉编译工具链通过了大量的工程实践与测试,可以良好地运行在基于Windows操作系统的PC机平台上,编译和链接基于Vx-Works平台的程序,从而满足了VxWorks商业软件嵌入式应用的开源化,能为客户节约不少经济开销,但是改进GCC对代码的优化还有待进一步的研究。

    时间:2019-01-01 关键词: Windows 平台 VxWorks 工具

  • 基于NiosⅡ嵌入式平台实现μC/GUI在便携式医疗监护仪上的移植

    基于NiosⅡ嵌入式平台实现μC/GUI在便携式医疗监护仪上的移植

    便携式医疗监护仪已成为人们日常生活中不可缺少的一部分。便携式设备是由硬件与软件紧凑组合的一个单元模块,是一种体积小、智能化程度高、功能全、使用灵活、操作方便的便携机,适合家庭使用、外出携带等用途。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI界面系统设计,就是在基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植,使之实现系统功能。1 μC/GUI的系统移植1.1 μC/GUI简介及可移植性分析 μC/GUI是Micrium公司开发的通用的嵌入式图形用户界面软件,其中图形用户接口GUI(Graphical User Interface)。该界面软件被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。μC/GUI适用于使用任何LCD控制器和CPU的任何尺寸的物理和虚拟显示,具有源代码开放及模块化设计的特点。 μC/GUI的代码全部用ANSI的C语言编写的,具有很强的移植性。由于μC/GUI采用分层结构,即具有驱动接口层和应用层,因此可方便地移植到各种 CPU下使用。μC/GUI对各类图像LCD显示器具有良好的支持,并且有常见的2D图形库和窗口管理功能,而且消耗较少的系统资源,占用RAM和ROM 的空间很小。在典型的应用中,μC/GUI需要的资源如表1所示。由表1可见,运行μC/GUI需要的系统资源不是很多,并支持几乎所有类型的CPU与大多数的LCD模块,μC/GUI的源代码规模适中,移植过程中可将不需要的代码进行剔除,而且结构层次清晰,因此适合用于嵌入式系统中。1.2 μC/GUI移植原理 嵌入式用户图形界面系统μC/GUI与嵌入式实时操作系统μC/OS-Ⅱ都是美国Micrium公司产品,μC/GUI能更轻易地在 μC/OS-Ⅱ上应用,实现与μC/0S-Ⅱ的无缝结合。在NiosⅡ嵌入式系统中,Altera公司已经将μC/OS-Ⅱ操作系统移植成功并且提供使用,所做的工作是将μC/GUI移植到NiosⅡ嵌入式平台之上,使其能与μC/OS-Ⅱ操作系统结合使用,采用μC/GUI 3.98版本的源代码进行移植。 μC/GUI的软件体系结构如图1所示,μC/GUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、圆、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。 μC/GUI函数库可以通过GUIConf.h文件进行配置,包括内存设备,窗口管理器,支持操作系统、触摸屏,以及配置动态内存的大小等。在移植中,需要根据系统需要以外设所支持的功能对GUIConf.h文件进行配置。 在LCDConf.h文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把μC/GUI的各种函数解释成LCDConf.h文件定义的液晶接口函数,这个文件与具体的硬件连接无关。在移植时,需要对LCDConf.h文件进行配置,并针对LCD控制器编写相应的LCD驱动文件。2 μC/GUI在NiOSⅡ上的移植设计2.1 TFT LCD IP核结构 μC/GUI的移植是基于IP核的移植,编写TFT LCD控制器,所以移植时,在底层配置文件,参数的配置要和TFT LCDIP的相关参数相匹配,否则不可能移植成功,该IP核的结构如图2所示。 液晶屏采用台湾统宝公司的TRDB_LCM 3.6寸屏,该屏的分辨率是320x240,支持24位色,也就是RGB888模式,但是由于Avalon总线支持传输数据宽度的差异,因此只用16位色,即RGB为565的模式。由于DE2-70有2个32 MB的SDRAM,所以拿使用其中一块作为数据的存储器,Nio-sⅡ处理器将图像数据写入该SDRAM中,在NiosⅡIDE中用软件控制缓冲器的开启,当开启缓冲器之后,该BUFFER会源源不断地读取SDRAM中的数据,为避免读数据和NiosⅡ处理器向其中写入数据时发生冲突,Avalon总线自动在二者之间加入了一个Arbitrator仲裁模块来决定执行哪个操作。 配置LCD采用3线串行总线配置LCD,缓冲器以Avalon存储器映像主机的方式从SDRAM中读取数据,然后以Avalon Streaming Soume的方式把这些数据传送到LCD控制器上,LCD控制器是以Avalon Streaming Sink的方式接收从缓冲器传来的数据,LCD控制器生成时序,在适当时候将数据送出到TFT LCD屏上显示。2.2 移植过程2. 2.1 μC/GUI的文件组织结构 μC/GUI是以ANSI C源码包的形式提供的。源码包由配置文件目录(Config)和库函数目录(GUI)2个文件目录组成。在Config目录中包含了LCDConf.h、GUITouchConf.h、GUIConf.h 3个配置文件,这3个文件分别用于LCD底层接口的配置、触摸屏底层接口的配置以及μC/GUI自身的配置。在GUI目录中的库函数文件按照不同功能又分成若干子目录如图3所示,各子目录所实现的功能如表2所示。2.2.2 移植过程首先建立一个硬件系统,采用Altera公司的QuartusⅡ9.0版本的配套软件,硬件系统在QuartusⅡ集成的 SOPCBuilder系统开发工具中建立,添加NiosⅡ处理、JTAG调试模块、添加定时器SDRAM控制器、BUFFER IP、TFT LCD IP以及其他部分组件,最后生成一个硬件系统。然后在NiosⅡIDE环境下针对该系统建立一个TFT LCD软件工程,并且将μC/GUI有关的源代码拷贝到工程目录下,修改LCDConf.h、GUIConf. h、LCDLin32.c以及GUI_X_uCOS.c文件,使之与LCD控制相匹配,在该系统中,LCD采用16位数据总线,而CPU是32位的NiosⅡ软核处理器,先查看一下μC/GUI所支持的数据宽度信息,其数据宽度和NiosⅡ处理器所支持的宽度基本吻合,只要在改动代码时注意就可以。以下是具体的代码实现情况: 因为这里是基于TFT LCD IP核的移植,所以要定义LCD的读写函数,即LCD_READ_MEM(Off)和LCD_WRITE_MEM(Off,data)以及显示缓存区的起始位置,读写函数中的Off和data都是32位的无符号数,而操作函数IORD_32DIRECT()以及IOWR_32DIRECT()都是一次执行 32位数的操作,刚好和NiosⅡ处理器的数据宽度相匹配。由于支持μC/OS-Ⅱ操作系统,所以要对GUI_X_uCOS.c文件进行修改,增加系统延时函数OSTimeDly(1),使之能与μC/OSⅡ操作系统实现无缝衔接,以及3个子函数,void GUI_X_Log(const char*s){GUI_USE_PARA (s);};void GUI_X_Warn(const char*s){GUI_USE_PARA(s);};void GUI_X_ErrorOut(const char*s){ GUI_USE_PARA(s);};LCDLin32.e是对应3200型号控制器的驱动文件,由于在LCDConf.h中已经对用到的参量进行设置,所以无需修改,剩下的工作就是把不用的文件进行剔除,以减少编译时产生多余的代码量。3 移植验证 在NiosⅡIDE环境下修改配置文件以及驱动文件,然后编译该系统,系统编译成功,编译成功之后还有MICRIUM公司的联系方式,这个是提醒用户该系列软件如果要用于商业目的是需要买license的,用于研究目的是免费的。 图片验证是采用μC/GUI自带的位图转换工具uC-GUI-BitmapConvert.exe,该工具可以将.bmp格式图片转换成指定的C语言数组的形式保存,例如将兰博基尼跑车标志的图片转换成RGB565的格式进行保存,加入工程,编译工程,然后下载验证,如图4所示。窗口管理组件验证采用代码包中自带的一个测试代码,其效果如图5所示。实验结果表明,移植是成功的。4 结论 本文介绍了μC/GUI界面系统,以及NiosⅡ嵌入式系统,详细介绍了移植的过程,以及最终实现移植。实验结果表明,在嵌入式系统中使用μC/GUI进行人机界面的开发,不但移植简单、使用灵活,而且功能强大,稳定高效,大大降低了在嵌入式系统中开发图形人机界面的复杂程度,而且 μC/GUI还提供了几个非常实用的工具软件,其中包括一个仿真器,它使得在进行移植工作的同时,就可以在仿真器上进行软件界面部分的程序编写,加快了整个系统的开发进度。还有位图转换工具,可以轻松地将图片转换成C语言数组的形式保存,方便界面开发。μC /GUI还支持其他PS2鼠标、PS2键盘、触摸屏,包含丰富的绘图库、动画显示优化、还可以自己加入中文字体,通过使用μC/GUI的各项功能,相信可以在嵌入式系统中开发出功能强大的人机界面,而且在嵌入式系统中有很好的应用前景。

    时间:2018-10-30 关键词: 嵌入式 ii 平台 监护仪 医疗 uc/os

  • 生成可靠的 Windows XP Embedded 平台

     简介 该白皮书面向刚刚接触 Microsoft Windows XP Embedded 并且希望更好地了解如何在其 x86 客户端设备上生成可靠的嵌入式 Windows XP 映像的开发人员。本文分为四个部分。第一部分提供了有关嵌入式 Windows XP 操作系统 (OS) 的概述,解释了其固有可靠性的由来。第二部分提供了一些软件工程设计准则,这些准则可用来提高嵌入式 Windows XP 生成的可靠性。第三部分提供了用于在嵌入式 Windows XP 生成过程的多个步骤中提高可靠性的提示(参见下面的图 1)。最后,第四部分概述了多个可以在质量保证测试中发挥作用的、便于使用的测试实用工具。 图 1. 嵌入式 Windows XP 生成过程高级概述 嵌入式 Windows XP 概述 嵌入式 Windows XP 代码基 嵌入式 Windows XP 和 Windows XP 都是在 Microsoft Windows NT 和 Windows 2000 的同一稳定代码基上生成的。该代码基提供了受保护的内存模型和抢先式多任务 — 这两者都促进了系统稳定性。从这一经过检验的代码基开始,从根本上而言,嵌入式 Windows XP在从内核级别开始的各个级别上都是可靠的。 Windows XP 桌面操作系统和嵌入式 Windows XP 操作系统之间的差别在于:嵌入式 Windows XP 被模块化为多个组件。了解嵌入式 Windows XP的组件化机制是部署可靠的嵌入式 Windows XP 生成的关键所在。 嵌入式Windows XP 生成的概念 嵌入式 Windows XP 的生成 概念与嵌入式操作系统(如 Windows CE .NET)不同。对于嵌入式 Windows XP 而言,生成 意味着收集为支持目标设备中需要的功能所需的二进制文件、注册表项和其他资源。对于 Windows CE .NET 而言,生成 意味着实际重新编译和链接 OS 与应用程序。 软件工程设计准则 开发人员可以利用多个可能对可靠性产生重大影响的软件工程设计准则。 选择供应商 嵌入式 Windows XP 的一个主要优点是开发人员可以使用现成的基于 x86 的硬件作为他们的客户端设备。这一便利可以节省时间和金钱。但是,从可靠性观点来看,开发人员需要了解设备硬件是决定设备可靠性的关键因素。同样,开发人员需要仔细选择提供其他软件驱动程序或应用程序的第三方供应商。开发人员应该在以下五个方面评估他们的供应商: ? 供应商硬件能否满足或超过目标系统要求(即,Intel Pentium II 或更高等级的 CPU、ACPI PnP 基本输入/输出系统 (BIOS) 支持、外围设备组件互联 (PCI) 2.0 或更高等级的支持、5 MB 的存储媒体、64 MB 的 RAM)? ? 该硬件供应商是否注重质量?该供应商的质量过程是什么?该供应商是否参与了 Microsoft 的 Windows Hardware Quality Lab (WHQL) 计划? ? 软件供应商是否对它们的软件驱动程序或应用程序进行担保? ? 这些供应商是否提供及时的技术支持? ? 如果硬件或软件的专用部件只有一个供应商并且出现了技术问题,那么该供应商能够以多快的速度做出反应? 开发方法 在开始之前遵循一套开发方法(包括编写软件需求文档)可以间接提高最终生成的可靠性。生成嵌入式 Windows XP 映像是一个选择和配置组件的过程。例如,借助于概述了最终用户将如何配置目标设备的需求文档,开发人员可以选择正确的组件以启用正确的功能。借助于概述了如何制造目标设备的需求文档,开发人员在配置嵌入式 Windows XP 生成时可以适应生产流程。 嵌入式Windows XP 技术支持 嵌入式 Windows XP 开发工具 Embedded Studio 易于使用,但如果开发人员具有可用的技术支持网络,则可以节省时间(并减少加班时间)。Microsoft 在该 Microsoft Web 站点中为嵌入式 Windows XP 支持非常强大的开发人员社区。开发人员可以在该站点中利用新闻组、技术文章、知识库和其他资源。此外,可以从许多公司(如 BSQUARE)购买嵌入式 Windows XP 技术支持软件包。 嵌入式 Windows XP 开发过程 Microsoft 的 Web 站点详细说明了嵌入式 Windows XP 开发过程和工具。这些步骤在第 1 页上的图 1 中进行了概述,分别为:分析硬件、创作组件、配置生成和部署映像。本部分不在这里重复相同的信息,而是针对开发人员可用来确保更为可靠的嵌入式Windows XP 生成的每个步骤提供专门的提示。[!--empirenews.page--] 开始之前提示 #1:加载 XP Pro 和应用程序 开发人员为确保可靠的生成而进行的最佳时间投入是,在开始的时候,在自己的 x86 目标设备上安装 Windows XP Professional(桌面操作系统)。通过安装和运行 XP Professional 和指定的应用程序,可以提供有关硬件、驱动程序和应用程序的可靠性的基准。通过这种运用基准化的方法,开发人员可以在嵌入式 Windows XP 的可能源发生生成错误时将硬件、驱动程序二进制文件和应用程序在外。 分析硬件提示 #2:了解目标分析器 目标分析器的两个程序 — 目标分析器专业版 (TAP.exe) 和目标分析器 (TA.exe) 互为补充。TAP.exe 是一种要求在目标设备上安装 Windows 2000 或 Windows XP 的 Microsoft Win32 应用程序。如果开发人员无法使用 TAP.exe,则可以选择运行目标分析器 (TA.exe) — 它在 DOS 环境中运行。TA.exe 只检测 ACPI、USB、1394、SCSI、PCMCIA 和 ISA 的存在(与存在和设备相对)。此外,TA.exe 可以为硬件抽象层 (HAL) 产生最佳推测,并且不检测软件枚举设备。在使用 TA.exe 时,开发人员可能需要其他来源以便说明目标设备体系结构。 配置生成提示 #3:节省原型化时间 通过 Target Designer,开发人员可以生成操作系统映像以便进行测试,而无须对该操作系统进行授权。该映像将在 90 到 180 天内有效,然后该映像将“蓝屏”。如果开发团队已经选择了嵌入式 Windows XP ,并且已经为贸易展或重要客户开发了原型,则该团队应该考虑使用产品许可证。这可以避免出现以下情况:即,在一段时间(例如四个月)以后的某个周末,因为演示版“蓝屏”而找来某位工程师进行紧急处理。 配置生成提示 #4:Target Designer 中的可见性设置 Target Designer 使开发人员可以设置可见性阈值,该值指示组件在配置过程中是否可见。使用可见性级别,可以减少开发人员必须处理的组件的数量。开发人员应该知道,当他们调试生成并且认为缺少某个组件时,他们应该确认它的可见度设置。 配置生成提示 #5:Target Designer 中的依赖项检查 在配置嵌入式 Windows XP 生成时,Target Designer 不断地检查冗长的依赖项链。每个组件都具有它自己的需要和依赖项。如果选中了 Auto-resolve dependencies 复选框,则 Target Designer 会自动解决组件之间的依赖项问题。该自动化技术的弊端是:生成可能变得超过开发人员所希望的大小,并且不会提供有关哪些组件被添加以满足依赖项的可见度。开发人员需要了解提高生成过程的速度并使用自动化依赖项检查与最大限度地减小映像之间的折衷。 部署映像提示 #6:使用系统克隆工具 在制造过程中,当准备将在多个设备上复制的生产映像时,开发人员应该包括系统克隆工具组件。如果每个设备分别经历独立的 First Boot Agent (FBA) 过程,则无需该克隆组件。但是,FBA 过程非常费时,并且对制造环境不利。 测试的作用 可以使用多个测试实用工具,以协助进行嵌入式 Windows XP 调试。使用 PC Magazine (http://www.pcmag.com) 提供的 InCtrl5,开发人员可以获取系统的前后快照。FileMon 是一种免费提供的工具,它可以实时显示文件系统活动,包括程序使用了哪些文件(包括动态链接库 (DLL) 和配置文件)。RegMon 也可从 Sysinternals (http://www.sysinternals.com) 获得,它显示了哪些应用程序正在访问注册表。Microsoft 在它的 Platform SDK 中提供了 Dependency Walker 实用工具,它可以帮助开发人员确保为应用程序或驱动程序包含所有需要的 DLL。 小结 该白皮书探讨了开发人员可以重点关注以确保更加可靠的嵌入式 Windows XP 生成的四个方面。这些方面包括:了解嵌入式 Windows XP 的由来;使用可靠的软件工程设计准则;通过使 Windows XP Professional 在目标设备上运行来启动项目以及其他一些可以提高可靠性的生成提示;以及将使用多个方便的测试实用工具进行测试结合到开发过程之中。但愿刚刚接触嵌入式 Windows XP 的开发人员能够在这些主题中找到一些忠告,以减缓其嵌入式 Windows XP 学习曲线,并且帮助他们早日将可靠的产品投放市场。

    时间:2014-03-20 关键词: Windows WinCE 平台 embedded xp

  • 研华发布用于3.5"SBC和SOM-ETX平台的WindowsCE6.0解决方案

    研华发布用于3.5"SBC和SOM-ETX平台的WindowsCE6.0解决方案

    研华发布用于 AMD Geode LX800 3.5" SBC PCM-9375 和 Intel? Pentium? M SOM-ETX SOM-4481 嵌入式平台的新版 Windows? CE 6.0 嵌入式操作系统和板卡支持包 (BSP)。研华 Windows CE 即用平台为系统整合商 (SI) 提供了一套完整的组件,用来加快样品、应用程序开发和 Windows CE 应用演示的进度。 研华嵌入式电脑事业群副总裁 Jack Huang 指出,“作为 Microsoft 的 VAP 和金牌合作伙伴,我们很高兴推出新版 Windows CE 6.0 嵌入式操作系统,”“Windows CE 6.0 拥有全新设计的内核,最多支持 32,000 个并发处理,每个处理的虚拟内存访问最大可达 2 GB。此外,.NET Compact Framework v2.0/SP1 还提供更多的组件和 API,可为应用开发人员提供最大程度的支持。这样研华和我们的 SI 客户就可以设计和推出各种最新增值解决方案。研华将充分利用 Windows CE 6.0 的全面优势增强我们的硬件平台功能,以帮助我们的客户设计更加稳定的兼容产品。很快将会有越来越多的平台使用 Windows CE 6.0。” 研华最新推出在3.5" 饼干 SBC PCM-9375 和 SOM-ETX SOM-4481 上运行的 Windows Embedded CE 6.0。PCM-9375 是一款带有丰富嵌入式功能的最新 3.5" 饼干 SBC。最新的 AMD Geode? LX 800@0.9W 处理器将高性能与低功耗完美的结合在一起,为 32 位嵌入式应用提供了最佳解决方案。SOM-4481 支持 Intel Pentium M 和 Celeron M 处理器,是一款功能强大的无风扇 SOM-ETX CPU 模块,适合大部分需要高性能 CPU 处理和图形支持的嵌入式应用。

    时间:2019-03-05 关键词: quot WinCE 平台 解决方案 研华

  • 专业打造Windows CE平台嵌入式系统

    绪论  microsoft windows ce轻而易举地主宰着嵌入式系统市场。面向从最基本的系统到高级的32位嵌入式系统,windows ce是一个小规模而又高度可定制的操作系统。它是一个全新的系统,以最现代的技术设计和优化,适用于现有的和下一代的32位微处理器家族,包括基于mips、powerpc、sh-3、sh-4、arm、strongarm和pentium核心的功能强大的新型处理器。handheld pc(h/pc)是最先利用windows ce功能的一类设备,但h/pc是这一崭新而功能强大的系统现在唯一实现了的应用。可以预见,在未来的几个月或一年内,业界将掀起一股热潮,纷纷在便携式电子设备和紧凑的专用系统运行windows ce。windows ce允许嵌入式应用软件在公开接口上产生产品数据的功能将激起一股控制和hmi产品涌入市场的潮流。  windows ce platform. builder 2.11提供您需要的操作系统和开发工具以创建高级嵌入式应用程序。它和高性能的developer studio集成在一起,让您获得高效率和项目管理能力,以及在windows ce操作系统下创建嵌入式应用程序的完整的工具包。这个集成环境包括了win32 api--业界领先的应用编程接口。win32提供了丰富且容错性极好的服务。另外,存在着成千上万的其他工具、软件库、书籍及其他资源供win32开发者使用,自然,有着更多的谙熟win32 api的软件开发者。  windows ce platform. builder 2.11改变了嵌入式软件工具获得和使用的方式,大幅降低了嵌入式产品开发的成本。windows ce和platform. builder不仅仅是改变了嵌入式系统开发的经济模型,它们还改变了评估模型。windows platform. builder 2.11可通过零售渠道获得,在价格上与其他同类型嵌入是开发工具比起来也具有相当优势。微软的开发工具在结合高性能和突出的价值方面一向做得非常好,platform. builder也不例外。  形势分析  当今的嵌入式设计队伍处于高度分化状态中。有着多得让人眼花缭乱的实现目标和工具,包括微控制器、微处理器、定制和专用的操作系统、实时操作系统附件和内核,以及非标准化的嵌入式开发系统和重要的工具。目标和工具上的多样化也困扰着嵌入式系统的主要购买者,使得支持所有平台的环境的维护变得几乎不可能。这一障碍导致制造商和主要销售团体坚持嵌入式系统开发者必须遵守标准平台和开发工具的原则。作为嵌入式平台的windows ce满足甚至超过了这些需求。windows ce和platform. builder 2.11的设计实现满足了嵌入式系统设计者的需求,是过去那些昂贵的专用嵌入式开发工具的亟需的替代方案。  windows ce操作系统及相关开发工具之所以具有吸引力,其大部分原因在于他们提供了广为人知并广为使用的开发环境,并且和具有嵌入式应用所需的高性能、高效率和便携式操作系统结合在一起。windows ce的高级特性,诸如网络、通信以及图形功能,和模块化设计结合在一起,为中级开发人员创建高复杂度嵌入式系统提供了理想的环境。  现有技术并不能开发附带新型i/o系统的扩展嵌入式系统。window ce提供象usb这样的外围接口,允许高级i/o系统的即时支持。windows ce驱动程序模型在驱动程序体系结构方面有着很大的灵活性,允许现有驱动程序技术的快速引入。对嵌入式市场的这一新的开放性也是windows ce最具希望的所在。  现今的嵌入式系统并不接受开放数据接口。与现在的嵌入式系统关联的进程数据依靠一个捆绑于系统上的单独的监控计算机收集获得。windows ce的网络和通信功能使嵌入式系统的开发者和用户能够使这些开放接口对嵌入式环境本地化。这一"基础架构开放性"也是windows ce在嵌入式市场获得空前欢迎的主要原因之一。  windows ce的基本设计目标之一是简化嵌入式开发过程,这一目标的实现借助于当今嵌入式系统设计者在编程时最为广泛使用的win32 api的引入,并和microsoft visual c++等开发系统结合在一起。同时,windows ce提供一个稳定、灵活且被广泛支持的操作系统来处理建立在嵌入式系统上的多种多样的硬件平台和软件应用程序。对嵌入式系统的开发者和用户来说,windows ce带来的实实在在的好处是无可否认的。  

    时间:2018-10-23 关键词: WinCE 平台 嵌入式系统 ce 专业

  • 利用EWB虚拟平台对电子技术实验进行高级分析

    电子技术实验是辅助电子技术基础的一门基础性实验,他包括电工、模拟、数字电路实验,传统的电子技术实验是在实验箱上完成基础实验或对器件进行功能测试和验证。这样简单的基础实验已经不能适应当代电子技术突飞猛进的发展和社会急需具有创新意识和实践能力人才的需求。这就需要高校在实验环节加大力度,勇于进行实验教学改革,不断地将新科技、新手段融入到实验教学中,再利用这新技术、新手段去探索、研究问题。 1 ewb简介随着计算机技术的发展和对各种电子元件进行数学建模的进一步研究,再借助计算机软件对其进行分析,在计算机上可以仿真出近似于实验结果的数据及各种波形。ewb(electronics workbench)是加拿大interactivelmagetechnologies公司推出的一个专门用于电子电路设计与仿真的软件,他是非常优秀的电子技术实验训练工具,其特点是虚拟仪器齐全、容纳各种高级分析方法、提供丰富的元器件、根据需要可以自己制作库元件。他的操作也很方便,画电路时可直接从桌面上的器件库和仪器库选取元器件和测试仪器来创建电路,界面非常直观。电路的设计、仿真与分析工作只需轻点鼠标即可完成,ewb是一种全新的虚拟实验环境,在这种环境下学生进行障碍性实验,不必担心安全问题,可以轻松地凭想象进行实验。这样不仅提高了兴趣,还大大提高了电子设计的质量和效率,也排除了元器件损耗和仪器损坏,从而解决经费不足的问题。可以说安装了ewb,就相当于拥有了一个功能强大、设备齐全、器件丰富的小型“电子实验室”。2 传统电子技术实验的不足和引入ewb进行高级分析的必要性2.1 完成一个实验题目的时间传统电子技术实验主要使用万用表、频率计、示波器、交流毫伏表等测试仪器进行观测,然后经过计算再与理论比较,完成一个实验题目一般需要3 h的时间。而使用ewb高级分析大部分都是直接分析出实验结果,所以完成一个实验题目所需时间不到1 h。2.2 观测节点个数传统电子技术实验使用万用表、交流毫伏表一次只能测量一个节点的参数,用双踪示波器也最多能同时观测两路不同节点的波形。而使用ewb高级分析能同时测量若干个节点的参数,也可以同时规测若干个节点的波形。2.3 特殊测量传统的实验室由于实验室仪器和元器件品种、规格、数量的限制,只能测量电子系统输出与输入信号的幅度和相位关系。而利用计算机辅助设计ewb高级分析不仅能模拟与分析输入和输出的关系,还能对由于实验室条件限制而无法观测的实验现象都可以通过ewb高级仿真进行模拟测试,比如测试不同温度下任意节点的参数和波形,测量某器件对任意节点产生的噪声和失真度等,并且可以随意设置故障进行实验。这些不仅加强学生对知识点、难点的理解,也为综合性设计、毕业设计开辟了一条捷径。3 用ewb的高级分析完成共射极放大器实验3.1 确定工作点q对放大器而言,让工作点q尽量处在交流负载线的中点是保证输出波形最大而且不失真的关键,q点过高或过低容易出现饱和和截止失真,图1为共射极放大器电路。启用ewb的参数扫描分析,输出波形的瞬态特性如图2所示,从图中可以看出当r1=300 kω时,输出波形出现了失真,当r3=700 kω时,输出幅度出现了衰减,只有r3=500 kω时,波形幅度最大而且不失真。所以在上偏置电阻r3=500 kω时q点几乎处于交流负载线的中点。3.2 静态工作点的测量启用ewb的直流工作点分析得出图3的结果,从表中可以读出各节点和三极管各极的的电压,通过图3可以计算出集电极电流为:其中,v1是电源电压;v3是节点3的电压。3.3 动态测量3.3.1 高级分析的动态测量首先将v1改成小电压以满足进行传递函数分析时输入源的要求,启用ewb的传递函数分析,可得出图4中的结果,从图4可读取输出电阻、放大倍数、输入电阻。3.3.2 理论分析动态特性通过前面计算出来的集电极

    时间:2019-04-16 关键词: 电子技术 平台 高级 ewb 技术教程

  • U-blox公司推出加快终端产品面向市场的GPS技术平台

    U-blox公司推出加快终端产品面向市场的GPS技术平台

    随着公司的核技术升级到u-blox 6平台,便携式和供电的系统的设计者将能从前一代产品而受益。由于新的智能电源管理功能,基于u-blox 6的产品将大幅降低电源要求。这些创新性显著延长了对功率至关重要的应用的寿命。随着收集引擎扩展到200万相关器,新芯片显示出了对弱信号和首次定位时间更短的更强收集能力。除了,u-blox 6也能满足即将应用的欧洲伽利略卫星系统的需求。UBX-G6010单芯片GPS接收器和UBX-G6000/芯片组的首个样品可在2009年底为客户评价提供产品,LEA和NEO GPS接收器模块系列不久进行升级。 基于u-blox 6的产品的主要应用包括超低功耗GPS记录器,资产和船队管理,人与动物跟踪器,汽车GPS黑匣子,个人导航和娱乐设备,以及具有地理标记功能的相机和拍照手机。u-blox 6 IC提供标准级和汽车级产品。

    时间:2019-04-17 关键词: 平台 技术 市场 终端产品 技术教程

  • 基于LabVIEW的SFP光模块测试平台的设计与实现

    基于LabVIEW的SFP光模块测试平台的设计与实现

    摘 要: 介绍了一种利用LabVIEW构建SFP(Small Form-factor Pluggable)光模块测试平台的方法。测试平台通过读写计算机并口来映射地址上的数据,控制并口端口的逻辑电平实现计算机并口模拟I2C总线。计算机利用模拟的I2C总线与SFP光模块实现通信。分析了生产者/消费者结构队列状态机并用于设计中,该设计模式可以及时响应前面板动作或外部事件,并且使得状态机的状态变换更加灵活多变。关键词: SFP光模块; 生产者/消费者结构队列状态机; 计算机并口模拟I2C总线  随着近几年光通信的迅速发展,光通信接入网对实现光电、电光转换的光收发模块的要求越来越高,光收发模块的测试也越来越复杂。早期一般使用Visual Basic、Visual C++开发测试软件,存在开发周期长、测试效率低等问题,本文提出了使用LabVIEW虚拟仪器技术来完成测试工作的方法,解决了测试成本高、测试效率低、测试系统松散等问题,同时它还具备远程测试以及仪器定制或自制等特点。虚拟仪器技术已经深远地影响着测试测量领域,是企业和科研单位的测试工作的重要解决方案之一。本文正是利用此项技术解决了SFP光模块测试平台开发的几个关键问题。1 SFP光模块测试软件的设计1.1软件结构  软件由四个界面构成,实时监控界面、阈值设置界面、校准界面和光模块信息设置界面。实时监控界面是软件的主界面,它显示数字诊断功能[1]中的五个模拟量与其Alarm和Warning标志;阈值设置界面的功能是设定Alarm与Warning阈值,当实时监控值不在阈值内时会出现工作异常警示;校准界面主要是解决数据漂移,从而保证测得数据准确;模块信息设置界面是完成光模块在出厂前信息设置。软件运行的过程中用到的数据库是由Access数据库构成。如图1所示为软件结构图。1.2计算机并口模拟I2C总线 I2C总线由四种信号组成:开始信号、停止信号、响应信号和数据发送。在计算机并口产生这些信号就要对数据地址、状态地址和控制地址进行程序设计和控制。在LPT1端口中,它们对应的地址分别为0x378、0x379和0x37A。计算机并口中的8个数据端口分别对应0x378中的B7~B0;5个状态端口分别对应0x379中的B7~B3;4个控制端口分别对应0x37A中的B3~B0。如果在以上地址的某一位上写1,计算机并口的对应端口就会产生逻辑电平高。I2C总线的SDA和SCL分别需要并口的两个端口模拟,这是因为计算机并口的特性,对地址中的数据的操作要么一直读操作要么一直写操作。 对LPT1端口地址操作要使用LabVIEW函数库中的Out Port函数和In Port函数。Out Port函数和In Port函数是在指定的16位I/O端口地址读取和写入带符号的整数。读操作要先利用In Port函数读取LPT1端口地址上的整数数据,再转化为无符号数据并求出特定位的布尔量,最后得到该位对应端口的逻辑电平。写操作就是先利用In Port函数读取LPT1端口地址上的整数数据,再转化为无符号数据并修改其中某一位的值,最后利用Out Port函数把修改后的数据转化为整数数据并写入LPT1端口地址,从而改变对应端口的逻辑电平。 I2C总线的四种信号通过SDA和SCL的组合形式如下:(1)开始信号:在SCL高电平期间,SDA由高变为低,将产生一个开始信号;(2)停止信号:在SCL高电平期间,SDA由低变高,将产生一个停止信号;(3)应答信号:传输一个字节后的第9个时钟,若从设备把SDA拉低,表明有应答信号,反之则无;(4)数据传输:数据传输过程中,数据的改变都必须在SCL低电平期间,在SCL为高电平期间必须保持SDA信号的稳定[2]。 按照时序要求依次可以编写出I2C start、I2C send、I2C ack和I2C stop四种I2C总线信号的vi,其中I2C send这个vi既能发送地址又能发送数据。最后由这些vi组成如图2所示的完整I2C总线数据传输。1.3 生产者/消费者结构队列状态机 设计模式是在解决问题的过程中,由一些良好思路的经验集成的。在LabVIEW中,它包括结构、函数、控件和错误处理的布局,它形成了一个通用的结构来完成一些常见的任务。设计模式可实现模块重用,并提高软件生产效率和质量[3]。 生产者/消费者结构是一种常用的设计模式,它主要用于数据采集系统。一般的数据采集系统包括数据采集、数据分析和结果显示三个步骤。如果将这三个步骤按照常规的顺序执行,则数据分析导致的时间延迟会增大数据采集的周期。采用生产者/消费者结构的数据采集系统,它通过并行的方式实现多个循环,可以很好地解决这一问题。一个循环不断地采集数据(生产者),另一个循环不断地处理数据(消费者),这两个循环互相通信,但又不产生干涉。 队列状态机也是一种常用的设计模式,它对经典状态机做了很大的改进。在经典状态机中,移位寄存器的状态转移方式受限于每个循环间隔内一个指定新状态或应用程序的状态。而队列状态机则通过LabVIEW的队列结构缓存一个队列的多状态,使得应用程序的任何状态都可以通过调用Enqueue Element函数在该队列的后端增加任意数量的新状态,这类似于先进先出缓冲器。  生产者/消费者结构队列状态机最早是由Anthony Lukindo提出和改进,它结合以上两种设计模式优点,其结构示意图如图3所示。 从图中可以看出,该设计模式由四部分组成:队列引用、事件循环、主循环和并行子vi。事件循环和并行子vi为生产者,主循环是消费者,生产者和消费者之间的消息与数据的传递是通过队列引用来实现的。事件循环由Event结构和While循环组成。主循环由Case结构和While循环组成,其中Case结构有两个,分别是主Case结构和错误Case结构。队列引用是由LabVIEW中的队列操作中的函数组成,其中最常用的函数为Obtain Queue、Enqueue Element、Dequeue Element和Release Queue等。图中的虚线是指并行子vi可以不通过队列引用而和主循环进行连接。 生产者/消费者结构队列状态机的实现如下:Obtain Queue函数和Enqueue Element函数在While循环左侧初始化队列。枚举类型定义控件端子连接到Obtain Queue函数的数据类型端子,这样就可以指定队列的数据类型。枚举常量由枚举类型创建,并连线到Enqueue Element函数的端子。Initialize状态是添加到队列中的第一项,它是状态机执行的第一个状态。Dequeue Element函数位于主Case结构之外的错误Case结构的NO Error事例中。如果在错误簇中没有出现错误,则下一状态就会从队列移出,并传送到主Case结构的选择器端子;如果发生错误,则有General Error Handle VI来报告错误,并且执行Shutdown状态。Case结构的每个事例中,事件循环和并行子vi都可以使用Enqueue Element函数来增加其他的状态。此外,为了能够立即执行,可以使用Enqueue Element At Opposite End函数在队列的前端增加一个状态。这使得应用程序能够及时响应高优先级的操作或事件。当用户要退出应用程序时,必须利用Release Queue函数释放队列引用,同时释放队列所占用的内存空间。 当队列中需要传递状态和数据时,队列元素数据类型就需要由一个簇组成,这个簇包括一个与变体打包到一起的枚举类型定义。通常,该枚举类型包含了事例选择器中需要的状态。变体用来将数据从时间循环或并行子vi传递给主循环,这些数据的传递体现了生产者/消费者结构。同时,这个变体可以是多种类型的数据,但是必须为其中每个成员指定一种数据类型。  SFP光模块测试程序首先初始化队列引用和主界面中的控件,然后进入检测光模块。如果检测到光模块的插入,则主程序会读取数字诊断功能中电压、温度和偏置电流等。在大部分时间里,主程序都是在轮询地读取这些数据。如果用户在前面板有操作,此时事件循环将利用Flush Queue函数把队列清空,然后加载下几个状态,及时地响应用户的操作并且最后回到读取数字诊断功能中模拟量。2 测试与验证2.1测试环境  测试平台的硬件包括计算机、测试板、并口线、电源以及待测光模块。首先在计算机中安装本文开发的测试软件,其次利用并口线把计算机和测试板连接起来,再次把待测光模块插入到测试版中,并加载电源,最后打开测试软件进行测试。  连接到I2C总线的器件输出端要是漏极开路或集电极开路才能执行传输的功能。因为计算机并口不满足这两种结构,所以本设计中在并口外接2N3906使得SDA和SCL满足集电极开路结构。2.2 I2C总线验证  为了保证光模块测试平台稳定地工作,必须测试I2C总线通信的稳定性。利用 I2C总线对EEPROM进行连续读或者连续写。在图4中,C1和C2信号是对Z1和Z2信号框内部分的放大,这部分是主设备向从设备写数据。 主设备首先发送器件地址0xA0,在第9个时钟,从设备给出了一个拉低SDA的应答信号。主设备然后发送寄存器地址0x00,同样得到了应答信号。最后发送要写入的数据0x55。图中的两个时间标尺测量出写入数据操作距离下一次操作的时间,这个时间要大于等于5 ms。重复此读写过程10 000次,没有错误则证明I2C总线非常稳定。2.3 光模块测试软件的验证 如图5所示,是对一个Maxim DS1856方案的光收发模块的检测结果。 其中5个模拟量的监控值直接反映光模块的工作状态。表1是DS1856方案实测值与软件监控值对比。 在SFF-8472协议中规定了每个模拟量的精度范围:温度误差在±3℃之内;电压误差不超过厂家标称值的3%;偏置电流误差不超过厂家标称值的10%;发射功率误差在±3 dBm之内;接收功率在±3 dBm之内。通过表1结果显示,此测试软件满足SFF-8472协议规定的误差范围。 本文使用LabVIEW设计实现了针对SFP光收发模块的测试平台。重点介绍了测试软件与SFP光模块的I2C总线通信的实现,论述了生产者/消费者结构队列状态机设计模式,提供了对该设计模式的具体实现方法,并把它应用在SFP光模块测试软件。该测试平台已经应用到企业的实际生产过程中,减少了对SFP光模块测试工作量,提高了测试效率,并且保证了所需的测试精度,具有一定的工程应用价值。参考文献[1] SFF-8472 specification for diagnostic monitoring interface for Optical Transceivers Rev 10.4[S]. 2009-01.[2] The I2C-Bus specification version 2.1[S]. 2000-01.[3] Blume, Peter A. The LabVIEW style book[M]. Prentice Hall, 2007-03.[4] 程社成.带数字诊断功能的小封装光模块研究[D].武汉:武汉理工大学,2006.

    时间:2019-03-12 关键词: 测试 模块 LabVIEW 平台 设计教程

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站

更多

项目外包

更多

推荐博客