基于嵌入式Linux和MiniGUI为平台的智能导诊系统设计

发布者:tnzph488最新更新时间:2018-03-19 来源: elecfans关键字:Linux  MiniGUI  智能导诊系统 手机看文章 扫描二维码
随时随地手机看文章

    通过研究基于MIPS架构的SMP8654芯片的硬件架构,并且利用芯片内部的图形加速引擎GFX的方式实现了具有高清视频显示和图片文字处理功能的播放器。系统以嵌入式Linux和MiniGUI为平台设计了智能导诊系统,提高了医院的导诊就医的服务效率。智能导诊系统能够播放医院相关的健康宣传资料、专家排班信息。
   MIPS微处理器是指无内部互锁流水级的处理器,它是由斯坦福大学的Hennessy教授领导的研究小组研制出来的。MIPS微处理器采用RISC(Recluced InstructionSet Computer)的设计原则,只支持有限的机器指令以及简单的算术指令,通过提供大量的内部寄存器减少内存访问次数。MIPS有32个通用寄存器,每个寄存器拥有32位的地址空间。系统通过研究基于MIPS架构的SMP8654芯片,设计和实现了高清播放器的视频播放以及图片字体显示功能。SMP8654解决方案是Sigma公司依据MIPS设计公司指导的全新设计方案,是Sigma公司专为满足高清视频播放应用需求而设计的全新芯片。和基于ARM架构的低端芯片相比,SMP8654的视频处理能力更加优越。

  1 基于SMP8654芯片的高清播放器

  1.1 SMP8654硬件介绍

  SMP8654芯片的内部,有一个MIPS 24kf系列的主CPU芯片,工作频率为500 MHz。在主CPU芯片的内部,具有1个32 KB的指令Cache和1个32 KB的数据Cache、2个可编程计时器以及3个独立的中断控制器和2路UART(Universal Asynchronous Receiver/Transmitter)。主CPU内部采用双总线结构,G-bus是主总线,CPU通过此总线访问外部功能单元的各状态寄存器,而对主CPU芯片内部的中断控制器、计时器等的访问是通过将L-bus映射到G-Bus上的方式进行的。主CPU内部有一个高效的乘除运算单元(Multiply/Divide Unit)及浮点数运算单元(FPU),还有一个增强的JTAG调试模块,用于调试应用程序及内核代码。

  SMP8654芯片内部有一个IPU(Interrupt ProcesslngUnit)。这个MIPS 24kf系列的32位处理器专门处理那些需要低延时的应用需求。它主要处理从视频处理子系统(Video Processing Subsystem)所产生的中断。它的时钟频率为333 MHz,而且还有16 KB的指令Cache和16KB数据Cache。

  SMP8654芯片包含两个DDR-DRAM控制器,每一个控制都支持高达512 MB的DDR2内存,这些外部存储器可以为音频、视频以及数据提供缓冲区,并且能存放硬件模块的临时数据。

  1.2 SMP8654的视频及音频处理

  1.2.1 视频解码子系统

  SMP8654的视频解码子系统(Video Decoder Subsystem)可以解码HDSMPTE、H.264、HD WMV9、AVS、MPEG1、MPEG2等视频格式的视频文件。SMP8654的视频解码系统执行特定解码算法,它是一种基于处理器和电路逻辑方式的混合架构。能同时解码的视频文件数目是由视频的格式以及所要呈现的分辨率决定的。SMP8654可以支持包括IPTV、AVCHD、MSTV的视频解码要求。视频处理引擎是一个16位的RISC处理器,视频解压算法的密集计算部分是由此部分处理的。

  1.2.2 视频处理子系统

  视频处理子系统(Video Processing Subsystem)从内存中检索图形和视频图像,将这些图像混合并且缩放至某个显示器所要求的分辨率并且将其呈现出来。视频处理子系统可以控制颜色、分辨率以及色彩饱和度,并且能处理视频数据转换,选择视频的输出模式(模拟信号的输出模式包括RGB、YPbPr)。视频处理子系统还有一个2D图形加速功能模块。智能导诊系统利用此GFX引擎实现了文字和图片的高清显示功能。

  1.2.3 音频处理子系统

  SMP8654芯片的集成音频处理子系统(Audio)Processing Subsystem)是一个为用户专门设计的32位数字信号处理器,音频的解码和操作是由这个专用的DSP处理的。这个DSP工作在333 MHz的时钟频率下,指令和数据是分开存储的,DSP通过系统总线取得指令,通过数据总线获取需要解码的音频数据。和基于ARM架构的处理器一样,它有一个32位的指令系统,同时与之对应了一个16位的指令集,通过Load/Store从内存装载数据到DSP的相关寄存器中进行处理。

  1.2.4 高清播放机硬件架构

  高清播放机硬件架构如图1所示。高清播放器实现的功能主要包括视频处理以及图片文字显示。硬件架构中的重要部分包括视频解码子系统、视频处理子系统、音频处理子系统。这里的HDD表示可选的硬盘,通过内部的SATA接口控制。提供对USB2.0协议支持以及802.11n协议的支持,也就是说播放器可以从网络中读取各种视频资源,从硬盘或者是USB等移动盘中获得数据。视频处理子系统中的GFX代表的是图形加速引擎,通过Sigma公司提供的SDK可以很容易地操作这些硬件,实现硬件加速功能。在智能导诊系统的软件部分,介绍了如何利用硬件特性加速文字和图片的绘制过程。在智能导诊系统中,医院HIS系统中的病人挂号信息通过TCP/IP传递到此硬件播放器,然后再由硬件播放器处理,将病人信息排队到相关队列中,这样病人就可以在专门的等候区休息等候了。

