当前位置:首页 > embedded
  • 基于QT/Embedded的可变情报板应用程序开发

    0引言QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT开发库QT Library、快速开发工具QT Designer、国际化工具QTLinguist以及开发助手QT Assistant,由于其可移植性好,而且完全面向对象,很容易扩展,因此,QT已成为众多嵌人式厂家选择的热点工具。1  操作系统选择本文主要讨论的是一个可变情报板控制器的图形界面系统。该系统需要用串口和以太网口两路来和主控PC和LED情报板通讯,所以,硬件上选择的是一款采用SAMSUNGS 3C2440A高性能处理器的开发板。并带有外部存储器、两个五线异步串行口、一个10 M/100 Mbps网口、一个SD卡接口、一个IDE接口,可直接挂接硬盘、LCD和触摸屏接口等。因此,本设计选择uclinux作为操作系统,适合于不带MMU的微处理器芯片。2应用程序开发该程序按照功能可分为三个模块,分别为界面显示模块,串口通讯模块和以太网通讯模块。界面显示模块可提供人机交互接口。它采用一种直观便捷的方式来为用户系统提供控制功能。程序开始运行后,首先进入主界面,包括菜单栏,状态栏和中间区域界面(包括一个列表框和播放,暂停,下一条,上一条等按钮,可分别实现不同功能)。串口通讯模块用于LED情报板和控制器的通讯,以及轮询情报板的状态信息。控制板每隔一定时间发送一个串口模糊查询命令,以轮询与其连接的16个模块的状态信息,被轮询到的模块将回送自己所搜集的数据,若在指定时间内没有收到该模块的数据信息,则按通讯异常处理。以太网通讯模块用来实现主控PC和控制器的通讯.以完成数据收发功能。主控PC作为客户端连接的控制器,可以发送控制命令。控制器接收命令后,便可按照通信协议把命令转换成控制信号,并完成上传下载文件和改变LED显示内容等功能。3  关键技术3.1 QT的信号与槽的机制QT使用信号与槽的机制来完成对象间的通讯,它支持同一进程间的对象通讯。连接信号与槽的函数为:QObjiect::connect(const QObject*sender,const chat*signal,const QObject*receiver,const char*member)当某一个特定系统定义的或者用户定义的信号被触发时,这个信号便被发射。当事先预定义的槽接收到这个信号后,便进行相应的处理。但是使用了信号与槽机制的类必须在类定义的时候申明Q_OBJECT。此外,用户也可以使用emit来发射一个信号,如:emit function (value)。3.2  串口编程技术本系统的整个程序框架遵从linux系统下串口通信编程的标准流程,即:串口的打开、设置属性、读写数据、以及关闭。Linux下对设备的管理都是按照文件形式进行的。对串口的读写就是对设备文件的读写操作。下面是Linux下的部分操作定义:◇串口打开函数:int open (const char*port,int MODE);◇设置属性:包括波特率和奇偶校检,停止位,硬件流控,软件流控等的设置。◇串口发送函数:int write(intfd,char[]buffer,int Length)。◇串口接收函数:int read(int fd,char []buffer,int length)。◇关闭串口:close(int fd)。[!--empirenews.page--]3.3 Socket编程技术在本应用程序中,控制器一般被设置为服务器端,其具体的过程如下:◇创建套接字:int socket(int domain,inttype,int protocol。◇绑定socket到特定端口:int bind (intsockfd,struct sockaddr*my_addr,int addrlen)。◇监听套接字端口:int listen(int sockfd,int backlog)。◇接受客户端连接请求:int accept (intsockfd,void*addr,int*addrlen);◇发送数据(面向TCP连接):int send (intsockfd,const void*msg,int len,int flags)。◇接收数据(面向TCP连接):int rear(intsockfd,void*buf,int len,unsigned int flags)。◇关闭套接口:close(socket)。3.4  进程间的通信技术进程间的通信手段主要有管道、消息队列、信号、共享内存、信号量、套接口等等,本文采用的是内存共享和信号机制。(1)内存共享在该方式中,多个进程可以访问同一块内存空间,它是最快的可用IPC形式,往往使用信号量机制来达到进程同步一互斥。mmap()系统调用使得进程之间可以通过映射同一个普通文件来实现内存共享。当普通文件被映射到进程地址空间后,进程可以向访问普通内存一样来对文件进行访问,而不必再调用read()和write()等操作。(2)信号机制该方式可用于通知接受进程有某种事件发生,是进程间唯一的异步通信机制。该方式的信号安装代码为:int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact)。而发送信号的代码为:int sigqueue(pid_t pid,int sig,const unionsigval val)。4  运行步骤将编译好的可执行文件移植到目标板上,需要以下几个步骤:(1)打开电脑的超级终端程序,将计算机串口与目标板相连;(2)在ARM板加电初始化完毕后,cd到开发板的tmp文件夹底下,再用超级终端上的上载文件功能,将可执行程序下载到板子上。(3)在命令行敲人chmod 777 xxx,改变可执行文件的执行权限。(4)在命令行敲人./xxx,并执行。此后程序开始运行。5  结束语本文以可变情报板图形系统的开发为例,阐述了基于QT的应用软件开发方法,其友好的人机交互界面以及反应快速灵敏的特点,使得该系统具有良好的执行效果。目前,该系统已经成功交付使用并具有良好的稳定性。随着嵌入式技术的继续飞速发展和用户需求的不断增加,相信在未来不久,LED可变情报板系统将会发挥越来越多的作用。

    时间:2010-03-01 关键词: embedded QT 程序开

  • Konqueror/embedded向ARM-Linux平台的移植和汉化

    引言 目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。       Konqueror/embeded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。    Konqueror/embedded的结构    Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心,KHTML则运用了文档对象模型(DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。Konqueror/embedded的层次结构如图1所示。      图1 Konqueror/embedded层次结构 Kparts及Qt构件实现GUI    为了方便地实现将现有应用作为一个控件插入到另外一个应用中去,采用了part对象负责管理整个应用和窗口。对于每个窗口又采取了类似 微软 MFC 中的 Doc-View 结构。因此在将应用嵌入到另外一个应用中的时候,只需要获得part中的接口和数据即可。对窗口的一切操作的响应由被嵌入应用的 part 对象来完成,而类 Doc-View 结构只负责显示和保存数据即可。    由于Konqueror/embedded是基于图形库Qt/E,因此也遵循了signal、slot消息机制,Konqueror/embedded作为Qt/E的一个标准应用程序进行输入/输出及界面消息响应。    执行DOM 模块    DOM 模块对经过解析的标记进行语法检查,并把属性看作节点,按照标记的语义包含关系以及先后顺序组织成DOM树。它给HTML 文档定义了一个与平台无关的程序接口,使用该接口可以控制文档的内容、接口和样式。    在执行DOM模块的过程中,浏览器将所有从语法语义解析模块中获得的标记和属性,按照一定的层次结构组织成DOM 树。完成DOM 树的构筑后,DOM 模块会同时把标记和属性以对象的形式传给绑定模块和脚本引擎模块。   执行I/O模块    浏览器加载有关的I/O文件,对HTTP等协议进行解析。语法语义解析模块的解析功能分为两部分:对接收到的字节流进行分词,解析为关键字;调用解析器检验关键字是否合法,若是合法的关键字,则按照规则插入到DOM 树中。    HTML 的标记和属性统称为HTML的关键字。基本上所有HTML 4. 0 规范的标记都在此功能模块中获得支持。从I / O 模块中接收字节流并进行分词,输出标记;再对标记进行判断,如果是HTML 规范中合法的标记,则把标记看作一个节点,并组织成语法树。对属性标记的解析首先在标记处理类中执行,如果解析不成功,则交由基类的属性解析器进行解析。    图2  编译配置[!--empirenews.page--]          Konqueror/embedded的移植    交叉编译工具的安装    在本文中,运用的交叉编译工具是专门为ARM处理器设计的ARM-CrossToolchain。2.95.3版本的交叉编译工具只能解压到/usr/local/arm/2.95.3目录下,否则在Qt/E编译时会出错。    为了在任何目录下都能使用工具链,必须要对路径进行设置。用VI编辑器打开/etc/profile文件并添加下述路径:PATH=/usr/local/arm/2.95.3/binPATHQt/E的编译   Qt是一个跨平台的 C++ 图形用户界面库,目前包括Qt/X11(基于 Framebuffer)和Qt/E(Qt Embedded)。Konqueror/embedded就是基于Qt/E图形用户界面库的,因此在编译Konqueror/embedded之前必须先编译Qt/E。    编译Qt/X11就是为编译Qt/E提供uic(用户接口编译器),uic用来把.ui文件转成.h和.cpp文件。    将Qt/X11编译完毕而生成的uic拷贝到Qt/E的bin目录下面。在编译Qt/E之前,先要将Qtopia的一个配置文件拷贝到Qt/E中,表示Qt/E的配置是按照Qtopia要求的,即:cp Qtopia-free-1.7.0/src/Qt/qconfig-qpe.h Qt-embedded-2.3.7/src/tools/   之后就可以设置环境变量,编译Qt/E了。编译Qt/E完成后,在Qt/E的lib目录下会自动生成libQte.so.2.3.7库文件。 图3  文件的原路径和目标板路径           图形界面Qtopia的编译    Qtopia 是基于Qt/E的图形界面应用程序集,通过Qtopia真正地将图形界面展现在用户的眼前。而Konqueror/embedded在一般情况下是在Qtopia环境下运行的,所以要用到Qtopia库。也有少数情况不会用到,即系统启动的时候只运行Konqueror/embedded。那么只要在编译Konqueror/embedded的时候配置稍作修改即可,本文只介绍前者。    在编译Qt/E的时候已经将Qtopia的配置传递给了Qt/E,因此编译Qtopia时就非常容易了,如下所示:    cd Qtopia-free-1.7.0/src ./configure  -xplatform linux-arm-g++ make    这样,在bin目录下会生成一组应用程序集,在lib目录下产生了一系列的Qtopia库,给Konqueror/embedded的编译做准备。    Konqueror/ embedded的编译和安装    Konqueror/ embedded的编译    在编译Konqueror/embedded之前,必须将Qt/E和Qtopia的路径指定给编译器。这样编译器才能找到相应的库,从而为Konqueror/embedded提供相应的库文件。    先设置一些必要的环境变量,然后再按照图2配置和编译Konqueror/embedded。在编译配置时,这些配置选项都是有各自含义的。有些配置选项如果搞错,编译就无法通过,甚至有时候连配置都不能完成。比如Qt/E路径指定不对就会在配置时出错,这些都需要在实际的移植过程中才能体验到。    Konqueror/embedded的安装    在Konqueror/embedded编译完成之后,目录下会生成相应的可执行文件。因此Konqueror/embedded的安装主要是指将可执行文件和一些其他的配置文件拷贝到嵌入式系统的文件系统中去。一般来说,Konqueror/embedded运行需要5个文件,图3描绘了这5个文件的原来所在路径和安装到目标板的路径,这些都要手动去拷贝。    在目标板上运行Konqueror/embedded之前,必须指定几个环境变量,否则Konqueror/embedded会因为找不到库文件而终止运行。预先设置好环境变量,再运行Konqueror/embedded。    至此,Konqueror/embedded已经安装完毕。但是Konqueror/embedded缺省情况下是不支持中文网页的,而且界面是英文的。某些情况下为了满足特定的需要,其汉化也是非常必要的。      Konqueror/embedded的汉化   Konqueror/embedded的汉化可分为两个部分: 一个是Konqueror/embedded本身控制界面的汉化;另一个是Konqueror/embedded对中文网站的访问支持。和其他基于Qt的应用程序一样, Konqueror/embedded中对所有用户可见的文本使用tr()将文本标识出来,这样利用Qt 提供的翻译工具将很容易把这些文本转化成所需要的语言。    同时Qt 提供了两个宏QT_ TR_NOOP ( ) 和QT_ TRANSLATE_ NOOP ( ) ,可用它们标示出文本,以便于被lupdate 工具提取。具体操作步骤如下:在需要翻译源码的XXX. pro 中加入一项: TRANSLATIONS = XXX. t s;运行lupdate XXX. pro ,生成XXX. ts 文件;运行lrelease XXX. pro 将生成XXX. Qm,并将其改名为XXX_en.qm;启动Qt Linguist 将XXX. ts 文件导入,将需要翻译的内容翻译成中文;翻译完成之后, 点击File →Re2lease ,将文件保存为XXX_zh. Qm;翻译文件保存之后, 在程序源码中需要构建Qt ranslator 实例,利用Qt ranslator 将翻译文件加载到图形界面上。    在Konqueror/ embedded 中可以通过修改main. c 中的代码来实现UI 的汉化。由于Qt/E是可以支持Unicode编码的,因此Konqueror/embedded也可以支持中文。但是在编译Qt/E的缺省配置中是不支持Unicode的,因此要手动修改qconfig-qpe.h文件的配置:注释掉38行,#define Qt_NO_CODECS。    修改完毕以后,重新开始编译Qt/E以及Qtopia和Konuqueror/E,Konqueror/embedded就能接受Unicode编码的汉字了。但是要在Konqueror页面上显示,就必须要有相应的字体。因此,对Konqueror/embedded源代码中/konq-embed/dropin/ kglobalsettings.cpp文件进行修改,即将"helvetica"改为"unifont"后重新编译Konqueror/embedded,这样Konqueror/embedded中就能显示中文字体的页面了。    结语    本文对嵌入式浏览器Konqueror/embedded技术核心做了简要分析,阐明了该浏览器的先进性与可扩展性,而且阐述了Konqueror/embedded移植到实际使用系统中存在的一系列问题。本文结合了实际的移植经验,详细地说明了整个移植过程对嵌入式浏览器的移植有较好的指导意义。

    时间:2010-12-10 关键词: ARM Linux embedded QT konqueror

  • 嵌入式Linux中基于Qt/Embedded的键盘接口设计

    摘要:采用S3C2440处理器和嵌入式Linux操作系统,选择目前比较常用的Qt/Embedded作为图形界面的开发语言,设计了嵌入式系统中的键盘接口。在介绍硬件平台的基础上,给出了嵌入式Linux下键盘设备驱动程序的工作过程及实现方法,简单介绍了Qt/Embedded的架构和字符输入策略,详细设计了Qt键盘驱动插件和应用程序。实验表明,键盘驱动采用Qt的插件系统,具有更好的独立性和移植性。 关键词:嵌入式Linux;Qt/Embedded;键盘驱动;S3C2440 引言     随着嵌入式系统的不断发展,特别是嵌入式处理器运算能力的不断增强,嵌入式系统被广泛应用于信息家电、移动通信、手持信息设备以及工业控制等众多领域。与此同时,用户对于嵌入式系统图形用户界面的需求也不断提高。嵌入式Linux作为一种流行的嵌入式系统平台,它所具备的稳定、高效、易裁剪、易移植、硬件支持广泛等优点,结合其源码开放的特征,使得Linux在嵌入式操作系统中的地位日益重要。Qt/Embedded是一个完整的自包含GUI和基于 Linux的嵌入式平台开发工具,因其面向对象、跨平台、界面设计更美观和友好而得到广泛的应用。Qt/Embedded具有客户/服务器模型,直接向帧缓冲写入数据,摒弃了X窗口系统,节省了内存。同时,将外部输入设备抽象为键盘和鼠标输入事件,底层接口支持键盘、GPM鼠标、触摸屏,以及用户自己定义的设备等。 1 硬件设计     电路采用三星S3C2440处理器,实现了4×4矩阵键盘的输入。矩阵键盘使用了处理器的4个GPIO和4个中断,以中断方式获取键值,对应的中断引脚分别是EINT3、EINT9、EINT11、EINT13。GPIO引脚与矩阵键盘的行相连接作为输入端,中断引脚与矩阵键盘的列相连作为矩阵键盘的输出端。开始时GPIO端输出为低电平,当有按键被按下时,按键所在列输出低电平产生中断,这时可以判断按键所在的列。然后向每一行依次输入高电平,如果列的输出端由低电平变成高电平,则可以确定按键所在的行,这时键值被唯一锁定。具体电路如图1所示。 2 LinuX下键盘接口驱动     键盘设备属于字符设备,键盘驱动应该符合字符设备驱动的编写模式。Linux采用内核模块机制,当系统运行的时候驱动程序可以以模块的形式动态地加载和卸载,既方便了驱动的调试,又缩短了开发周期。在驱动中必须实现static int_init my_kb_init(void)函数和stat- ic void_exit my_kb_exit(void)函数。static int_init my_kb_init(void)函数在内核加载键盘驱动时被调用,注册模块为以后调用模块函数预先做准备,同时完成字符设备的注册,分配主设备号,设置中断类型,安装中断函数,并且将所有中断禁止。static void_exit my_kb_ exit(void)函数在卸载模块时被调用,用于撤销初始化函数所做的一切,否则在系统重新引导之前一些东西会残留在系统中,导致模块重新加载失败。     键盘驱动中主要包括以下几个子模块:中断处理子模块、键盘扫描子模块、消抖处理和组合键子模块、重复按键子模块等。驱动工作流程如图2所示。     按键的识别主要是在中断处理子模块中完成的。当系统有按键被按下时,驱动程序先关掉中断,然后扫描键盘,确定哪个键按下,键盘按下和抬起都有中断发生,这样可以为用户提供按下和抬起标志,以判断按键是单键按下还是多键齐按。在消抖处理和组合键子模块中,加入Linux内核定时器,键盘定时扫描,消除抖动得到稳定键值。重复按键子模块是根据Linux内部的定时器,设置自动重复开始延时和自动重复延时,键盘按下后根据延时来完成按键事件,键值存入队列供应用程序读取。[!--empirenews.page--] 3 Qt/Embedded键盘输入策略 3.1 Qt/Embedded架构简介     Qt/Embedded Linux应用程序需要一个正在运行着的服务器应用或者是本身就是一个服务器应用程序。任何一个Qt/Embedded Linux应用程序都可以扮演服务器的角色。当多于一个应用程序运行的时候,应用程序作为客户端与服务器程序相连接。     服务器进程和客户端进程有不同的分工:服务器进程管理着鼠标指针的处理、字符的输入和屏幕的输出。另外服务器还控制着屏幕光标的输出和屏幕保护程序。客户端进程完成所有应用程序的具体操作。一个QWSServer类的实例代表一个服务器应用,一个QWSClient类的实例代表着一个客户端应用。每一方面都有一些类完成各种操作。     所有系统产生的事件包括键盘事件和鼠标事件都被传递到服务器应用中,然后服务器将这些事件分发到客户端应用中。 3.2 客户端/服务器的通信     如图3所示,正在运行着的程序通过增加和删除窗口不断地改变屏幕的显示。服务器在对应的QWSWindow对象中维护着每一个顶层窗口的信息。每当服务器接收到一个事件时,它都会查询它的顶层窗口列表找到包含该事件位置的窗口。每一个窗口都有一个创建它们的客户端应用的ID,将这个ID返回给服务器。最后服务器将这个事件封装成一个QWSEvent类的实例,传递给相应的客户端。     另外还可以通过QWSServer::KeyboardFilter类实现按键事件的全局的底层过滤器。这种方法可以实现电源管理中的一键挂起,而不用在所有的应用程序中都对这个按键事件进行过滤。     如图4所示,服务器通过UNIX域套接字与客户端进行通信。客户端从服务器接收事件,这些事件通过重新实现QApplication的qwsEvent-Filter()函数可以被直接检索访问。     客户端相互之间(和服务器)通过QCopChannel类通信。QCOP用于在多个通道间传送信息,是一个多对多的通信协议。每个通道用名字作为识别 ID,任何一个想要和它通信的通道都能监听它。QCOP协议既允许在相同的地址空间内的客户端之间进行通信,也允许在不同的进程的客户端之间进行通信。 3.3 字符输入层     如图5所示,当一个服务器应用程序开始运行时使用Qt的插件系统加载键盘驱动,驱动是一个QWSKeyboardHandler类的实例。     键盘驱动从设备接收键盘事件,并把事件封装成一个QWSEvent类的实例,然后把这个类传送给服务器。定制键盘可以通过子类QWSKeybo- ardHandler类创建一个键盘驱动插件来实现。默认的QKbdDriverFactory类将自动检测到这个插件然后把驱动加载到正在运行的服务器应用中。 4 键盘驱动插件的实现     本文通过Qt的插件系统实现了矩阵键盘的接口驱动。插件是一种遵循一定规范的应用程序接口编写出来的程序。在现代计算机语言中,应用环境复杂多变,常常要面临着适应这样那样的未知需求的挑战,为了使程序设计语言具有良好的可扩展性,使之能够适应复杂的应用环境,同时也出于降低设计复杂性的考虑,采用插件机制是一个很不错的方法。通过采用插件系统,把扩展功能从框架中剥离出来,可以降低框架的复杂度,让框架更容易实现。扩展功能与框架之间以一种松耦合的方式集成,允许在保持接口不变的情况下,实现彼此的独立变化。     Qt提供了两种插件:一种是高层的插件,用来扩展Qt自身,如自定义数据库驱动、图像格式、文本编解码器、自定义风格等;一种是底层的插件,用来扩展Qt应用程序。[!--empirenews.page--]     一个键盘插件的实现,通常至少需要两个类:一个是插件封装器类,它实现了插件的通用API函数;另外一个是一个或多个处理器类,每个处理器类都实现了一种用于特殊类型插件的API。通过封装器类才能访问这些处理器类。下面是具体的实现过程:     首先要实现一个自己的MyKeyDriverPlugin类,这个类继承了QKbdDriverPlugin类,需要重新实现QKbdDriverPlugin::keys()函数和QKbdDriverPlugin::create()函数。     keys()函数返回一个键盘插件的键值,这个键值不能和其他的键值相冲突。create()函数返回一个给定键值的QWSKeyboardHandler派生类的实例。     在.cpp文件的最后,必须添加一个下面这样的宏:Q_EXPORT_PLUGIN2(keyboard,MyKeyDriverPlugin)     第一个参数项是目标库名字去除任意扩展符、前缀或者版本号之后的基本名。第二个参数则是插件的类名。     第二个要实现的类是处理类MyKeyboardHandler,这个类需要继承QWSKeyboardHandler类。当键盘驱动捕获到键盘数据时,系统会通过套接字监听键盘信息,并在MykeyboardHandler::readKbdData()中对捕捉到的扫描数据进行处理并封装,然后向服务器端发送键盘事件。     ①打开键盘设备并初始化,一般调用open()函数。     ②监控键盘设备,调用QScoketNotifier监控键盘设备kbdFd。     ③发生键盘事件时读取键盘事件,读取键盘事件后将键值、按下等信息翻译成Qt内部键盘事件的格式,并通过调用processKeyEvent将事件分发出去。 5 键盘插件在应用程序中的使用     将键盘插件编译后生成一个libkeyboard.so的动态库,这个动态库的名字是由Q_EXPORT_PLUGIN2宏的第一个参数决定的。派生插件默认存储在标准插件目录下的子目录中,如果它们没有存储在正确的目录下Qt不会找到这些插件,所以要在使用的文件系统中创建Qt的标准插件目录。     要想应用程序在启动的时候能够正确加载键盘插件还要设置嵌入式Linux系统中的环境变量:     QWS_KEYBOARD=MyKeyHandler:/dev/kbd     MyKeyHandler对应着key()函数中的键值,kbd是在/dev文件夹下的键盘设备文件。Qt应用程序开始运行后要根据 QWS_KEYBOARD这个环境变量创建一个MyKeyboardHandler类。窗口部件响应服务器分发的键盘事件还要重新实现如下函数。 }  

    时间:2011-01-10 关键词: Linux embedded QT

  • 基于Qt/Embedded的/蓄电池状态检测控制软件设计

    1  引言                  蓄电池生产过程中的状态参数检测是保证蓄电池出场质量的关键。然而目前,国内蓄电池的状态检测主要依靠蓄电池电压巡检仪、蓄电池电导测试仪和内阻容量测试仪等仪器,这些仪器只是能够实现单一的检测蓄电池状态,而且操作灵活度有限,数据的存储、传输以及实时分析都需要额外的pc的辅助来实现, 已经不能很好的满足当前许多要求较高的工业现场控制的应用。为了使蓄电池生产线上的蓄电池性能参数测量更加灵活,本文提出一种基于qt/embedded的便携式蓄电池状态检测系统,实现了对蓄电池的多路数据采集,控制软件界面友善、检测仪器轻巧方便。             2  系统总体设计与实现                  本检测系统由数据采集部分、a/d转换、arm微控制器和数据存储等几部分组成,总体架构设计图如图1所示。其中,数据采集部分主要完成对蓄电池性能参数的采集,a/d转换部分主要完成采集信号的模/数转化,arm微控制器是整个系统的关键部分,主要负责与基于qt/embedded的连接,接受第三方用户的命令信息并进行相应的处理。数据存储部分主要负责将处理后的数据存放到usb设备中,为以后数据分析提供依据。             3  控制软件的设计               3.1 qt/embedded简介                  qt/embedded是一个和完整的自包含gui和基于linux的嵌入式平台工具,是qt在嵌入式平台的版本。它通过qt api与linux i/o以及framebuffer直接交互,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好地体系架构和编程模式。通过qt/embedded可以直接构建工作在嵌入式设备上的控制软件,为便携式设备提供良好的人机交互界面,使设备的操作更加灵活。                                           图1 测量系统的组成   3.2 qt/embedded的移植                  本文采用宿主机-目标板的移植方式,先在宿主机上调试通过后,再将调试通过的程序移植到目标板上。               3.2.1宿主机上的移植                  qt/embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vituralframe buffer)来模拟帧缓冲。宿主机上的移植需要的工具及环境变量见表1。其中环境变量的设置可以直接用export来声明,配置qt-embedded-3.3.2时,/configure–qconfig–qvfb–depths4,8,16,32,就是指定qt/embedded开发包生成虚拟缓冲帧工具qvfb。               3.2.2目标板上的移植                  将qt/embeded程序应用到arm开发板,在configure配置时配置linux-arm-g++配置选项[6]。最后将交叉编译好的应用程序烧写到开发板的根文件系统的/opt目录中。               3.3应用程序的框架结构                  基于qt/embedded的蓄电池状态检测控制软件包括以下4个主要模块,如图2所示。                                          图2 软件框架结构   3.3.1用户界面(user interface)模块                  用户界面如图3所示,主要包括工作人员信息(图3①部分)、蓄电池信息(图3②部分)、需要显示的数据(图3③部分)(理想数据、数据上下限、实际检测数据及其当前蓄电池的状态)和数据存储(图3④部分)几部分组成。其中,检测人员工作前,需要手动的输入员工信息和设备信息等内容,便于数据分类,最后将这些数据共同存储。                                          图3 人机界面运行图   3.3.2数据处理模块                  采集数据处理模块的基本结构流程图如图4所示。系统启动之后,首先进行arm微处理器芯片的初始化工作,完成初始化之后,系统启动qt上位机软件,然后整个程序进入监听状态,不停检测是否有控制命令事件触发,一旦触发则进行a/d转化,将数据采集模块采集到的信息进行数/模转化,最后将完成处理的数据送至显示模块显示。                                           图4 软件流程图      在ad模块的驱动程序设计中采用中断采集的方式完成数据采集。ad驱动函数主要代码如下:                 (1)设备初始化,驱动设备的注册。为防止设备号的冲突,这里设备注册采用的是自动分配设备号。               devfs_handle=devfs_register(null,device_name,devfs_fl_auto_devnum,0,0,s_ifchr|s_irusr|s_iwusr,&s3c2410_fops,null)。                 (2)open函数,用于设置ad通道,并进行比例因子初始化。                   init_waitqueue_head (&adcdev.wait);             //等待队列,当数据到达的时候,进程被唤醒,并将数据返回调用者。             adcdev.channel=0;             adcdev.prescale= 0xff;             //ad设置,说明对通道0进行采样。                 (3)read函数,关键函数之一,在这个函数中需要配置ad器件的控制寄存器,并启动转换。使用copy_to_user函数把数据从内核传递到用户空间,功能函数主要代码如下:             start_adc_ain(adcdev.channel, adcdev.prescale);             interruptible_sleep_on(&adcdev.wait);             copy_to_user (buffer, (char*)&ret, sizeof(ret))。                 (4)最后,把所有功能函数写进file_operations。                                                             表1 宿主机上的移植需要的工具及环境变量 4  总结                  在各种检测系统的研究和设计中,数据采集是必不可少的环节。本系统以s3c2410a微控制器为基础,利用图形化编程语言qt设计出可视化、友好的控制界面,能够显著提高人机界面的显示效果。该系统具有较高的稳定性、可靠性,特别适用于便携式检测装置。因此,该系统具有广阔的市场前景。

    时间:2011-09-28 关键词: embedded QT 池状态

  • 基于Qt/Embedded的蓄电池状态检测控制软件设计

    1  引言               蓄电池生产过程中的状态参数检测是保证蓄电池出场质量的关键。然而目前,国内蓄电池的状态检测主要依靠蓄电池电压巡检仪、蓄电池电导测试仪和内阻容量测试仪等仪器,这些仪器只是能够实现单一的检测蓄电池状态,而且操作灵活度有限,数据的存储、传输以及实时分析都需要额外的pc的辅助来实现, 已经不能很好的满足当前许多要求较高的工业现场控制的应用。为了使蓄电池生产线上的蓄电池性能参数测量更加灵活,本文提出一种基于qt/embedded的便携式蓄电池状态检测系统,实现了对蓄电池的多路数据采集,控制软件界面友善、检测仪器轻巧方便。            2  系统总体设计与实现               本检测系统由数据采集部分、a/d转换、arm微控制器和数据存储等几部分组成,总体架构设计图如图1所示。其中,数据采集部分主要完成对蓄电池性能参数的采集,a/d转换部分主要完成采集信号的模/数转化,arm微控制器是整个系统的关键部分,主要负责与基于qt/embedded的连接,接受第三方用户的命令信息并进行相应的处理。数据存储部分主要负责将处理后的数据存放到usb设备中,为以后数据分析提供依据。            3  控制软件的设计            3.1 qt/embedded简介               qt/embedded是一个和完整的自包含gui和基于linux的嵌入式平台工具,是qt在嵌入式平台的版本。它通过qt api与linux i/o以及framebuffer直接交互,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好地体系架构和编程模式。通过qt/embedded可以直接构建工作在嵌入式设备上的控制软件,为便携式设备提供良好的人机交互界面,使设备的操作更加灵活。                                                       图1 测量系统的组成 3.2 qt/embedded的移植               本文采用宿主机-目标板的移植方式,先在宿主机上调试通过后,再将调试通过的程序移植到目标板上。            3.2.1宿主机上的移植               qt/embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vituralframe buffer)来模拟帧缓冲。宿主机上的移植需要的工具及环境变量见表1。其中环境变量的设置可以直接用export来声明,配置qt-embedded-3.3.2时,/configure–qconfig–qvfb–depths4,8,16,32,就是指定qt/embedded开发包生成虚拟缓冲帧工具qvfb。 3.2.2目标板上的移植               将qt/embeded程序应用到arm开发板,在configure配置时配置linux-arm-g++配置选项[6]。最后将交叉编译好的应用程序烧写到开发板的根文件系统的/opt目录中。            3.3应用程序的框架结构               基于qt/embedded的蓄电池状态检测控制软件包括以下4个主要模块,如图2所示。                  图2 软件框架结构 3.3.1用户界面(user interface)模块               用户界面如图3所示,主要包括工作人员信息(图3①部分)、蓄电池信息(图3②部分)、需要显示的数据(图3③部分)(理想数据、数据上下限、实际检测数据及其当前蓄电池的状态)和数据存储(图3④部分)几部分组成。其中,检测人员工作前,需要手动的输入员工信息和设备信息等内容,便于数据分类,最后将这些数据共同存储。                              图3 人机界面运行图 3.3.2数据处理模块               采集数据处理模块的基本结构流程图如图4所示。系统启动之后,首先进行arm微处理器芯片的初始化工作,完成初始化之后,系统启动qt上位机软件,然后整个程序进入监听状态,不停检测是否有控制命令事件触发,一旦触发则进行a/d转化,将数据采集模块采集到的信息进行数/模转化,最后将完成处理的数据送至显示模块显示。                              图4 软件流程图 在ad模块的驱动程序设计中采用中断采集的方式完成数据采集。ad驱动函数主要代码如下:              (1)设备初始化,驱动设备的注册。为防止设备号的冲突,这里设备注册采用的是自动分配设备号。             devfs_handle=devfs_register   (null,device_name,devfs_fl_auto_devnum,0,0,s_ifchr|s_irusr|s_iwusr,&s3c2410_fops,null)。              (2)open函数,用于设置ad通道,并进行比例因子初始化。             init_waitqueue_head (&adcdev.wait);     //等待队列,当数据到达的时候,进程被唤醒,并将数据返回调用者。      adcdev.channel=0;      adcdev.prescale= 0xff;      //ad设置,说明对通道0进行采样。              (3)read函数,关键函数之一,在这个函数中需要配置ad器件的控制寄存器,并启动转换。使用copy_to_user函数把数据从内核传递到用户空间,功能函数主要代码如下:      start_adc_ain(adcdev.channel, adcdev.prescale);      interruptible_sleep_on(&adcdev.wait);      copy_to_user (buffer, (char*)&ret, sizeof(ret))。              (4)最后,把所有功能函数写进file_operations。                 表1 宿主机上的移植需要的工具及环境变量 4  总结               在各种检测系统的研究和设计中,数据采集是必不可少的环节。本系统以s3c2410a微控制器为基础,利用图形化编程语言qt设计出可视化、友好的控制界面,能够显著提高人机界面的显示效果。该系统具有较高的稳定性、可靠性,特别适用于便携式检测装置。因此,该系统具有广阔的市场前景。

    时间:2011-12-17 关键词: embedded QT 池状态

  • 基于Qt/Embedded的物流信息终端导航定位功能设计

    Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平台开发工具,是Qt的嵌入式版本。由于KDE等项目均使用Qt作为支持库,所以许多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向对象、跨平台和界面设计方便美观等优点,已得到了广泛的应用。 本文针对当前物流行业终端定位功能的需求,提出与之相适应的物流终端定位功能实现方案,并利用Qt/Embedded,在基于嵌入式Linux和S3C2410的物流信息化终端平台上对终端定位功能进行了初步实现。 软硬件系统设计原理 基于现有网络建设的总体情况和物流配送过程中对定位数据的可靠性、连续覆盖性、精度的要求,并综合考虑各种定位技术的发展现状及技术成熟度、实现成本等因素,本系统在物流配送网络中采用了GPS辅助定位系统,即GPS+CellID+RFID+图形道路匹配相结合的定位技术。 系统的软硬件功能框图如图1所示,开发板CPU采用的是三星公司的S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32 位微控制器。GPS模块利用RS232接口与开发板通信,提供卫星定位信号;GSM/GPRS模块提供通信以及CELLID定位信息获取;RFID模块提供标签信息采集和RFID定位功能。终端通过GSM/GPRS通信网络与物流信息控制中心建立联系,提交相关数据采集信息和接收物流信息控制中心指令。   系统采用嵌入式Linux操作系统,移植Qt/Embedded 3.3.4和SQLITE数据库,采用Qt编程实现物流信息化终端定位功能。 软件系统设计 本文的软件系统设计主要以S3C2410平台为核心,通过RS-232串口从GPS模块、GSM/GPRS模块、RFID模块提取 定位信息,加以分析转换,并根据需要用于终端导航或通过GSM/GPRS网络提交给物流信息控制中心。 宿主机开发环境建立 由于目标平台资源所限,需要搭建交叉编译环境,本系统开发过程中采用的平台如下: 宿主机:RED HAT 9.0 Qt/X11 3.3.4 Qt/Embedded 3.3.4 SQLITE 2.8.16 cross-2.95.3.tar.bz2 目标机:Linux Kernel 2.4.18 Qt/Embedded 3.3.4 SQLITE 2.8.16 Qt/Embedded 3.3.4移植 为了正确交叉编译Qt/Embedded,建议宿主机完全安装RED HAT 9.0,同时要确保UUID、ZLIB、JPEG、GIF、PNG、SQLITE等Qt中所需要的头文件、库文件在交叉编译前正确安装,并移植相应的库文件至目标机中,此类文件的具体安装在此不再赘述。下面主要对Qt/Embedded 3.3.4的交叉编译及移植进行详细讨论。 下载解压源文件 $ cd ~ $ mkdir -p qt_embedded/ $ cd qt_embedded $ wget ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.4.tar.bz2 $ wget ftp://ftp.trolltech.com/qt/source/qt-embedded-free-3.3.4.tar.bz2 $ tar jxf qt-x11-free-3.3.4.tar.bz2 $ tar jxf qt-embedded-free-3.3.4.tar.bz2 $ mkdir -p qt-embedded-free-3.3.4-target/ $ sudo cp -r qt-embedded-free-3.3.4/ qt-embedded-free-3.3.4-target/ 安装Qt/X11 $ cd qt-x11-free-3.3.4 $ export QTDIR=$PWD $ export PATH=$QTDIR/bin:$PATH $ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH $ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/ Qt-3.3.4/ $ make $ sudo make install [!--empirenews.page--] 安装Qt/E 3.3.4的宿主机版本 为便于在宿主机上进行嵌入式程序开发,利用qvfb进行虚拟嵌入式LCD屏幕显示。 $ cd /qt-embedded-free-3.3.4 $ export QTDIR=$PWD $ export PATH=$QTDIR/bin:$PATH $ export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY _PATH $ echo yes | ./configure -thread -plugin-sql-sqlite -prefix /usr/local/Qt-embedded-3.3.4-host -qvfb $ make $ sudo make install $ sudo cp -r lib/fonts/ /usr/local/Qt-embedded-3.3.4-host/lib/ 安装Qt/E 3.3.4的目标机版本 $ cd /qt-embedded-free-3.3.4-target $ cp /qt-x11-free-3.3.4/bin/uic bin/(注意:需拷贝uic工具的QT/X11版本至安装目录中) 由于Qt/E3.3.4没有专门针对触摸屏的配置选项,为了确保触摸屏能正常工作,可以利用现有的配置选项进行修改,以满足实际需要。现利用qt-mouse-Linuxtp修改触摸屏驱动。 修改src/embedded/qmouselinuxtp-qws.h,添加下面两行: # define Qt_QWS_IPAQ #define Qt_QWS_IPAQ_RAW 修改src/embedded/qmouselinuxtp-qws.cpp,把文件中/dev/**3600改为开发板ARM-Linux操作系统中相应触摸屏驱动的名称/dev/touchscreen/0raw。 $ echo yes | ./configure -embedded arm -shared -debug -no-cups -thread -plugin-sql-sqlite -no-ipv6 -qt-mouse-Linuxtp -prefix /usr/local/Qt-embedded-3.3.4-target -depths 16 -system-libpng -system-libjpeg $ export QMAKESPEC=“qws/linux-arm-g”++ $ make $ sudo make install $ sudo cp -r lib/fonts/ /usr/local/Qt-embedded-3.3.4-target/lib/ 此时,将交叉编译的Qt/E 3.3.4的库文件下载至开发板中,并设置相应的环境变量QTDIR、PATH、LD_LIBRARY_PATH等。另外还要设置触摸屏环境变量如下: $ export QWS_MOUSE_ PROTO=“LinuxTP:/dev/touchscreen/0raw” $ export QWS_KEYBOARD= [!--empirenews.page--] 此时,触摸屏可能仍无法工作或误差较大,其主要原因是开发板操作系统中/etc/pointercal文件不存在或该文件中对触摸屏进行调整的校准参数不正确,需对/etc/pointercal文件进行修改。修改方法有两种:一种方法是直接新建该文件,并在文件中按正确格式添加相应参数;另一种方法是交叉编译tslib-1.3.tar.bz2,将生成的校准程序拷贝至目标板,设置环境变量,运行校准程序,可直接生成高精度的/etc /pointercal文件。这里推荐使用第二种方法。 至此,Qt/E3.3.4便可在目标板上正确执行,移植完毕。 Qt/E编程 本文采用Qt/Embedded 3.3.4版本,主要是考虑到Qt/E 3.3版本相对以往版本更成熟,可视化编程相对更方便易用,且其支持SQLITE数据库驱动,便于数据库操作与编程。在本设计中主要使用了Qt/E的画布模块、SQL模块、网络模块及多线程编程,缩短了程序的开发周期,提高了开发效率。下面主要就多线程编程和画布模块编程进行讨论。 多线程编程 通常情况下图形用户界面应用程序有一个执行线程并且每次执行一个操作。如果用户在单线程的应用程序中从用户界面中调用一个耗时的操作,当这个操作被执行的时候,用户界面通常会被冻结。本实现使用QThread子类化得到QGPSThread类,并使用QMutex、QSemphore和 QWaitCondition来同步各线程。QGPSThread类用于通过串口编程接收GPS模块的$GPRMC定位数据帧,并加以解析,得到实时的经纬度等定位信息,供其它线程使用。 画布模块 画布模块中QCanvas库是一个高度优化的二维绘图库,QCanvas可以包含很多任意图形的项并且在内部使用双缓冲来避免闪烁,而且 QCanvas支持分层,适合数字地图的分层显示。QCanvas与其它画布模块结合使用,能很方便地实现导航地图的显示、缩放、漫游以及鹰眼等功能。下面是导航地图常用操作的实现代码。 void Form2::zoomin() //缩小地图比例 { QWMatrix m = mapview->worldMatrix(); m.scale( 0.5, 0.5 ); mapview->setWorldMatrix( m ); } void Form2::movleft() //地图向左漫游 { mapview->scrollBy(-10,0); } void Form2::centerpoint()  //将当前定位点居于显示地图正中 { mapview->center (pointx,pointy); } void Form2::movleft()  //定位点在地图上移动 { i->move (pointx,pointy); canvas->update(); } 初步实现 嵌入式信息终端平台定位功能的初步实现如图2所示,该系统人机界面友好,定位精确。定位误差主要取决于GPS-OEM模块的定位精度,实验显示,本系统能初步满足物流信息终端对定位功能的需求。   [!--empirenews.page--] 结语 本文提出了一种嵌入式物流信息化终端定位功能的实现方案,并利用Qt/E编程对其进行了初步实现。实验结果证明, 系统定位数据精确、界面友好、系统可扩展性强,较好地完成了物流信息化终端定位功能。 参考文献 1.常菲,李明禄,李鲁群。物流配送中移动定位技术研究[J]。微型电脑应用(研究与设计),2004,20(1)。22-24 2.杨晕,胡永健,林志泉。基于Linux和S3C2410嵌入式图象传输系统设计[J]。微计算机信息(嵌入式与SOC),2007,23(3-2)。20-24 3.(加拿大)布兰切尼(Blanchette,J.),(英)桑姆菲尔德(Summerfield,M.)著;齐亮译。C++ GUI Qt3 编程[M]。北京:北京航空航天大学出版社,2006

    时间:2012-04-18 关键词: embedded QT 端导航

  • 交叉编译qt-embedded-linux-opensource-src-4.5.1源码

    首先要有配置好的环境,本文使用的编译环境如下: 主机系统:Ubuntu 8.10 主机编译器:gcc 版本 4.3.2 交叉编译器:arm-softfloat-linux-gnu-gcc 软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz qt-x11-opensource-src-4.5.1.tar.gz 因为一般嵌入式设备上都是在framebuffer的方式,在X11上就是用qvfb 来模拟framebuffer的,我们平时开发也都是在PC上完成的,所以我们需要先安装X11版的Qt来获取qvfb这个工具。嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。 一、下载 qt-embedded-linux-opensource-src-4.5.1.tar.gz qt-x11-opensource-src-4.5.1.tar.gz 二、编译安装qt-embedded # tar -zxvf qt-embedded-linux-opensource-src-4.5.1.tar.gz # cd qt-embedded-linux-opensource-src-4.5.1 # ./cONfigure -embedded x86 -qvfb # make # make inSTall qt-embedded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.1 设置环境变量: # vi ~/.bashrc 把下面的加上去 export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/bin:$PATH export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/lib:$LD_LIBRARY_PATH 至此,qt-embedded安装完毕 三、编译安装qt-x11 # tar -zxvf qt-x11-opensource-src-4.5.1.tar.gz # cd qt-x11-opensource-src-4.5.1 # ./configure # make # make install qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.1 编译qvfb: # cd qt-x11-opensource-src-4.5.1/tools/qvfb # make 把生成的qvfb复制到qt-embedded的bin下,如 # cp qt-x11-opensource-src-4.5.1/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.1/bin 至此,qt-x11安装完毕完毕 四、测试 # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/ # qvfb & # ./chip -qws 随即我们就可以看到qt自带的例程图像了。

    时间:2012-08-14 关键词: Linux Opensource embedded QT 4.5 src

  • 基于Qt/Embedded触摸屏的智能家居控制系统

    摘 要: 设计了一个基于Qt/Embedded 触摸屏的智能家居控制平台,并通过zigbee 组网的方式,实现家居的智能化控制。首先,智能家居的界面用Qt/Embedded 设计,然后,界面被移植到以ARM9 为微处理器的控制平台上,并实现界面的触摸屏功能;最后,通过串口驱动将设计的具有触摸屏功能的界面与zigbee 组网的协议连接起来,实现对智能家居控制的无线传输。   1 引言   随着生活质量的提高,家居智能化已经成为当今时代的一种主流。如何更好的设计智能家居的整体性控制就显得越来越重要。由于ARM 和触摸屏的迅速发展,采用更好的GUI,实现友好的界面控制成为了可能;同时由于zigbee 无限传输技术的广泛应用,通过设计zigbee 的协议组网,使ARM 能轻易的通过的串口驱动程序实现智能家居的控制;同时,通过ARM 对万能遥控器的识别码的学习,实现了ARM 在智能家居上的多功能应用和智能家居的一体化控制。   2 系统设计概述   基于嵌入式智能家居的设计结构框图如图1 所示。主要包括以下几部分。Qt/E 及linux 系统、ARM9微处理器、zigbee 模块、语音模块、GSM 模块、串口和网络模块以及万能遥控器。 图1 智能家居设计结构框图   ARM9 微处理器采用Samsung S3C2440 CPU开发板,系统选择嵌入式linux 系统,其内核使用2.6.25.8 的内核,nandflash 采用256M 的内存。且由于arm 内核集成了多种外设控制模块的驱动程序,所以要对其进行必要的裁剪,串口用于连接zigbee模块。   Zigbee 采用TI 公司的CC24430 无线射频芯片,zigbee 有显著的低成本、低消耗、网络节点多等的无线传输功能,所以可以将一个zigbee 作为路由,通过一个zigbee 向多个zigbee 传输的功能,实现zigbee 的组网的,也有效的延长了zigbee 的传输距离。   网络模块采用CS8900A通过连接路由器,实现远程登入。   3 系统软件设计实现   系统采用linux 作为操作系统, 首先基于Qt/Embedded 进行图形界面的设计,再在宿主机上建立交叉编译环境,并制作yaffs 操作系统,最后将嵌入式linux 系统移植到ARM9 开发板上。系统通过设计GUI 界面,实现通过触摸屏对智能家居的一体化控制[1].文章软件部分包括嵌入式linux 操作系统的移植、系统界面设计、串口驱动和zigbee 组网设计。   在ARM9 和zigbee 的传输过程中,有一个智能家居的单元端接口设置。为了区别于不同家庭之间的传输,首先ARM9 会有一个各自家庭的主机ID 号设置。在一个家庭的智能化控制上,给路由功能的zigbee 设计八个端口,每个端口有一个ID 号,然后其余的连接路由的zigbee 通过接受各自ID 号的分别传输信息,最后,这些zigbee 又分别设置各自的设备号,这样就去除了干扰,实现智能家居的单独控制。   3.1 触摸屏和Qt/Embedded 交叉编译环境的建立   在建立交叉编译环境之前先要进行linux 系统移植,Linux 系统的移植主要主要包括BootLoad 移植、内核移植与裁剪以及文件系统移植等部分[2].文章选用u-boot 作为BooLload 引导程序。Linux 内核由于其公开性,很容易实现其移植和裁剪。文件系统这采用yaffs 根文件系统。   触摸屏和Qt/Embedded 的交叉编译环境的建立是linux 系统移植的关键部分。其步骤如下。   第一步是进行触摸屏校正,设计中采用tislib-1.4作为触摸屏的校正。其分为两步:(1)编译tislib,产生校正文件。(2)是下载校正文件和库文件到arm 板,实现五点校正。其编译过程如下。 第二步是Qt/E 的交叉编译。设计中Qt/E 采用qt-embedded-linux-opensource-src-4.5.0.同时为了方便程序开发,需要安装X86 版和ARM 版。   先在PC 上使用x86 版和qvfb 开发,完成以后再使用ARM 交叉编译放到开发版上运行。所以需要先解压一次,然后重命名为qt-embedded-linux-opensource-src-4.5.0-x86;再解压一次,并重命名为qt-embedded-linux-opensource-src-4.5.0-arm.Qt/E 的编译过程如下。 [!--empirenews.page--]   最后,设置交叉编译环境变量,进入系统控制平台vi /etc/profile.写入环境变量如下:   3.2 Qt/Embedded 编程   打开Qt Creator,进入Qt4 GUI Application,分别建立了pro、mai.cpp、dialog.cpp 和dialog.h 文件[3].智能家居的图形用户界面图2,分为如图2(a)和图2(b)所示,下面先说明图2(a)。quankai-全开按钮主要是完成控制屋内所有灯光的打开;quanguan-全关按钮主要是完成控制屋内所有灯光的关闭;woshi-卧室、chufang-厨房、keting-客厅、卫生间-卫生间主要是当按下按钮时,会进入分别控制它们安装的具体设备的窗口;tianjia-添加、shanchu-shanchu 按钮是当添加新的设备和拆除设备时的控制功能。再介绍图2(b)。下面设置了一些设备,如deng-灯、chuanglian-窗帘、menci-门磁、meiqifa-煤气阀、kongti-空调,dianshi-电视、bingxiang-冰箱、xiyiji-洗衣机,当按下如图b 的按钮时,按钮会通过槽输出一个16 进制,这个16 进制将通过串口传输给zigbee,然后触发zigbee 中的控制程序,实现控制设备的作用。   下面对几个重要的连接进行说明。图2(a)的说明如下: 图2 智能家居界面效果图。   (1) connect(PushButton. SIGNAL(clicked()),this, SLOT(open()))   当PushButton 按钮按下时,zhinengjiaju 对话框接受信号,并执行open()函数,open()函数中写如程序,让其进入下一个对话框--zhinengjiaju1.下面是部分程序:   图2(b)的说明如下:   (2)connect(PushButton.SIGNAL(clicked()),this, SLOT(newslot()))   当按下按钮PushButton 时,zhinengjiaju1 对话框接受一个信号,使newslot()函数发出一个16 进制。下面是部分程序: [!--empirenews.page--]   3.3 串口传输驱动程序   ARM 和zigbee 主要是通过串口实现传输。界面设计完成后,通过触摸触发按钮,使按钮输出出一个16 进制,zigbee 通过串口驱动接受到按钮传输出的数据,使zigbee 中的程序工作。下面是部分串口传输驱动程序源代码。   3.4 zigbee 组网设计   Zigbee 的组网主要是由zigbee 的协调器和向zigbee 的节点相互传输组成的。主要是用一个zigbee 作为路由,向这个zigbee 下载协调器的程序;再向其余的zigbee 下载节点程序,从而实现一个zigbee 控制多个zigbee 的传输过程。以下是部分的智能家居所有编写的的zigbee 的组网应用程序。   4 结语   在智能家居的设计中,一个友好的系统界面(GUI)是非常必要的,友好的GUI 界面更加方便用户的使用,也促进了系统的推广。通过ARM 和zigbee对智能家居的控制,很有效的实现无线传输控制功能,且由于ARM 可以对万能遥控器识别码的学习,可以很容易的设计出一种配合ARM 和zigbee 的遥控器,更家的完善了对智能家居的无线控制功能,更大的适应广大用户的需求。

    时间:2012-09-18 关键词: embedded QT 居控制

  • Qt/Embedded在嵌入式Linux系统中的应用

        摘要:分析和讨论Qt/Embedded的主流版本3.x系列的底层实现技术;结合2.x版本系列和3.x版本系列,在两种不同的硬件平台(Intel PXA255开发系统与笔者自行设计的Motorola MC9328 MX1开发系统)上的移植过程,讨论Qt/Embedded的底层设备接口与应用移植技术。     关键词:Qt/Embedded嵌入式Linux framebuffer 驱动接口 引言 随着嵌入式Linux应用的不断发展,嵌入式处理器运算能力的不断增强,越来越多的嵌入式设备开始采用较为复杂的GUI系统,手持设备中的GUI系统发展得非常迅速。传统的GUI系统,如Microwindows等,由于项目规模较小、功能较为薄弱,缺乏等三方软件开发的支持等诸多原因,在比较高级的手持或移动终端设备(如PDA、Smart-Phone、车载导航系统)中应用较少。 Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本,开发人员多为KDE项目的核心开发人员。许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,与X11版本的Qt在最大程度上接口兼容,延续了在X上的强大功能,在底层彻底摒弃了X lib,仅采用framebuffer作为底层图形接口。Qt/Embedded类库完全采用C++封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面,使用X下的开发工具Qt Designer可以直接开发基于Qt/Embedded的UI(用户操作接口)界面。越来越多的第三方软件公司也开始采用Qt/Embedded开发嵌入式Linux下的应用软件。其中非常著名的Qt Palmtop Environment(Qtopia)早期是一个第三方的开源项目,并已经成功应用于多款高档PDA。Trolltech公司针对Smart-Phone中的应用需求,于2004年5月底发布了Qtopia的Phone版本。 1 Qt/Embedded的实现技术基础分析 横向来看,由于发布的版权问题,Qt/Embedded采用两种方式进行发布:在GPL协议下发布的free版与专门针对商业应用的commercial版本。二者除了发布方式外,在源码上没有任何区别。纵向看来,当前主流的版本为Qtopia的2.x系列与最新的3.0x系列。其中2.0版本系统较多地应用于采用Qtopia作为高档PDA主界面的应用中;3.x版本系列则应用于功能相对单一,但需要高级GUI图形支持的场合,如Volvo公司的远程公交信息系统。图1为Qt/Embedded的实现结构。 3.x版本系列的Qt/Embedded相对于2.x版本系统增加了许多新的模块,如SQL数据库查询模块等。几乎所有2.x版本中原有的类库,在3.x版本中都得到极大程度的增强。这就极大地缩短了应用软件的开发时间,扩大了Qt/Embedded的应用范围。    在代码设计上,Qt/Embedded巧妙地利用了C++独有的机制,如继承、多态、模板等,具体实现非常灵活。但其底层代码由于追求与多种系统、多种硬件的兼容,代码补丁较多,风格稍显混乱。 1.1 Qt/Embedded的图形引擎实现基础 Qt/Embedded的底层图形引擎基于framebuffer。Framebuffer是在Linux内核架构版本2.2以后推出的标准显示设备驱动接口。采用mmap系统调用,可以将framebuffer的显示缓存映射为可连续访问的一段内存储针。由于目前比较高级的ARM体系的嵌入式CPU中大多集成了LCD控制模块,LCD控制模块一般采用双DMA控制器组成的专用DMA通道。其中一个DMA可以自动从一个数据结构队列中取出并装入新的参数,直到整个队列中的DMA操作都已完成为止。另外一个DMA与画面缓冲区相关,这部分由两个DMA控制器交替执行,并每次都自动按照预定的规则改变参数。虽然使用了双DMA,但这两个DMA控制器的交替使用对于CPU来说是不可见的。CPU所获得的只是由两个DMA组成的一个“通道”而已。 Framebuffer驱动程序的实现分为两个方面:一方面是对LCD及其相关部分的初始化,包括画在缓冲区的创建和对DMA通道的设置;另外一方面是对画面缓冲区的读写,具体到代码为read、write、lseek等系统调用接口。至于将画面缓冲区的内容输出到LCD显示屏上,则由硬件自动完成。对于软件来说是透明的。当对于DMA通道和画面缓冲区设置完成后,DMA开始正常工作,并将缓冲区中的内容不断发送到LCD上。这个过程是基于DMA对于LCD的不断刷新的。基于该特性,framebuffer驱动程序必须将画面缓冲区的存储空间(物理空间)重新映射到一个不加高缓存和写缓存的虚拟地址区间中,这样能才保证应用程序通过mmap将该缓存映射到用户空间后,对于该画面缓存的写操作能够实时的体现在LCD上。 在Qt/Embedded中,Qscreen类为抽象出的底层显示设备基类,其中声明了对于显示设备的基本描述和操作方式,如打开、关闭、获得显示能力、创建GFX操作对象等。另外一个重要的基类是QGfx类。该类抽象出对于显示设备的具体操作接口(图形设备环境),如选择画刷、画线、画矩形、alpha操作等。以上两个基类是Qt/Embedded图形引擎的底层抽象。其中所有具体函数基本都是虚函数,Qt/Embedded对于具体的显示设备,如Linux的framebuffer、Qt Virtual Framebuffer做的抽象接口类全都由此继承并重载基类中的虚函数实现。图2为Qt/Embedded中底层图形引擎实现结构。图2    在图2中,对于基本的framebuffer设备,Qt/Embedded用QlinuxFbScreen来处理。针对具体显示硬件(如Mach卡、Voodoo卡)的加速特性,Qt/Embedded从QlinuxFbScreen和图形设备环境模板类QgfxRaster<depth,type>继承出相应子类,并针对相应硬件重载相关虚函数。 Qt/Embedded在体系上为C/S结构,任何一个Qt/Embedded程序都可以作为系统中唯一的一个GUI Server存在。当应用程序首次以系统GUI Server的方式加载时,将建立QWSServer实体。此时调用QWSServer::openDisplay()函数创建窗体,在QWSServer::openDisplay()中对QWSDisplay::Data中的init()加以调用;根据QgfxDriverFactory实体中的定义(QLinuxFbScreen)设置关键的Qscreen指针qt_screen并调用connect()打开显示设备(dev/fb0)。在QWSServer中所有对于显示设备的调用都由qt_screen发起。至此完成了Qt/Embedded中QWSServer的图形发生引擎的创建。当系统中建立好GUI Server后,其它需要运行的Qt/Embedded程序在加载后采用共享内存及有名管道的进程通信方式,以同步访问模式获得对共享资源framebuffer设备的访问权。 1.2 Qt/Embedded的事件驱动基础 Qt/Embedded中与用户输入事件相关的信号,是建立在对底层输入设备的接口调用之上的。Qt/Embedded中的输入设备,分为鼠标类与键盘类。以3.x版本系列为例,其中鼠标设备的抽象基类为QWSMouse Handler,从该类又重新派生出一些具体的鼠标类设备的实现类。该版本系列的Qt/Embedded中,鼠标类设备的派生结构如图3所示。 与图形发生引擎加载方式类似的,在系统加载构造QWSServer时,调用QWSServer::openMouse与QWSServer::openKeyboard函数。这两个函数分别调用QmouseDriverFactory::create()与QkbdDriverFactory::create()函数。这时会根据Linux系统的环境变量QWS_MOUSE_PROTO与QWS_KEYBOARD获得鼠标类设备和键盘类设备的设备类型和设备节点。打开相应设备并返回相应设备的基类句柄指针给系统,系统通过将该基类指令强制转换为对应的具体子类设备指针,获得对具体鼠标类设备和键盘类设备的调用操作。 值得注意的是,虽然几乎鼠标类设备的功能上基本一致,但由于触摸屏和鼠标底层接口并不一样,会造成对上层接口的不一致。举例来讲,从鼠标驱动接口中几乎不会得到绝对位置信息,一般只会读到相对移动量。另外,鼠标的移动速度也需要考虑在内,而触摸屏接口则几乎是清一色的绝对位置信息和压力信息。针对此类差别,Qt/Embedded将同一类设备的接口部分也给予区别和抽象,具体实现在QmouseDriverInterface类中。键盘类设备也存在类似问题,同样引入了QkbdDriver Inteface来解决。具体实现此处暂不多述。 2 Qt/Embedded的移植与应用 针对Qt/Embedded的实现特点,移植该嵌入式GUI系统一般分为以下几个步骤: ①设计硬件开发平台,并移植Linux操作系统; ②采用静态链接进Linux内核的方式,根据该平台显示设备的显示能力,开发framebuffer驱动程序; ③开发针对该平台的鼠标类设备驱动程序,一般为触摸屏或USB鼠标; ④开发针对该平台的键盘类设备驱动程序,一般为板载按钮或USB键盘(该部分可选); ⑤根据framebuffer驱动程序接口,选择并修改Qt/Embedded中的QlinuxFbScreen和QgfxRaster类; ⑥根据鼠标类设备驱动程序,实现该类设备在Qt/Embedded中的操作接口; ⑦根据键盘类设备驱动程序,实现该类设备在Qt/Embedded中的操作接口(该部分可选); ⑧根据需要选择Qt/Embedded的配置选项,交叉编译Qt/Embedded的动态库; ⑨交叉编译Qt/Embedded中的Example测试程序,在目标平台上运行测试。 Framebuffer设备驱动程序提供出的接口是标准的,除了注意endian问题外,配置Qt/Embedded时选择相应的色彩深度支持即可,因此该部分的移植难点就在于framebuffer驱动程序的实现。Qt/Embedded部分的QWSServer打开/dev/中的framebuffer设备后读出相应的显示能力(屏幕尺寸、显示色彩深度),模板QgfxRaster<depth.type>将根据色彩深度在用户空间设备创建出与显示缓存同样大小的缓冲作为双缓冲,并采用正确方式进行显示。    2.1 在PXA255平台上移植和应用 在笔者参与设计的某Smart-Phone开发平台中,GUI系统实现方案采用了Qt/Embedded 2.3.7和Qtopia 1.7.0(基于Qt/Embedded 2.x系列的手持套件),硬件平台采用了基于Intel XScale PXA255处理器的嵌入式开发系统。该开发系统采用640×480分辨率的TFT LCD和PXA255内部LCD控制模块作为显示设备,ADS7846N作为外部电阻式触摸屏控制器;另外,采用了五方向按键作为板载键盘。由于该系统采用了ISP1161作为USB Host控制器,较好地支持了USB接口的键盘和鼠标,操作系统为ARM Linux 2.4.19。参考Linux 2.4.19内核目录drivers/input部分,可以按照标准内核中input device接口设计实现触摸屏和键盘,在实现了基于ISP1161的EHCI驱动程序后,移植标准的USB接口的人机界面设备驱动HID和USB键盘、鼠标的驱动程序后,可以获得对于该类设备的调用接口。此过程不属本文讨论范畴,此处暂不多述。 Qt/Embedded 2.x系列对于输入设备的底层接口与3.x系列不同,触摸屏设备和键盘设备需要根据具体的驱动程序接口在Qt/Embedded中设备实现对应的设备操作类。其中对应于鼠标类设备的实现位于src/kernel/qmouse_qws.cpp中。由于触摸屏在实现原理上存在着A/D量化误差的问题,因此所有的触摸屏接口实现类需要从特殊的QcalibratedMouseHandler继承,并获得校正功能。 Qt/Embedded 2.x中对于键盘响应的实现函数位于src/kernel/qkeyboard_qws.cpp中。在qkeyboard_qws.h中,定义了键盘类设备接口的基类QWSKeyboardHandler,移植时需要根据键盘驱动程序从该类派生出实现类,实现键盘事件处理函数processKeyEvent(),并在QWSServer::newKeyboardHandler函数中注册自己的键盘类设备即可。其中对于点击键的键码定义在Qt/Embedded的命名空间——src/kernel/qnamespace.h中。 图4为笔者在该Smart-Phone开发平台上移植Qt/Embedded 2.3.7和Qtopia 1.7.0后显示的截图。 2.2 在MC9328平台上移植和应用 在某车载导航辅助系统的开发平台设计中,采用了Qt/Embedded 3.3.2版本作为其GUI系统的实现方案。硬件平台采用自行设计的以Motorola MC9328 MX1为核心的开发系统。该系统采用CPU内部LCD控制器和240×320分辨率的16 bpp TFT LCD作为显示设备,采用I2C总线扩展出16按键以及MX1集成的ASP模块和电阻触摸屏。操作系统为ARM Linux 2.4.18。 Qt/Embedded 3.x版本系统中与底层硬件接口相关部分的源码位于src/embedded/目标中。该部分包含三类设备的接口:framebufer、鼠标与键盘。参照该目标中相关设备的具体接口代码,根据自身硬件台增添接口即可。 由于系统LCD的岔道率为240×320,物理尺寸较小,在实现其于该系统的framebuffer驱动程序时并没有将其本身与Linux字符控制台设备挂靠,因此framebuffer并不具备TEXT模式的工作方式。在移植Qt/Embedded时,无需作framebuffer设备的工作方式转换。正确配置色彩显示支持后,Qt/Embedded能够在LCD显示出正确的图形。由于该平台的显示系统为纵向320行,在设计时考虑到人对于非手持设备的视觉习惯为宽度大于高度的观察方式,为了符合这种习惯性的观察方式,在移植Qt/Embedded时采用了Transformed的旋转图形显示方式在软件上实现了显示方向的转换变化。 鼠标设备接口这一基类QWSMouseHandler的实现位于src/embedded/qmouse_qws.cpp中。与2.x版本系列不同的是,3.x中所有的Linux触摸屏示例接口代码均实现在src/embedded/qmouselinuxtp_qws.cpp中的QWSLinuxTPMouseHandler类中。其中对于不同型号的触摸屏的接口实现代码,采用不同的宏定义和预编译的方式将它们分隔开。笔者还通过从QWSLinuxTPMouseHandler中继承自身触摸屏接口类,替代原有的QWSLinuxTPMouseHandlerPrivate类,而在QWSLinuxTPMouseHandler生成自身触摸屏接口对象的方式,较好地将移植部分的代码与原有比较混乱的代码分隔开来。图4    3.x中键盘接口基类们于src/embedded/qkbd_qws.cpp中,为QWSKeyboardHandler。实现I2C总线扩展出的16键键盘接口类方式与触摸屏类似,此处不多述。需要注意的是,Qt/Embedded提供了事件过滤器(key event filter)的接口,在键盘点击事件从QWSServer截获并发送到相应的client之前会经过函数QWSServer::KeyboardFilter。在此函数中可以按照自身需求生成新的键盘点击事件,而后利用QWSServer::sendKeyEvent()发送新的点击事件到client中。利用该方式可以将各种键盘点击无法输入的unicode字符转换出来,从而可以在较少的按键键盘上实现多unicode字符输入法。Qt/Embedded 3.x键盘接口的移植与鼠标设备接口类似,此处不多述。 3 总结 随着嵌入式处理器运算能力的不断提高,对外设支持的不断丰富,嵌入式Linux系统的应用也逐渐增多。Qt/Embedded延续了Qt在桌面系统的所有功能,丰富的API接口和基于组件的编程模型使得嵌入式Linux系统中的应用程序开发更加便捷。由于Qt/Embedded本身面向高端的手持设备和移动设备,将成为未来嵌入式系统的主要GUI。

    时间:2005-04-10 关键词: Linux embedded QT 设计教程

  • 基于QT/Embedded的可变情报板应用程序开发

    0引言QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT开发库QT Library、快速开发工具QT Designer、国际化工具QTLinguist以及开发助手QT Assistant,由于其可移植性好,而且完全面向对象,很容易扩展,因此,QT已成为众多嵌人式厂家选择的热点工具。1  操作系统选择本文主要讨论的是一个可变情报板控制器的图形界面系统。该系统需要用串口和以太网口两路来和主控PC和LED情报板通讯,所以,硬件上选择的是一款采用SAMSUNGS 3C2440A高性能处理器的开发板。并带有外部存储器、两个五线异步串行口、一个10 M/100 Mbps网口、一个SD卡接口、一个IDE接口,可直接挂接硬盘、LCD和触摸屏接口等。因此,本设计选择uclinux作为操作系统,适合于不带MMU的微处理器芯片。2应用程序开发该程序按照功能可分为三个模块,分别为界面显示模块,串口通讯模块和以太网通讯模块。界面显示模块可提供人机交互接口。它采用一种直观便捷的方式来为用户系统提供控制功能。程序开始运行后,首先进入主界面,包括菜单栏,状态栏和中间区域界面(包括一个列表框和播放,暂停,下一条,上一条等按钮,可分别实现不同功能)。串口通讯模块用于LED情报板和控制器的通讯,以及轮询情报板的状态信息。控制板每隔一定时间发送一个串口模糊查询命令,以轮询与其连接的16个模块的状态信息,被轮询到的模块将回送自己所搜集的数据,若在指定时间内没有收到该模块的数据信息,则按通讯异常处理。以太网通讯模块用来实现主控PC和控制器的通讯.以完成数据收发功能。主控PC作为客户端连接的控制器,可以发送控制命令。控制器接收命令后,便可按照通信协议把命令转换成控制信号,并完成上传下载文件和改变LED显示内容等功能。3  关键技术3.1 QT的信号与槽的机制QT使用信号与槽的机制来完成对象间的通讯,它支持同一进程间的对象通讯。连接信号与槽的函数为:QObjiect::connect(const QObject*sender,const chat*signal,const QObject*receiver,const char*member)当某一个特定系统定义的或者用户定义的信号被触发时,这个信号便被发射。当事先预定义的槽接收到这个信号后,便进行相应的处理。但是使用了信号与槽机制的类必须在类定义的时候申明Q_OBJECT。此外,用户也可以使用emit来发射一个信号,如:emit function (value)。3.2  串口编程技术本系统的整个程序框架遵从linux系统下串口通信编程的标准流程,即:串口的打开、设置属性、读写数据、以及关闭。Linux下对设备的管理都是按照文件形式进行的。对串口的读写就是对设备文件的读写操作。下面是Linux下的部分操作定义:◇串口打开函数:int open (const char*port,int MODE);◇设置属性:包括波特率和奇偶校检,停止位,硬件流控,软件流控等的设置。◇串口发送函数:int write(intfd,char[]buffer,int Length)。◇串口接收函数:int read(int fd,char []buffer,int length)。◇关闭串口:close(int fd)。[!--empirenews.page--]3.3 Socket编程技术在本应用程序中,控制器一般被设置为服务器端,其具体的过程如下:◇创建套接字:int socket(int domain,inttype,int protocol。◇绑定socket到特定端口:int bind (intsockfd,struct sockaddr*my_addr,int addrlen)。◇监听套接字端口:int listen(int sockfd,int backlog)。◇接受客户端连接请求:int accept (intsockfd,void*addr,int*addrlen);◇发送数据(面向TCP连接):int send (intsockfd,const void*msg,int len,int flags)。◇接收数据(面向TCP连接):int rear(intsockfd,void*buf,int len,unsigned int flags)。◇关闭套接口:close(socket)。3.4  进程间的通信技术进程间的通信手段主要有管道、消息队列、信号、共享内存、信号量、套接口等等,本文采用的是内存共享和信号机制。(1)内存共享在该方式中,多个进程可以访问同一块内存空间,它是最快的可用IPC形式,往往使用信号量机制来达到进程同步一互斥。mmap()系统调用使得进程之间可以通过映射同一个普通文件来实现内存共享。当普通文件被映射到进程地址空间后,进程可以向访问普通内存一样来对文件进行访问,而不必再调用read()和write()等操作。(2)信号机制该方式可用于通知接受进程有某种事件发生,是进程间唯一的异步通信机制。该方式的信号安装代码为:int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact)。而发送信号的代码为:int sigqueue(pid_t pid,int sig,const unionsigval val)。4  运行步骤将编译好的可执行文件移植到目标板上,需要以下几个步骤:(1)打开电脑的超级终端程序,将计算机串口与目标板相连;(2)在ARM板加电初始化完毕后,cd到开发板的tmp文件夹底下,再用超级终端上的上载文件功能,将可执行程序下载到板子上。(3)在命令行敲人chmod 777 xxx,改变可执行文件的执行权限。(4)在命令行敲人./xxx,并执行。此后程序开始运行。5  结束语本文以可变情报板图形系统的开发为例,阐述了基于QT的应用软件开发方法,其友好的人机交互界面以及反应快速灵敏的特点,使得该系统具有良好的执行效果。目前,该系统已经成功交付使用并具有良好的稳定性。随着嵌入式技术的继续飞速发展和用户需求的不断增加,相信在未来不久,LED可变情报板系统将会发挥越来越多的作用。

    时间:2010-03-01 关键词: embedded QT 程序开 设计教程

  • Konqueror/embedded向ARM-Linux平台的移植和汉化

    引言 目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。       Konqueror/embeded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。    Konqueror/embedded的结构    Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;而作为Konqueror/embedded的核心,KHTML则运用了文档对象模型(DOM)所提供的API接口,并在DOM树上挂接javascript引擎,CSS解析器以及渲染引擎。Konqueror/embedded的层次结构如图1所示。      图1 Konqueror/embedded层次结构 Kparts及Qt构件实现GUI    为了方便地实现将现有应用作为一个控件插入到另外一个应用中去,采用了part对象负责管理整个应用和窗口。对于每个窗口又采取了类似 微软 MFC 中的 Doc-View 结构。因此在将应用嵌入到另外一个应用中的时候,只需要获得part中的接口和数据即可。对窗口的一切操作的响应由被嵌入应用的 part 对象来完成,而类 Doc-View 结构只负责显示和保存数据即可。    由于Konqueror/embedded是基于图形库Qt/E,因此也遵循了signal、slot消息机制,Konqueror/embedded作为Qt/E的一个标准应用程序进行输入/输出及界面消息响应。    执行DOM 模块    DOM 模块对经过解析的标记进行语法检查,并把属性看作节点,按照标记的语义包含关系以及先后顺序组织成DOM树。它给HTML 文档定义了一个与平台无关的程序接口,使用该接口可以控制文档的内容、接口和样式。    在执行DOM模块的过程中,浏览器将所有从语法语义解析模块中获得的标记和属性,按照一定的层次结构组织成DOM 树。完成DOM 树的构筑后,DOM 模块会同时把标记和属性以对象的形式传给绑定模块和脚本引擎模块。   执行I/O模块    浏览器加载有关的I/O文件,对HTTP等协议进行解析。语法语义解析模块的解析功能分为两部分:对接收到的字节流进行分词,解析为关键字;调用解析器检验关键字是否合法,若是合法的关键字,则按照规则插入到DOM 树中。    HTML 的标记和属性统称为HTML的关键字。基本上所有HTML 4. 0 规范的标记都在此功能模块中获得支持。从I / O 模块中接收字节流并进行分词,输出标记;再对标记进行判断,如果是HTML 规范中合法的标记,则把标记看作一个节点,并组织成语法树。对属性标记的解析首先在标记处理类中执行,如果解析不成功,则交由基类的属性解析器进行解析。    图2  编译配置[!--empirenews.page--]          Konqueror/embedded的移植    交叉编译工具的安装    在本文中,运用的交叉编译工具是专门为ARM处理器设计的ARM-CrossToolchain。2.95.3版本的交叉编译工具只能解压到/usr/local/arm/2.95.3目录下,否则在Qt/E编译时会出错。    为了在任何目录下都能使用工具链,必须要对路径进行设置。用VI编辑器打开/etc/profile文件并添加下述路径:PATH=/usr/local/arm/2.95.3/binPATHQt/E的编译   Qt是一个跨平台的 C++ 图形用户界面库,目前包括Qt/X11(基于 Framebuffer)和Qt/E(Qt Embedded)。Konqueror/embedded就是基于Qt/E图形用户界面库的,因此在编译Konqueror/embedded之前必须先编译Qt/E。    编译Qt/X11就是为编译Qt/E提供uic(用户接口编译器),uic用来把.ui文件转成.h和.cpp文件。    将Qt/X11编译完毕而生成的uic拷贝到Qt/E的bin目录下面。在编译Qt/E之前,先要将Qtopia的一个配置文件拷贝到Qt/E中,表示Qt/E的配置是按照Qtopia要求的,即:cp Qtopia-free-1.7.0/src/Qt/qconfig-qpe.h Qt-embedded-2.3.7/src/tools/   之后就可以设置环境变量,编译Qt/E了。编译Qt/E完成后,在Qt/E的lib目录下会自动生成libQte.so.2.3.7库文件。 图3  文件的原路径和目标板路径           图形界面Qtopia的编译    Qtopia 是基于Qt/E的图形界面应用程序集,通过Qtopia真正地将图形界面展现在用户的眼前。而Konqueror/embedded在一般情况下是在Qtopia环境下运行的,所以要用到Qtopia库。也有少数情况不会用到,即系统启动的时候只运行Konqueror/embedded。那么只要在编译Konqueror/embedded的时候配置稍作修改即可,本文只介绍前者。    在编译Qt/E的时候已经将Qtopia的配置传递给了Qt/E,因此编译Qtopia时就非常容易了,如下所示:    cd Qtopia-free-1.7.0/src ./configure  -xplatform linux-arm-g++ make    这样,在bin目录下会生成一组应用程序集,在lib目录下产生了一系列的Qtopia库,给Konqueror/embedded的编译做准备。    Konqueror/ embedded的编译和安装    Konqueror/ embedded的编译    在编译Konqueror/embedded之前,必须将Qt/E和Qtopia的路径指定给编译器。这样编译器才能找到相应的库,从而为Konqueror/embedded提供相应的库文件。    先设置一些必要的环境变量,然后再按照图2配置和编译Konqueror/embedded。在编译配置时,这些配置选项都是有各自含义的。有些配置选项如果搞错,编译就无法通过,甚至有时候连配置都不能完成。比如Qt/E路径指定不对就会在配置时出错,这些都需要在实际的移植过程中才能体验到。    Konqueror/embedded的安装    在Konqueror/embedded编译完成之后,目录下会生成相应的可执行文件。因此Konqueror/embedded的安装主要是指将可执行文件和一些其他的配置文件拷贝到嵌入式系统的文件系统中去。一般来说,Konqueror/embedded运行需要5个文件,图3描绘了这5个文件的原来所在路径和安装到目标板的路径,这些都要手动去拷贝。    在目标板上运行Konqueror/embedded之前,必须指定几个环境变量,否则Konqueror/embedded会因为找不到库文件而终止运行。预先设置好环境变量,再运行Konqueror/embedded。    至此,Konqueror/embedded已经安装完毕。但是Konqueror/embedded缺省情况下是不支持中文网页的,而且界面是英文的。某些情况下为了满足特定的需要,其汉化也是非常必要的。      Konqueror/embedded的汉化   Konqueror/embedded的汉化可分为两个部分: 一个是Konqueror/embedded本身控制界面的汉化;另一个是Konqueror/embedded对中文网站的访问支持。和其他基于Qt的应用程序一样, Konqueror/embedded中对所有用户可见的文本使用tr()将文本标识出来,这样利用Qt 提供的翻译工具将很容易把这些文本转化成所需要的语言。    同时Qt 提供了两个宏QT_ TR_NOOP ( ) 和QT_ TRANSLATE_ NOOP ( ) ,可用它们标示出文本,以便于被lupdate 工具提取。具体操作步骤如下:在需要翻译源码的XXX. pro 中加入一项: TRANSLATIONS = XXX. t s;运行lupdate XXX. pro ,生成XXX. ts 文件;运行lrelease XXX. pro 将生成XXX. Qm,并将其改名为XXX_en.qm;启动Qt Linguist 将XXX. ts 文件导入,将需要翻译的内容翻译成中文;翻译完成之后, 点击File →Re2lease ,将文件保存为XXX_zh. Qm;翻译文件保存之后, 在程序源码中需要构建Qt ranslator 实例,利用Qt ranslator 将翻译文件加载到图形界面上。    在Konqueror/ embedded 中可以通过修改main. c 中的代码来实现UI 的汉化。由于Qt/E是可以支持Unicode编码的,因此Konqueror/embedded也可以支持中文。但是在编译Qt/E的缺省配置中是不支持Unicode的,因此要手动修改qconfig-qpe.h文件的配置:注释掉38行,#define Qt_NO_CODECS。    修改完毕以后,重新开始编译Qt/E以及Qtopia和Konuqueror/E,Konqueror/embedded就能接受Unicode编码的汉字了。但是要在Konqueror页面上显示,就必须要有相应的字体。因此,对Konqueror/embedded源代码中/konq-embed/dropin/ kglobalsettings.cpp文件进行修改,即将"helvetica"改为"unifont"后重新编译Konqueror/embedded,这样Konqueror/embedded中就能显示中文字体的页面了。    结语    本文对嵌入式浏览器Konqueror/embedded技术核心做了简要分析,阐明了该浏览器的先进性与可扩展性,而且阐述了Konqueror/embedded移植到实际使用系统中存在的一系列问题。本文结合了实际的移植经验,详细地说明了整个移植过程对嵌入式浏览器的移植有较好的指导意义。

    时间:2010-12-10 关键词: ARM Linux embedded konqueror 设计教程

  • 嵌入式Linux中基于Qt/Embedded的键盘接口设计

    摘要:采用S3C2440处理器和嵌入式Linux操作系统,选择目前比较常用的Qt/Embedded作为图形界面的开发语言,设计了嵌入式系统中的键盘接口。在介绍硬件平台的基础上,给出了嵌入式Linux下键盘设备驱动程序的工作过程及实现方法,简单介绍了Qt/Embedded的架构和字符输入策略,详细设计了Qt键盘驱动插件和应用程序。实验表明,键盘驱动采用Qt的插件系统,具有更好的独立性和移植性。 关键词:嵌入式Linux;Qt/Embedded;键盘驱动;S3C2440 引言     随着嵌入式系统的不断发展,特别是嵌入式处理器运算能力的不断增强,嵌入式系统被广泛应用于信息家电、移动通信、手持信息设备以及工业控制等众多领域。与此同时,用户对于嵌入式系统图形用户界面的需求也不断提高。嵌入式Linux作为一种流行的嵌入式系统平台,它所具备的稳定、高效、易裁剪、易移植、硬件支持广泛等优点,结合其源码开放的特征,使得Linux在嵌入式操作系统中的地位日益重要。Qt/Embedded是一个完整的自包含GUI和基于 Linux的嵌入式平台开发工具,因其面向对象、跨平台、界面设计更美观和友好而得到广泛的应用。Qt/Embedded具有客户/服务器模型,直接向帧缓冲写入数据,摒弃了X窗口系统,节省了内存。同时,将外部输入设备抽象为键盘和鼠标输入事件,底层接口支持键盘、GPM鼠标、触摸屏,以及用户自己定义的设备等。 1 硬件设计     电路采用三星S3C2440处理器,实现了4×4矩阵键盘的输入。矩阵键盘使用了处理器的4个GPIO和4个中断,以中断方式获取键值,对应的中断引脚分别是EINT3、EINT9、EINT11、EINT13。GPIO引脚与矩阵键盘的行相连接作为输入端,中断引脚与矩阵键盘的列相连作为矩阵键盘的输出端。开始时GPIO端输出为低电平,当有按键被按下时,按键所在列输出低电平产生中断,这时可以判断按键所在的列。然后向每一行依次输入高电平,如果列的输出端由低电平变成高电平,则可以确定按键所在的行,这时键值被唯一锁定。具体电路如图1所示。 2 LinuX下键盘接口驱动     键盘设备属于字符设备,键盘驱动应该符合字符设备驱动的编写模式。Linux采用内核模块机制,当系统运行的时候驱动程序可以以模块的形式动态地加载和卸载,既方便了驱动的调试,又缩短了开发周期。在驱动中必须实现static int_init my_kb_init(void)函数和stat- ic void_exit my_kb_exit(void)函数。static int_init my_kb_init(void)函数在内核加载键盘驱动时被调用,注册模块为以后调用模块函数预先做准备,同时完成字符设备的注册,分配主设备号,设置中断类型,安装中断函数,并且将所有中断禁止。static void_exit my_kb_ exit(void)函数在卸载模块时被调用,用于撤销初始化函数所做的一切,否则在系统重新引导之前一些东西会残留在系统中,导致模块重新加载失败。     键盘驱动中主要包括以下几个子模块:中断处理子模块、键盘扫描子模块、消抖处理和组合键子模块、重复按键子模块等。驱动工作流程如图2所示。     按键的识别主要是在中断处理子模块中完成的。当系统有按键被按下时,驱动程序先关掉中断,然后扫描键盘,确定哪个键按下,键盘按下和抬起都有中断发生,这样可以为用户提供按下和抬起标志,以判断按键是单键按下还是多键齐按。在消抖处理和组合键子模块中,加入Linux内核定时器,键盘定时扫描,消除抖动得到稳定键值。重复按键子模块是根据Linux内部的定时器,设置自动重复开始延时和自动重复延时,键盘按下后根据延时来完成按键事件,键值存入队列供应用程序读取。[!--empirenews.page--] 3 Qt/Embedded键盘输入策略 3.1 Qt/Embedded架构简介     Qt/Embedded Linux应用程序需要一个正在运行着的服务器应用或者是本身就是一个服务器应用程序。任何一个Qt/Embedded Linux应用程序都可以扮演服务器的角色。当多于一个应用程序运行的时候,应用程序作为客户端与服务器程序相连接。     服务器进程和客户端进程有不同的分工:服务器进程管理着鼠标指针的处理、字符的输入和屏幕的输出。另外服务器还控制着屏幕光标的输出和屏幕保护程序。客户端进程完成所有应用程序的具体操作。一个QWSServer类的实例代表一个服务器应用,一个QWSClient类的实例代表着一个客户端应用。每一方面都有一些类完成各种操作。     所有系统产生的事件包括键盘事件和鼠标事件都被传递到服务器应用中,然后服务器将这些事件分发到客户端应用中。 3.2 客户端/服务器的通信     如图3所示,正在运行着的程序通过增加和删除窗口不断地改变屏幕的显示。服务器在对应的QWSWindow对象中维护着每一个顶层窗口的信息。每当服务器接收到一个事件时,它都会查询它的顶层窗口列表找到包含该事件位置的窗口。每一个窗口都有一个创建它们的客户端应用的ID,将这个ID返回给服务器。最后服务器将这个事件封装成一个QWSEvent类的实例,传递给相应的客户端。     另外还可以通过QWSServer::KeyboardFilter类实现按键事件的全局的底层过滤器。这种方法可以实现电源管理中的一键挂起,而不用在所有的应用程序中都对这个按键事件进行过滤。     如图4所示,服务器通过UNIX域套接字与客户端进行通信。客户端从服务器接收事件,这些事件通过重新实现QApplication的qwsEvent-Filter()函数可以被直接检索访问。     客户端相互之间(和服务器)通过QCopChannel类通信。QCOP用于在多个通道间传送信息,是一个多对多的通信协议。每个通道用名字作为识别 ID,任何一个想要和它通信的通道都能监听它。QCOP协议既允许在相同的地址空间内的客户端之间进行通信,也允许在不同的进程的客户端之间进行通信。 3.3 字符输入层     如图5所示,当一个服务器应用程序开始运行时使用Qt的插件系统加载键盘驱动,驱动是一个QWSKeyboardHandler类的实例。     键盘驱动从设备接收键盘事件,并把事件封装成一个QWSEvent类的实例,然后把这个类传送给服务器。定制键盘可以通过子类QWSKeybo- ardHandler类创建一个键盘驱动插件来实现。默认的QKbdDriverFactory类将自动检测到这个插件然后把驱动加载到正在运行的服务器应用中。 4 键盘驱动插件的实现     本文通过Qt的插件系统实现了矩阵键盘的接口驱动。插件是一种遵循一定规范的应用程序接口编写出来的程序。在现代计算机语言中,应用环境复杂多变,常常要面临着适应这样那样的未知需求的挑战,为了使程序设计语言具有良好的可扩展性,使之能够适应复杂的应用环境,同时也出于降低设计复杂性的考虑,采用插件机制是一个很不错的方法。通过采用插件系统,把扩展功能从框架中剥离出来,可以降低框架的复杂度,让框架更容易实现。扩展功能与框架之间以一种松耦合的方式集成,允许在保持接口不变的情况下,实现彼此的独立变化。     Qt提供了两种插件:一种是高层的插件,用来扩展Qt自身,如自定义数据库驱动、图像格式、文本编解码器、自定义风格等;一种是底层的插件,用来扩展Qt应用程序。[!--empirenews.page--]     一个键盘插件的实现,通常至少需要两个类:一个是插件封装器类,它实现了插件的通用API函数;另外一个是一个或多个处理器类,每个处理器类都实现了一种用于特殊类型插件的API。通过封装器类才能访问这些处理器类。下面是具体的实现过程:     首先要实现一个自己的MyKeyDriverPlugin类,这个类继承了QKbdDriverPlugin类,需要重新实现QKbdDriverPlugin::keys()函数和QKbdDriverPlugin::create()函数。     keys()函数返回一个键盘插件的键值,这个键值不能和其他的键值相冲突。create()函数返回一个给定键值的QWSKeyboardHandler派生类的实例。     在.cpp文件的最后,必须添加一个下面这样的宏:Q_EXPORT_PLUGIN2(keyboard,MyKeyDriverPlugin)     第一个参数项是目标库名字去除任意扩展符、前缀或者版本号之后的基本名。第二个参数则是插件的类名。     第二个要实现的类是处理类MyKeyboardHandler,这个类需要继承QWSKeyboardHandler类。当键盘驱动捕获到键盘数据时,系统会通过套接字监听键盘信息,并在MykeyboardHandler::readKbdData()中对捕捉到的扫描数据进行处理并封装,然后向服务器端发送键盘事件。     ①打开键盘设备并初始化,一般调用open()函数。     ②监控键盘设备,调用QScoketNotifier监控键盘设备kbdFd。     ③发生键盘事件时读取键盘事件,读取键盘事件后将键值、按下等信息翻译成Qt内部键盘事件的格式,并通过调用processKeyEvent将事件分发出去。 5 键盘插件在应用程序中的使用     将键盘插件编译后生成一个libkeyboard.so的动态库,这个动态库的名字是由Q_EXPORT_PLUGIN2宏的第一个参数决定的。派生插件默认存储在标准插件目录下的子目录中,如果它们没有存储在正确的目录下Qt不会找到这些插件,所以要在使用的文件系统中创建Qt的标准插件目录。     要想应用程序在启动的时候能够正确加载键盘插件还要设置嵌入式Linux系统中的环境变量:     QWS_KEYBOARD=MyKeyHandler:/dev/kbd     MyKeyHandler对应着key()函数中的键值,kbd是在/dev文件夹下的键盘设备文件。Qt应用程序开始运行后要根据 QWS_KEYBOARD这个环境变量创建一个MyKeyboardHandler类。窗口部件响应服务器分发的键盘事件还要重新实现如下函数。 }  

    时间:2011-01-10 关键词: Linux embedded 设计教程

  • 基于CPLD和Embedded System的LED点阵显示

    摘要:采用自顶向下的设计思想,综合运用EDA 技术、CPLD技术和共享式双口RAM,解决了大屏幕LED点阵显示屏无闪烁显示的技术难题。给出了系统设计方法及实际电路。 LED点阵显示屏是显示公共信息的一种重要显示终端,其中大屏幕LED点阵显示屏在许多场合得以应用。大屏幕显示所采用的技术比中小屏幕显示难度更大,因为其屏幕大、LED点数多,要求在极短的时间内刷新每个点,使得其扫描速率必须非常高,所以只有设计合理的控制电路才能达到这个要求。本文着重解决大屏幕LED点阵显示这一技术难题。通过采用自顶向下的设计思想,综合运用高速CPLD、双口RAM等技术和芯片,设计出了大、小屏幕皆适合的显示控制电路。特别是利用单片机、CPLD与双口RAM的无缝结合,将复杂的任务分配给不同的硬件处理,满足了对实时性的要求。本系统不仅给大屏幕LED点阵显示提供了优良的控制电路,而且为CPLD器件和EDA技术提供了切实的应用实例。其中,共享双口RAM的应用,为高速总线与低速总线的通信提供了一个新的解决方案。 1 硬件设计 显示系统由信号处理电路和扫描电路两大块构成,其系统原理框图如图1所示,实际电路框图如图2所示。微处理器MCU采用8 位单片机AT89C51,它通过串口接收来自PC机的待显示数据。由于PC机串行总线标准RS232 的逻辑电平与单片机电路使用的TTL电平不同,所以PC机与MCU之间的通信数据必须经过RS232 电平转换芯片MAX232进行转换。从PC机接收到的数据存放在8K字节的电可擦写内存EEPROM 28C64中,这样可方便地随时修改待显示的信息,并且在掉电情况下不至于丢失数据。由于系统软件要进行大批量的数据处理,所以扩充了单片机缓存区大小,采用了8K字节的外部静态RAM 6264。 1.1 双口RAM的应用 采用双口RAM是本设计的一个主要特色。一般的RAM(如6116)只有一套地址总线、数据总线和控制总线,在同一时间只能执行同一总线操作。而标准双口RAM有左侧和右侧两套地址总线、数据总线和控制总线,可供两套总线对其进行访问。在本系统中,单片机通过共享的双口RAM IDT7132与CPLD通信,单片机将数据写入IDT7132中,而CPLD则从IDT7132中读取数据并通过扫描逻辑电路输出出去。 由于CPLD扫描模块可以达到很高的扫描速率,而单片机的运行速度则相对较低,并且两个模块间需要有大量的数据交换,为此选择双口RAM芯片IDT7132SA35JS,它的速度等级是35ns,完全满足两个模块实时通信的要求。双口RAM是两个数据模块间的数据信道,必须是共享的,它在本设计中起到了关键作用。 1.2 基于CPLD的独立扫描模块 显示部分的点阵模块采用双色LED共阴点阵模块(实际上可显示红、黄、绿三色)。 8 块8×8点阵模块连接成32×32点阵。为易于控制,将公共接口作为行控制,且行的接地引脚经过一个开关三极管接地(设计中简称行扫描管),实现对相应列的控制。因为一个行扫描管同时控制着一行中多个LED的通断,所以它承载较大电流。以每个发光二极管流过的电流为10mA计算,一个128列的点阵屏中,每个行扫描管所承受的电流是10mA×128=1.28A,为此选用高速中功率达林顿管TIP127,它的集电极吸收电流最大可达5A,保证了行的驱动能力。由于显示点阵的每一行都需要用一个三极管来控制,所以32×32点阵共需要32个TIP127。 行扫描电路采用通用数字电路译码输出来控制。在32×32点阵显示时,扫描输出需要大量的I/O埠,而ATMEL公司生产的CPLD 芯片ATF1508AS15JC84(与ALTERA公司的MAX7128SLC84-15功能及封装等完全兼容)的外部I/O埠不够用,所以采用两片CPLD,一片专用于行扫描,另一片用于读取双口RAM IDT7132中的数据并进行列扫描。 列扫描电路的功能是在选中某行时送该行对应的列数据,由于采用的是8位微处理器,一次只能送一个字节的数据,即每次只能扫描8列。本设计中,采用8550三极管矩阵驱动方式,从而节省了大量控制信号引脚资源。 独立扫描模块的功能是以双口RAM 为中介将单片机送来的资料在LED 点阵显示屏上显示出来,其电路原理图如图3所示。单片机总线将处理好的待显示数据存放在U5(双口RAM IDT7132SA35JS中,然后U6(CPLD芯片ATF1508AS15JC84,用Verilog HDL语言编写其总线读逻辑)读取存放在U5中的待显示数据并驱动显示屏。整个显示屏为128×32点阵,一次扫描一个字节即8位,为此全屏显示需要128×32÷8=512字节。将地址线A9R、A10R 接地,这样只允许访问U5中的低512K 字节。 CA0~CA8是CPLD 输出到U5中的地址总线,CD0~CD7是从U5读出数据的数据总线。 J1是行扫描信号接口,CH0~CH4 为行扫描计数器输出信号,时钟信号可从CLK 输出给行扫描计数器。 J2为列扫描控制信号V0~V7输出接口。 DR0~DR15为一色的列选通控制信号输出,由于I/O端口引脚不够,所以另一色的列选通信号采用译码电路译码输出,用J3的四线输出。 CON1为JTAG 接口,J6为时钟源选择接口,可接单片机的ALE信号,也可接有源晶振CR2的输出。有源晶振CR2相当于一信号产生电路,只要其2脚接地,4脚接电源,3脚就有额定的输出波形。 由于采用CPLD 设计扫描逻辑,所以扫描逻辑的关键不再取决于硬件连接,而是取决于芯片的设计。[!--empirenews.page--] 1.3 基于单片机的通信与信号处理电路 本系统采用ATMEL公司的8位单片机AT89C52,主要完成数据处理、存储和通信功能,其原理图如图4所示。 U4是AT89C51单片机;U3是地址锁存器,用来锁存单片机的低8位地址信号。因为要显示的数据量很大,特别是当设计复杂的显示效果时需要处理的资料量更大,而AT89C51内部缓存容量不足,所以扩展外部RAM,采用容量为8K字节的HM6264,即U7。 U2是容量为8K字节的EEPROM 28C64,用来存储字模数据,而不用作程序内存。U5是双口RAM,U1是将RS232电平转换为TTL电平的电平转换器。 PC机将欲显示的字或图形的点阵数据通过串口送到单片机,单片机将其存储在EEPROM(U2)中,然后再根据显示要求对这些数据进行特定的处理,处理完后存储在双口RAM(U5)的特定地址,供扫描模块扫描取数进行显示。为了便于编写串行通信程序,使用振荡频率为11.0592MHz的晶振CR1 和C5、R1及SW1组成的复位电路。 [!--empirenews.page--] 2 软件设计和编写 2.1 主控电路CPLD芯片设计与调试 主控电路的功能是读取双口RAM中的数据并通过译码逻辑电路将数据显示在LED点阵显示屏的特定位置上。因为只用到单片机的一部分功能,所以使用CPLD芯片将MCU中的总线读控制器及其外围译码逻辑电路集成在一起。如若采用传统方案,就必须采用多片芯片;而使用CPLD后,只用一片芯片就可以实现所要的功能。总线读控制器是产生时序的电路,需根据内存的读时序进行设计,只有保证正确的时序才能读出数据。双口RAM的读写时序和普通RAM的读写时序基本相同,如图5所示。 CE(芯片使能)是片选信号,在片选信号从高变低之前必须输出地址信号给双口RAM,然后再用读信号去控制OE(输出使能)端,在OE信号由高变低后,数据总线上的数据有效,即可控制读出数据并译码输出。 复杂的时序电路用硬件描述语言描述,一般是用有限状态机来描述。有限状态机是时序电路通用模型,任何时序电路都可以表示成有限状态机。从本质上讲,有限状态机是由寄存器与组合逻辑构成的时序电路,各个状态之间的转移总是在时钟的触发下进行的。针对图5所示的读时序,可列出如图6所示的各种状态的转换图。用Verilog HDL语言描述时可用带有always语句的case语句建模,状态信息存储在寄存器中,case语句的多个分支包含每个状态的行为。在这里将读时序分为S0、S1、S2、S3四个状态,其工作方式如下: 步骤S0在RAM的片选CE 使能之前输出地址; 步骤S1选中RAM,输出读信号; 步骤S2行计数器输出,读出RAM的数据并反相输出; 步骤S3片选禁止,读禁止,地址计数器加1。 译码输出逻辑电路主要是提取地址计数器的计数输出。在某个状态下,行地址计数器输出低5位数据,位译码输出高4位数据并译码输出16个位选信号。 时序电路中一般留有复位信号,当复位端为1时,地址计数器复零,地址输出复零,片选。读控制信号置1,使状态机回到状态S0。 2.2 行译码CPLD芯片设计 行译码器的功能较主控电路来讲相对简单,它是将主控电路的行计数器输出的6位二进制数据译成32行的行选通信号,去控制行驱动管驱动行输出。这是一个纯组合逻辑电路,使用Verilog HDL 语言描述的always语句和case 多分支语句即可实现此功能。 2.3 单片机的C程序设计 在本系统中,单片机的功能主要是负责通信与数据处理。通信即通过串口接收来自PC机的数据并存储在EEPROM中;数据处理即从EEPROM中取出数据并根据要显示的效果进行软件处理,再存放在双口RAM中。在本系统中,因单片机及外围电路只负责通信和数据处理,对实时性要求不高,因此用前后台系统进行软件设计就能达到要求。本系统采用嵌入式操作系统RTX51TNY(KEIL C平台自带的免费的微实时内核)。软件主要由PROCESS.C和SERIAL.C两个档组成。PROCESS.C包含三个任务:任务0,初始化;任务1,静态显示;任务2,左移显示。 SERIAL.C是串口中断程序$静态显示的算法较简单,只要将EEPROM中的字模数据存放到双口RAM中的特定位置即可。左移显示则需要将字模数据每个字节左移,然后存放在双口RAM的特定位置。

    时间:2011-07-05 关键词: LED cpld system embedded 设计教程

  • 交叉编译qt-embedded-linux-opensource-src-4.5.1源码

    首先要有配置好的环境,本文使用的编译环境如下: 主机系统:Ubuntu 8.10 主机编译器:gcc 版本 4.3.2 交叉编译器:arm-softfloat-linux-gnu-gcc 软件资源:qt-embedded-linux-opensource-src-4.5.1.tar.gz qt-x11-opensource-src-4.5.1.tar.gz 因为一般嵌入式设备上都是在framebuffer的方式,在X11上就是用qvfb 来模拟framebuffer的,我们平时开发也都是在PC上完成的,所以我们需要先安装X11版的Qt来获取qvfb这个工具。嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。 一、下载 qt-embedded-linux-opensource-src-4.5.1.tar.gz qt-x11-opensource-src-4.5.1.tar.gz 二、编译安装qt-embedded # tar -zxvf qt-embedded-linux-opensource-src-4.5.1.tar.gz # cd qt-embedded-linux-opensource-src-4.5.1 # ./cONfigure -embedded x86 -qvfb # make # make inSTall qt-embedded 被安装在这个目录下/usr/local/Trolltech/QtEmbedded-4.5.1 设置环境变量: # vi ~/.bashrc 把下面的加上去 export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1 export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/bin:$PATH export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/lib:$LD_LIBRARY_PATH 至此,qt-embedded安装完毕 三、编译安装qt-x11 # tar -zxvf qt-x11-opensource-src-4.5.1.tar.gz # cd qt-x11-opensource-src-4.5.1 # ./configure # make # make install qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.5.1 编译qvfb: # cd qt-x11-opensource-src-4.5.1/tools/qvfb # make 把生成的qvfb复制到qt-embedded的bin下,如 # cp qt-x11-opensource-src-4.5.1/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.1/bin 至此,qt-x11安装完毕完毕 四、测试 # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/ # qvfb & # ./chip -qws 随即我们就可以看到qt自带的例程图像了。

    时间:2012-08-14 关键词: Linux Opensource embedded QT 4.5 src 设计教程

  • 微软构建嵌入式智能系统 打造Embedded产品蓝图

    CNET科技资讯网 11月21日 北京报道(文/孙莹)传统的嵌入式系统发展已有40多年的历史,微软从1996年开始涉足嵌入式市场,从Windows CE到Windows Embedded,相继推出了各种Windows嵌入式系统。 与此同时,嵌入式领域出现了两个主要的变化:文字处理、芯片处理的能力不断加强,速度更快;体积更小,价格更加便宜,互联互通的能力不断加强。而“物联网”概念的提出,更成为嵌入式市场发展的里程碑事件。而云计算的涌现,也为嵌入式系统和设备的应用开启了一片新的天地。 在物联网世界里,有不同的专用设备,并形成一个网络,大家互相分享各种数据,这样一种由专用设备组成并遍布全球的网络,就叫做物联网。而这些专用设备多种多样,可以是一个ATM机,也可以是一个传感器,而世界上这样的设备数量以亿计算。 根据IDC分析,互联互通的终端设备,从现在到2015年数量将翻番,再过五年,数量又会再翻一番。数据显示,现在整个智能系统市场价值大概在5200亿美元,这是一个非常巨大的数目。如此迅速的增长中很大一部分贡献,都来自于亚太地区,特别是中国,中国今年IT支出比去年增加了20%。预计到2015年,整个智能系统的推动因素,1/3都将来自亚洲。 微软嵌入式部门项目管理总监Ben Smith表示,微软对于嵌入式未来的一个愿景是通过云计算将Windows延伸到各种专用设备,现在我们正面临着从嵌入式设备向智能系统的转变。 智能系统的属性和演变 Ben Smith介绍,把整个智能系统分解,可以分为六个关键的属性(key attributes),前两个属性是基础因素,包括明确的身份鉴定与安全性,不论是设备层面还是云环境的层面,这两个因素都是非常重要的;下两个属性就是连接和管理,就是通过云计算把每一个设备有机地连接起来,互联互通,通过IT组织进行有效地管理。最后两个属性,一个是用户的体验,一个是分析的能力。 对于用户体验,一般有两种不同的类型,一种是体感触摸,通过手姿和话音控制;一种是应用平台,实时地把客户的需求反映出来。这一点非常重要,它真正地把各种智能系统的信息提取出来,为企业的应用服务。 智能系统的演变过程分为三个阶段,第一阶段,每个专用设备(包括各种终端设备以及专用设备)都有自己的操作系统,而这些设备本身会搜集各种数据;第二阶段:把信息、数据从设备提取出来,放到服务器上;第三阶段:不光是服务器,还可以提取出更多的信息用在其他设备上以及企业后端,通过对信息的分析我们能有更好的洞察力,帮助企业制定决策。 构建一个智能生态系统 Ben Smith解释称,微软嵌入式和整个智能系统的未来蓝图主要有三个方面:第一、把不断更新的Windows系统扩展到专用设备,持续利用创新来推动Windows Embedded;第二、数据和服务的平台,推动机器到机器的数据的传输,一直传输到企业后台;第三、与OEM厂商结成亲密合作伙伴关系,与独立软件供应商,和企业开发部门,共同研制为企业所量身定制的各种各样的设备。通过这样一个生态系统,大家都能够实现共赢。 他强调,微软提供的是一种非常与众不同的操作系统,包括Windows Embedded Enterprise,Windows Embedded Standard,还有Windows Embedded Compact在内。微软与合作伙伴携手,提供的不光只是一套操作系统,而是一个高度互通互联的生态系统包括开发商的体验、应用平台、一个统一的可信赖的平台,从操作系统一直延伸到服务器,把所有这些都同时带到市场。微软与大规模的合作伙伴、OEM、企业一起合作,形成了一个良好的生态系统。 注重客户需求三大原则 Ben Smith表示,微软智能系统未来蓝图非常注重客户的需求,要让客户能够从设备、操作系统和应用三方面搜集和抓取数据,实时地根据数据来做出决策,实现各种数据的互联互通,让它在各个设备之间自由流动,实现商业智能。 此外,他还提到,微软与合作伙伴合作有三大原则,第一、推动企业的业务发展,为其提供一个统一的、共享的可信任的平台;第二、分类适应不同业务需求的合作伙伴和OEM厂商;第三、利用数据更好地扩展系统的智能。 智能系统技术已经存在 其实,现在市场上的专用设备各种各样,像使用Windows Embedded Standard的磁共振成像、瘦客户机,像用于信息厅的Windows Embedded POS,像基于Windows Embedded的自助服务机等等,都可以通过一个嵌入式终端来进行,而利用Windows Azure,还可以把所有专用的设备集成到云端,。虽然智能系统的形成才刚刚开始,但是它的很多组成部分已经存在了。 Ben Smith强调,智能系统看起来是一个新生事物,但构成智能系统基础的各种技术并不是新的,它们早已存在。这只是一个开始,微软今后还要仔细考虑如何更好地来从技术上推动OEM合作伙伴,包括独立软件设计商、开发商等共同发展,更好地实现智能系统的蓝图。 区别于传统嵌入式系统 谈及智能系统和传统嵌入式系统的区别,Ben Smith认为,传统的嵌入式系统只是单纯为了一个具体的专门的目的而生产,而智能系统把专用设备产生的数据抓过来,利用这些数据推动或者通知其他设备,形成互动,然后把这个数据送到后端,后端的信息工作者,利用这些数据推动商业智能,真正地为企业决策提供洞察力。 Ben Smith指出,技术的下一波重点将是帮助企业获取并利用大量数据,为此,微软正在研发针对嵌入式设备和数据分析的解决方案,利用无孔不入的互联网以及云计算强大的计算能力来创建智能系统。为了实现与后端基础架构的紧密整合,我们正与Windows Azure紧密合作,以确保客户能将云计算无缝整合到其智能系统中,而驾于设备和云环境之上的Visual Studio 允许开发人员创建一个能与智能系统无缝连接的分布式应用程序。总而言之,Windows Embedded将支持所有最新的微软工具和框架,开发人员有一个从设备到云都支持的统一的可信赖平台来进行开发工作。 数据如何能转化为金钱 Ben Smith称,整个世界,所有系统和设备互联以及它们之间流动的各种信息,能给我们提供很多资源,为我们采取决策和行动提供洞察力,这样的组合成效绝对大于各个系统的简单相加。在这样一个智能系统中,数据就变得非常有价值。 智能系统如何让数据转化为金钱?Ben Smith解释称,首先针对嵌入式设备本身,对于设备本身的运营情况、操作系统表现及用户体验的数据进行搜集;然后从设备上搜集数据、存储数据、处理数据;下一步通过有线、Wi-Fi、手机等各种移动设备进行互联互通,把这些数据和后台的服务器连接在一起;接下来关键的一点是,在后台利用已经搜集到的数据进行分析,来看看如何通过对系统的改进,使用户的体验更上一层楼,从而推动并提供更多的商业价值并更新设备使其表现得更为出色。 懂得明智地利用智能系统的公司,能迅速地从设备中获得数据,然后采取积极行动。在这个富有数据的智能系统世界里,各种系统不断改进,不断演变。这一切都是由数据驱动的,正由于这个原因,“数据”拥有非凡的价值。 微软嵌入式产品的蓝图 据介绍,微软Windows Embedded的各种产品蓝图,未来会与智能系统密切关联。明年第一季度,开发商们将能够得到Windows 8预览版,在Windows 8推出后的一个季度里,微软将呈现出Windows Embedded Enterprise v.Next,在推出Windows 8三个季度后,微软将发布Windows Embedded Standard v.Next。 继2011年10月更新了Windows Embedded Compact 7之后,微软将于2012年下半年推出Windows Embedded Compact v.Next,同时Windows Embedded Compact 7也会支持Visual Studio 2010。 微软最近还推出了Windows Embedded Device Manager,就像过去管理PC一样,用同样的办法,来管理各式各样Windows嵌入式专用设备。 此外,微软还推出了一个叫做StreamInsight的产品,能帮助企业实时地监测多种来源的非结构性数据,提供分析和做决策,而不需要IT部门的额外投入,帮助客户从传统的服务器,转到云中的虚拟服务器,并可直接访问公有云和私有云。 Ben Smith说,通过微软已有的各种嵌入式产品线,加上即将要发布的产品,我们已经构建了一个即将到来的“智能系统”。    

    时间:2011-11-23 关键词: 产品 微软 嵌入式 embedded

  • 风河于“Embedded World 2012”呈现嵌入式云计算未来蓝图

    全球嵌入式及移动应用软件领导厂商风河宣布,在德国纽伦堡举行的“2012年嵌入式系统暨应用技术论坛”(Embedded World 2012)上发表演讲,并聚焦探讨嵌入式云端应用之未来蓝图。风河在本次展会所发表的多场演讲,乃至于展位上演示的一系列产品以及各项实际客户应用,也都紧扣这个主题。 风河在2012年嵌入式系统暨应用技术论坛中共有八场公开演说,内容着重于剖析产业新兴趋势以及伴随而来的各项全新挑战。演讲主题包括:嵌入式云应用、设备与信息传输安全性、Android在智能手机之外的应用发展、行业安全标准IEC 61508认证流程、如何为工具取得ISO 26262功能安全标准认证、如何有效率地将多核心及虚拟化技术应用于车载系统中。 以下是风河将发表之公开演说的主题大纲: 云端应用 时间:3月 1号 09:45 | 讲者:风河资深行销副总裁Jim Douglas 本场演讲着重于云计算将如何影响现有的网络拓朴以及未来产品的操作需求。此外也探讨原本各自独立运作的传统嵌入式系统,一旦转变为高度相互连结的智能系统,该如何继续确保系统安全无虞。 嵌入式设备及资料传输之安全性 时间:2月 29号 13:00 | 讲者:风河系统架构师Hans Jurgen Rauscher 本场演讲探讨嵌入式设备以及储存于云端之信息所面临的安全威胁;以及讨论如何在产品开发及测试过程中,进一步提升设备的安全防护能力。 Android在智能手机之外的应用发展 时间:3月 1号 10:00 | 讲者:风河资深技术专案经理Jonas Dietsche 本场演讲带领大家思考Android 在智能手机以外领域的发展潜力,并实际分析探讨Android 在现今汽车、工业、医疗等市场的应用现况。 利用虚拟化与多核技术整合车用ECU之挑战与解决方案 时间:3月 1号 10:00 | 讲者:风河资深技术专案经理Peter Kleiner 本场演讲深入探讨整合车用引擎控制单元(ECU)或驾驶人辅助功能与车载信息娱乐系统(IVI)相结合时可能面临的挑战。 多核技术已进入嵌入式世界 时间:2月 29号 16:00 | 讲者:风河应用工程师(FAE)经理Joachim Hampp 本场演讲探讨如何根据不同应用,以最优化策略善用多核技术以及多核处理器设计,并有效避免设计上的陷阱。 符合IEC 61508规范的芯片上冗余架构 时间:2月 29号 13:30 | 讲者:风河工业应用研发经理Andreas Buchwieser 本场演讲探讨关键应用方面,关于功能性安全事项的各种处理方法,特别是与IEC 61508标准规范相关者。 如何为工具取得ISO 26262认证 时间:2月 29号 10:00 | 讲者:风河工具专员Marco Reiling、Validas AG / Oscar Slotosch博士 介绍ISO 26262功能安全认证需求,以及如何为旗下工具取得此一认证核可。 不可不知的IEC 61508规范认证要点 时间:2月 29号 12:00 | 讲者:风河技术专案经理Philipp Michel 本场演讲主要探讨在现今的嵌入式世界中,为何关键性安全解决方案越来越显得重要。 风河资深营销副总裁Jim Douglas表示:“嵌入式产业正持续演进,新兴的云计算以及正在进行中的移动应用革命,已经使得嵌入式产业、IT产业以及消费性电子产业之间的界线渐趋模糊。风河正协助业界推动此一演进,本次2012年嵌入式系统暨应用技术论坛正好提供一个理想的平台,让我们有机会和客户以及开发者进行直接对话,并针对此一演进趋势深入讨论。” 风河在2012年嵌入式系统暨应用技术论坛中的摊位实地展出下列项目: 航天与国防应用:展出以Wind River VxWorks 653平台为基础的航电仪器与相关应用。 汽车应用:展示相容GENIVI标准的车载信息娱乐系统,让您了解如何透过Wind River Hypervisor实现多操作系统运行。 嵌入式云应用:展出一项智能家庭应用中的物联网传输技术。 工业应用:展出以VxWorks解决方案为基础的自动化设备及能源设备。 医疗应用:展出借助“Wind River Platform for Android”所设计的医疗用平板电脑;这类平板电脑将可作为家用行动健康照护设备。 网络应用:展示高性能网络加速软件平台,以及更快、更聪明也更安全的数据封包处理工具套件。

    时间:2012-02-29 关键词: world 2012 风河 embedded

  • ADI推出CrossCore Embedded Studio

    21ic讯 最近推出适用于Blackfin®和SHARC®处理器的下一代软件开发平台CrossCore® Embedded Studio (CCES)。CCES采用行业标准开源Eclipse环境开发而成,支持访问具有专有和开源工具及技术的丰富生态系统,从而缩短产品开发周期,显著加快产品上市。 CCES为Blackfin和SHARC开发人员提供世界一流的C/C++和汇编语言编辑环境,提供驱动器和服务支持插件,包括以太网、USB、算法软件模块、操作系统、文件系统等。CCES还提供易于使用的集成多核开发和调试功能。 除了提供吸引人的IDE(集成开发环境)体验之外,CCES还提供Micrium的嵌入式软件组件支持,例如uC/OS-IIITM Real-Time Kernel、uC/USB DeviceTM Stack和uC/FSTM File System。这使软件开发人员能够访问使用Micrium的严格开发流程开发的业界领先实时操作系统,以实现稳定的运行,并达到严格的编码标准,提供清晰和简洁的文档。 ADI公司软件工程设计和工具总监David Lannigan表示:“开发CrossCore Embedded Studio旨在为Blackfin和SHARC用户提供基于Eclipse的IDE的易用性和强大功能,以及ADI公司经过市场验证的成熟代码生成技术、算法和系统软件库。我们与Micrium进行了非常密切的合作,在CCES平台上利用他们的技术,通过这种方式,为他们的操作系统和驱动器提供代码生成、配置和调试功能。” Micrium公司创始人、CEO兼总裁Jean Labrosse表示:“Micrium非常高兴能与ADI公司合作,ADI公司现在分销和支持全球最受欢迎的实时内核(uC/OS-III),以及我们的一些最受欢迎的RTOS组件,包括我们的嵌入式USB设备堆栈uC/USB-Device和嵌入式文件系统µC/FS。借助ADI公司的世界一流IDE,工程师可以轻松地实现和配置这些经过市场验证的可靠嵌入式软件组件,从而节省宝贵的产品开发时间。” Blackfin和SHARC处理器用户可以获得多个级别的CCES许可,首先是995美元的单用户节点锁定许可。

    时间:2012-09-24 关键词: adi embedded studio crosscore

  • 微软嵌入式Windows Embedded 8:进入智能新领域

     云计算、大数据和连接设备,这三大领域就是未来商界企业信息和通讯技术 (ICT) 发展的三大关键。据 IDC 称,在未来五年,预计亚太大数据市场将为以 46.8% 的增长率发展。而到2016 年,亚洲智能系统市场收入将达到 4770 亿美元,设备将近 7 亿个单位。这将占据全球智能系统市场的三分之一。亚洲公司将在大数据浪潮中进入智能系统时代。 那么,什么是智能系统? 微软公司和行业伙伴们一起定义了智能系统六大属性,包括互联性、安全性、身份可管理性、用户体验和分析能力。早在1996年,微软就推出了第一款针对嵌入式市场的产品Windows Embedded CE 1.0。从1996年到2012年,随着技术发展不断前进,微软不断创新,为零售、汽车和医药等行业量身定制相关的嵌入式设备智能操作系统。目前,微软是为数不多能够基于这六大属性,提供一系列的产品、设备和操作系统,来形成一个完备的智能系统的公司之一。亚太地区一直是备受全球关注的市场,微软也一直相信这个巨大市场的潜力依然有待完全激活。 面对这样的市场机遇和挑战,微软于11月14日在北京公布了Windows Embedded 8 以及Windows Embedded Compact 2013的产品路线图。 Windows Embedded 8包括一系列基于设备的操作系统,包括Windows Embedded 8 Standard, Windows Embedded 8 Pro 以及 Windows Embedded 8 Industry。每个版本都有一个独特的功能集,包括智能系统中跨硬件、软件和服务的结构单元——即,设备和身份管理的能力,连接设备的呈现能力,提供丰富的触屏功能和用户体验,提供安全并能够分析数据的设备。 与此同时,Windows Embedded 8中集成了与微软桌面操作系统最新版本同样的创造力和想象力。这也是Windows Embedded 8统一改名整合到Windows 8产品链里的原因。合作伙伴和企业将受益于许多与Windows 8相同的功能 ——最值得注意的是,触屏和手势的使用将给专业设备使用带来更丰富、更自然的使用体验,比如:POS系统、医疗设备和车载技术。另外,因为支持Visual Studio2012,客户可以在既有的投资上继续打造跨各种平台的无缝智能体验—— 从硬件到软件和服务。随着互联网的发展,随着互联性的连接,随着云端的连接不断地提升,所有嵌入式的设备都会变得互联互通。当Windows Embedded 8全系列产品完整推出以后,在云服务业务发展方面还会加速。这次嵌入式系统的一个重中之重,就是设备是已经为云做好准备的。 而在此之前,Windows Embedded系列产品在亚太地区,尤其是中国市场其实已经有了很多成功的尝试与合作。 银行ATM机是人们非常熟悉的银行及其终端客户的互动设备,各家银行都拥有自己的ATM网络。而中国民生银行(CMBC)希望的是将ATM机、客服终端以及专用设备之间实现完全的互联互通,所以他们选择了Windows Embedded和微软的.net开发环境,成功连接了4000台ATM机和30000台服务端设备,并最终把这些设备与其在北京的数据中心相连。这样一个智能系统的打造实现了银行运营效率的提高,也确保了这些设备的可维护性。提供给客户的产品创新落到了实处,TCO真正得到降低,用户体验也有很大提升。 东风日产汽车是著名的中日合资汽车制造商。根据用户长久以来的反馈情况,他们希望改善车载娱乐系统质量,使车载娱乐系统的用户界面变得更人性化,更自然,更用户友好化。因此东风日产开始使用Windows Embedded Automotive版本为基础支持车载系统。这样能够更好地把卫星影像数据,车上娱乐系统,还有更多的其他设备整合集成到一套预置车载系统中。这个基于Windows Embedded Automotive的信息娱乐系统取得了很大成功,在一定程度上很好地推动了东风日产汽车销量提高。 Windows Embedded 产品管理部总监 John Doyle 表示:“公司在亚太地区寻求海量数据为增长和效率寻求契机,而微软拥有的技术能帮助他们达成目标。结合利用专业知识和行业见解,微软与合作伙伴们一直致力于端对端解决方案的开发,为客户提供他们正在寻找的商业价值。” 这次的新产品也被视为微软转型为专注于服务加设备的公司的重要一步。微软承诺将通过将设备连接到后端或云中的软件和服务帮助实现物联网潜力的开发利用,并将这些数据转化为可操作的商业智能。云端、物联网、大数据、商业智能…在技术发展的前沿,或许Windows Embedded 8将真正把智能系统带入新的时代。

    时间:2012-11-29 关键词: Windows 微软 嵌入式 embedded

  • 微软嵌入式Windows Embedded 8全球巡演

    日前,微软Windows Embedded 8全球巡演在深圳举行,来自业内的广电运通、威创股份、广州高奈特、深圳迈瑞电子医疗等140名专家共济一堂,分享及体验嵌入式WIN8。威创IDB交互数字平台受邀参加此次巡演,其基于WIN8平台的签名软件VSignature在此次巡演首次亮相,引起现场观众的强烈关注。 此次巡演,微软全面解析了其创新功能,提出了智能系统应具备的六大属性,包括互联性、安全性、身份可管理性、用户体验和分析能力。 Windows Embedded 8包括一系列基于设备的操作系统,包括Windows Embedded 8 Standard, Windows Embedded 8 Pro 以及 Windows Embedded 8 Industry。每个版本都有一个独特的功能集,包括智能系统中跨硬件、软件和服务的结构单元——即,设备和身份管理的能力,连接设备的呈现能力,提供丰富的触屏功能和用户体验,提供安全并能够分析数据的设备。 作为行业领先的可视化解决方案提供商,威创股份带来了业界领先的交互式数字平台IDB,其签名软件VSignature在此次巡演上首次亮相,该软件基于WIN8平台上开发,完美融合了WIN8自带的触屏和手势体验,集照相及手写签名于一体,让人耳目一新,可以广泛应用于中大型的高端行业会议、企业及酒店会议等。IDB 交互数字平台配有全图形化的Workshop人机交互管理平台、交互式白板软件VBoard、海量图像演示和多媒体软件VtronMedia、网络投影软件VipExpress以及协同软件ECS,从操作界面到软件功能,无不将用户的各种应用场景、使用习惯考虑到细微处,可以全面满足从单个会议室的语音、视频、数据应用及多个会议室间的全面交互协同功能,完全满足会议、培训、产品演示、本地多媒体会议及远程视频会议等丰富的应用场景。 威创IDB 基于WIN8系统的签名软件,让与会者感觉新奇,大家纷纷签名留影,其书写的逼真与毛笔的笔锋不相上下,震撼了现场体验的观众。

    时间:2012-12-25 关键词: Windows 微软 嵌入式 embedded

  • GD32 MCU 荣获最佳硬件产品大奖

    GD32 MCU 荣获最佳硬件产品大奖

    兆易创新 GD32 MCU是中国高性能32位通用微控制器市场的领跑者,中国最大的Arm® Cortex®-M MCU家族,7年来先后推出了中国第一个Arm® Cortex®-M3、 Cortex®-M4、 Cortex®-M23内核通用MCU产品系列以及全球第一个开源指令集架构RISC-V内核32位通用MCU产品,并同步为全球用户提供专业灵活的技术支持与交付服务。 参加Embedded World 2020的所有观众都可以与GigaDevice国际专家团队现场讨论新的技术趋势,探索GD32丰富的产品组合和方案演示,并体验全球首个基于RISC-V内核的32位通用MCU产品。 全球首个 RISC-V MCU 兆易创新是RISC-V Foundation国际基金会银级会员,也是中国开放指令生态(RISC-V)联盟和中国RISC-V产业联盟成员。GD32 MCU采用了优化的RISC-V商用内核提供了一系列全球领先的产品,通过提供高性能、易于使用且极具成本优势的创新型MCU,以及唾手可得的开发生态,帮助用户轻松实现非凡创意。 RISC-V开源指令集架构已成为产业热议焦点,而GD32VF103系列RISC-V内核MCU对于市场来说更是全新的具有里程碑意义的MCU产品。Embedded World 评审团给出的评价是,GD32 MCU家族在全球第一次采用RISC-V内核推出商用32位通用MCU新成员,完全不同于FPGA上实现的软核解决方案,而是类似基于Arm内核的通用MCU,并已全部量产供货。

    时间:2020-03-07 关键词: 2020 MCU 兆易创新 gd32 embedded award

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

技术子站

更多

项目外包

更多

推荐博客