a.jpg


  2 基于嵌入式Linux和MiniGUI的主控程序

  2.1 嵌入式Linux

  Linux是一个完全免费的开源操作系统,内核可以被裁剪到134 KB左右。Linux是一个能够适应多种CPU和硬件平台的操作系统,裁剪之后的Linux系统用于这些设备中执行资源管理、任务调度、存储空间分配等任务。嵌入式应用系统的开发一般可以分为如下几个步骤:交叉编译工具的建立,Bootloader的编译和烧写,编译内核并移植到开发板,文件系统的编译和烧写。交叉编译是嵌入式系统开发中需要用到的一个常见技术,其主要特征是嵌入式设备上的可执行程序通常是在另外一台机器上编译生成的。通常将前者称为目标机器(Target),后者称为主机(Host)。主机拥有的资源丰富很适合在上面编译机器相关的代码,这种技术为软件的不同平台移植创造了便利条件。交叉编译工具配置在主机(Host)上编译及配置环境变量后,就可以用来编译Bootloader、内核和文件系统。Bootloader是一个启动加载Linux内核的固件程序,有点类似于PC机的BIOS程序,在完成硬件初始化以及内存映射等操作之后,通常会将外部存储介质上存放的内核镜像加载到RAM中,然后跳转到指定的内存位置执行。

  2.2 MiniGUI用户界面

  GUI(GraphICal User Interface)是指采用图形方式显示的计算机操作用户界面。系统中所要阐述的高清播放机上需要提供人机交互界面,控制诸如视频的暂停、播放、文件更新以及播放机的声音控制和开关机控制等图形界面。智能导诊系统中使用的图形用户界面采用的是MiniGUI。MiniGUI是一个跨平台的面向嵌入式系统的轻量级图形用户界面支持系统,可在Linux/μClinux、eCos、μC/OS-II、VxWorks、pSOS、ThreadX等操作系统以及Win32平台上运行,广泛应用于手持信息终端、机顶盒、工业控制系统、便携式多媒体播放器机等产品和领域。

  3 播放机软件系统设计

  3.1 智能导诊系统的软件架构

  SMP8654为应用开发提供分层服务架构,软件系统设计主要根据SMP8654分层服务模型,找出最优化的设计方案。智能导诊通过研究DCC的控制逻辑,及Sigma公司的SDK文档,设计出了如图2所示的SMP8654高清播放机的软件系统架构。智能导诊系统首先对硬件平台初始化,接着初始化有线或者无线网络(这部分主要作用是网络接口卡初始化操作,日志部分初始化是跟踪和调试应用程序的重要组成部分);接着创建MiniGUI主窗口,最后进入消息循环。

b.jpg

      当MiniGUI接收到MSG_CLOSE消息时,由HWNDDESKTOP向主窗口发送退出消息,至此程序结束,播放机被关闭;当播放机接收到图片显示命令时,将命令消息存入到消息队列中,这里要创建消息队列是因为MiniGUI在接收到用户的各种不同命令时,都会将命令解析并且存入到任务队列中,由任务派发器将任务发送到不同模块处理。MiniGUI的主程序会根据用户选择的视频及音频文件,选择将消息发送到视频解码进程处理,当用户选择打开某个高清的图片时,消息队列中会保留图片大小、图片格式、图片的显示时间等控制信息。这里要使用任务队列的原因其实很简单,分离出播放器的一个个任务,让不同的软件服务模块处理。如果要播放视频,调度程序会将任务队列中的视频播放任务派发给视频解码进程处理。如果要使用GFX引擎高效率绘制图片,则任务被分派到高清图片处理进程处理。

  智能导诊系统服务进程主要负责从医院HIS信息系统的接口函数中获得当前病人的挂号信息,并且通过TCP发送到高清播放机上,最后通过MiniGUI的Draw Text函数将相关病人信息以列表的方式显示在预先定义的排队队列中。这里的视频解码进程是独立的进程,主控程序和此进程的通信是通过Linux的消息队列机制实现的。消息队列是一种内核标示,两个进程之间的交互是通过调用msgsnd和msgrecv这样的函数实现的,只要两个进程的消息队列标识是一致的,进程之间就可以交互。当MiniGUI接收到退出消息时,会向视频解码进程发送退出消息,让视频解码进程清空所占用的系统资源。


c.jpg

     SMP8654分层服务模型如图3所示。最下面的一层是相关硬件,如CPU、视频解码器、音频解码器、并行I/O接口。中间的一层MRUA(Movim iento rectiline unitormemente acelerado)提供了访问这些硬件的抽象接口,另外DCC(Decoding Chain Control)是通过访问MRUA的接口实现对视频播放控制、音频解码的操作。最顶层是软件播放器,可以基于DCC实现网络流媒体应用,或者定制自己的软件播放器。

  3.2 利用图形加速引擎优化文字和高清图片显示

  DCC是为应用程序提供的编程接口,而MRUA面向底层硬件,为上层的DCC提供硬件抽象和功能接口。在深入理解了DCC是如何控制硬件显示文字、处理图片以及播放视频之后,智能导诊系统利用MRUA库函数直接操作硬件特性,加快字体显示、图片处理效率,以及提升视频播放等各方面性能。DCC提供的多个对象为应用程序完成实际的功能提供函数接口,这些对象包括:

  ①Route。可以将Route理解为某个具体的媒体内容(Content)到硬件视频混合器(Hardware Video Mixer)的数据通道,它只负责把具体的媒体内容传送到硬件视频混合器中。

  ②Surface。可以将Surface理解为视频对象层(Video Object layer)。视频信息,屏幕显示以及字幕组成了一个完整的Content。在每一个Route对象中,通常会存在相同类型的多个Surface对象。

  ③VideoSource。可以将VideoSource理解为一个专为Surface生成图片的生产者,这个生成者可能是一个硬件视频解码器(Hardware MPEG decoder)。

  ④AudioMixer。可以将AudioMixer理解为一个类似Route的东两,它代表的也是一个数据通道,只不过它只负责将AudioSource这个音频生产者生成的音频帧信息组合成一个输出。

  ⑤AudioSource。可以将AudioSource理解为音频帧的生产者。

  ⑥DemuxSource。它是一个可分离流,并且将数据发送到视频、音频解码器的一个对象。当然也可以将它理解为一个生成者,负责将流(stream)数据分离出音频和视频信息,并发送到相关处理单元处理。

  如图3所示,流解析器从内存中检索到与文件有关的信息之后,将数据流分解,然后组包成视频解码器以及音频解码器所处理的数据,并且交由DSP和Display Engine这样的设备进行处理。这些都可以由DCC控制,是由MRUA层抽象出的相关硬件功能。只要通过DCC层去控制相关硬件设备,便可以实现图片和文字的高清显示。下面将介绍如何通过DCC去控制GFX引擎实现图片和文字的显示。

  GFX在图中没有画出,它是某个具体的图形加速设备。当要播放一个高清的图片或者绘制文字时,通常要经过几个步骤:RUA实例初始化,DCC实例初始化,设置图片的显示窗口,初始化GFX引擎,执行绘制,清空资源并退出。下面以伪码的方式给出其具体实现过程:

  int main(int argc,char*argv[]){

  创建RUA实例;

  创建DCC对象实例;

  初始化图片的显示选项;

  初始化视频的湿示选项;

  初始化播放控制选项;

  从命令行参数获得欲显示的文件信息以及图片、视频播放控制选项(如果没有就使用默认值)

  装载相关硬件单元微码;

  创建硬件混合器Mixer;

  创建ScaIer对象;

  //scaler=EMHWLIB_MODULE(DispGFXMultiScaler,0);

  为当前的Mixer对象创建一个关联Scaler对象的索引;

  初始化GFX引擎;

  设置GFX对象的各通道属性;

  开始在GFX上投递绘制请求;

  关闭GFX引擎,并依次关闭DCC实例对象,RUA实例对象;

  }

  结语

  智能导诊系统基于MiniGUI和SMP8654的SDK完成了视频播放、文字图片显示的功能。基于MiniGUI的图形及文字绘制函数,如CreateLog Font、DrawText、LoadBitmap等的使用以及利用与硬件相关的图形加速引擎绘制图片和文件相结合的方式,增加了系统的图形绘制效果,提升了智能导诊系统性能。

  综上所述,系统基于MIPS架构设计实现了高清播放机所要完成的视频播放以及图片文字显示功能。通过研究基于MIPS架构下的高清播放机最终选择了速度比较好的高清播放机芯片SMP8654,使得视频处理更加稳定,图片的加速解码及显示的速度更快。基于此架构的系统,可以扩展到各种信息发布系统中,如医院的信息发布系统、车载娱乐系统,具有很好的应用前景。


关键字:Linux  MiniGUI  智能导诊系统 引用地址:基于嵌入式Linux和MiniGUI为平台的智能导诊系统设计

上一篇:基于MSP430单片机的彩色TFT液晶显示模块的应用
下一篇:基于STC12C65A60S2的空中花园室内空气更新系统的设计

推荐阅读最新更新时间:2024-03-16 15:57

linux驱动程序之电源管理之标准linux休眠与唤醒机制分析(一)
1. Based on linux2.6.32, only for mem(SDR) 2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.doc Linux系统的休眠与唤醒简介.doc 3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论 4. 基于手上的一个项目来讨论,这里只讨论共性的地方 虽然linux支持三种省电模式:standby、suspend to ram、suspend to disk,但是在使用电池供电的手持设备上,几乎所有的方案都只支持STR模式(也有同时支持standby模式的),因为STD模式需要有交换分区的支持,但是像手机类的嵌入式设备,他们普遍使用nan
[单片机]
<font color='red'>linux</font>驱动程序之电源管理之标准<font color='red'>linux</font>休眠与唤醒机制分析(一)
tiny4412学习(二)之移植linux-4.x支持设备树
硬件平台:tiny4412 系统:linux-4.4 文件系统:busybox-1.25 编译器: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320) uboot:友善自带uboot,见上节 实验参考摩斯电码的博客: http://www.cnblogs.com/pengdonglin137/p/5137941.html http://www.cnblogs.com/pengdonglin137/p/5143516.html 一、u-boot修改 1、更新交叉工具链 到:http://www.veryarm.com/arm-none-linux-gnueabi-gcc 下
[单片机]
嵌入式Linux的图像采集与显示
1 系统平台的硬件结构 本文使用的系统平台硬件功能框图如图1所示,该平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32b微控制器,资源丰富,带独立的16kB的指令Cache和16kB数据Cache,LCD控制器、RAM控制器,NAND闪存控制器,3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、Touch Screen接口,I2C接口,I2S接口、2个USB接口控制器、2路SPI,主频最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了16MB 16b的FLASH和64MB 32位的SDRAM,通过以太网控制器
[单片机]
嵌入式<font color='red'>Linux</font>的图像采集与显示
ARM Linux静态映射分析
在华清远见上课过程中,发现静态映射方面初学者比较难于掌握和理解,下面分析一下静态映射机制的原理并通过GPIO和USB、LCD等的静态映射作为例子来说明如何通过这种静态映射的方式访问外设资源。 内核提供了一个重要的结构体STruct machine_desc ,这个结构体在内核移植中起到相当重要的作用,内核通过machine_desc结构体来控制系统体系架构相关部分的初始化。machine_desc结构体的成员包含了体系架构相关部分的几个最重要的初始化函数,包括map_io,init_IRq, init_machine以及phys_io , TImer成员等。 machine_desc结构体定义如下: struct machi
[单片机]
ARM linux 建立页表过程
paging_init 用来建立页表,初始化zone的memory map void *zero_page; sort(&meminfo.bank, meminfo.nr_banks, sizeof(meminfo.bank ), meminfo_cmp, NULL); build_mem_type_table(); sanity_check_meminfo(); prepare_page_table(); map_lowmem(); bootmem_init(); devicemaps_init(mdesc); kmap_init(); top_pmd = pmd_off_k(0xff
[单片机]
基于嵌入式Linux与QT的汽车虚拟仪表设计
  摘 要:为了简化汽车内部控制系统,降低汽车制造成本,提高人车交互界面的友好度,设计并实现了一种新型的汽车虚拟仪表。采用以ARM 处理器S3C6410为核心的硬件平台和以嵌入式Linux系统为核心的软件平台,并在此基础上采用开放源代码的图形界面库QT开发仪表终端应用程序。经试验验证,虚拟仪表系统具有成本较低、界面友好、反应灵敏等特点,并在跨平台性、可扩展性等方面得到了显着改善。   0 引 言   仪表作为汽车整个系统中十分重要的部分,是提高汽车综合性能的重要方面之一。随着计算机软硬件技术、总线技术、电子技术等的快速发展,控制系统臃肿、接线布线复杂、占用空间大的传统电磁机械仪表渐渐被淘汰,虚拟仪表正以传统机械仪表无法比拟的速度迅
[单片机]
基于嵌入式<font color='red'>Linux</font>与QT的汽车虚拟仪表设计
基于ARM的矩阵键盘设计及其linux驱动实现
  1.引言   ARM微处理器已广泛应用于工业控制、消费类电子产品、通信系统等领域。矩阵键盘是一种常用的键盘形式,它将按键设计成M行N列,这样共需M+N根信号线,却可驱动M N个按键,大大节约了I/O资源。本文介绍了一种利用TQ2440开发板的GPIO口扩展5 4矩阵键盘的方法,并将所有按键重新布局成手持终端的键盘形式,方便操作。   2.硬件设计   本设计扩展5行4列的矩阵键盘,如图1所示。其中行线ROW1-ROW5连接S3C2440的中断引脚EINT8,EINT9,EINT11,EINT13,EINT14[1]。这些中断引脚本身连有10kΩ的上拉电阻,把中断引脚电平拉高,确保按键空闲时不会触发中断。列线COL1-COL
[单片机]
基于ARM的矩阵键盘设计及其<font color='red'>linux</font>驱动实现
AMX推出基于Wind River Linux的标准化Modero系列触摸屏面板
全球领先的设备软件优化(DSO)厂商风河系统公司(Wind River)日前宣布,AMX推出采用Wind River Linux平台的标准化Modero系列触摸屏面板。Wind River Linux是风河公司提供的业界领先的商用级Linux平台。AMX在与风河公司达成此次合作关系前,进行了一项全面的投资回报率(RIO)分析,结果显示采用Wind River Linux替代自行开发Linux平台,预计可节省近200万美元的成本。此外,采用Wind River Linux平台进行标准化产品开发,通过风河Workbench On-Chip Debugging工具集和全球顶尖的技术支持服务,AMX的工程师们可获得更高的开发和生产效率。 A
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved