MIPS架构的医院智能导诊系统设计
时间:07-21
来源:互联网
点击:
2 基于嵌入式Linux和MiniGUI的主控程序
2.1 嵌入式Linux
Linux是一个完全免费的开源操作系统,内核可以被裁剪到134 KB左右。Linux是一个能够适应多种CPU和硬件平台的操作系统,裁剪之后的Linux系统用于这些设备中执行资源管理、任务调度、存储空间分配等任务 。嵌入式应用系统的开发一般可以分为如下几个步骤:交叉编译工具的建立,Bootloader的编译和烧写,编译内核并移植到开发板,文件系统的编译和烧写。交叉编译是嵌入式系统开发中需要用到的一个常见技术,其主要特征是嵌入式设备上的可执行程序通常是在另外一台机器上编译生成的。通常将前者称为目标机器(Target),后者称为主机(Host)。主机拥有的资源丰富很适合在上面编译机器相关的代码,这种技术为软件的不同平台移植创造了便利条件。交叉编译工具配置在主机(Host)上编译及配置环境变量后,就可以用来编译Bootloader、内核和文件系统。Bootloader是一个启动加载Linux内核的固件程序,有点类似于PC机的BIOS程序,在完成硬件初始化以及内存映射等操作之后,通常会将外部存储介质上存放的内核镜像加载到RAM 中,然后跳转到指定的内存位置执行。
2.2 M GUl用户界面
GUI(Graphical User Interface)是指采用图形方式显示的计算机操作用户界面。系统中所要阐述的高清播放机上需要提供人机交互界面,控制诸如视频的暂停、播放、文件更新以及播放机的声音控制和开关机控制等图形界面。智能导诊系统中使用的图形用户界面采用的是MiniGUI。MiniGUI是一个跨平台的面向嵌入式系统的轻量级图形用户界面支持系统,可在Linux/ptClinux、eCos、
“c/os—II、VxWorks、pSOS、ThreadX 等操作系统以及Win32平台上运行,广泛应用于手持信息终端、机顶盒、工业控制系统、便携式多媒体播放器机等产品和领域 。
3 播放机软件系统设计
3.1 智能导诊系统的软件架构
sMP8654为应用开发提供分层服务架构,软件系统设计主要根据SMP8654分层服务模型,找出最优化的设计方案。智能导诊通过研究DCC 的控制逻辑,及Sigma公司的SDK文档,设计出了如图2所示的SMP8654高清播放机的软件系统架构。智能导诊系统首先对硬件平台初始化,接着初始化有线或者无线网络(这部分主要作用是网络接口卡初始化操作,日志部分初始化是跟踪和调试应用程序的重要组成部分);接着创建MiniGUI主窗口,最后进入消息循环。
当MiniGUI接收到MSG_CLOSE消息时,由HWND— DESKTOP向主窗El发送退出消息,至此程序结束,播放机被关闭;当播放机接收到图片显示命令时,将命令消息存人到消息队列中,这里要创建消息队列是因为MiniGUI在接收到用户的各种不同命令时,都会将命令解析并且存入到任务队列中,由任务派发器将任务发送到不同模块处理。MiniGUI的主程序会根据用户选择的视频及音频文件,选择将消息发送到视频解码进程处理,当用户选择打开某个高清的图片时,消息队列中会保留图片大小、图片格式、图片的显示时间等控制信息。这里要使用任务队列的原因其实很简单,分离出播放器的一个个任务,让不同的软件服务模块处理。如果要播放视频,调度程序会将任务队列中的视频播放任务派发给视频解码进程处理。如果要使用GFX引擎高效率绘制图片,则任务被分派到高清图片处理进程处理。
智能导诊系统服务进程主要负责从医院HIS信息系统的接口函数中获得当前病人的挂号信息,并且通过TCP发送到高清播放机上,最后通过MiniGUI的Draw—Text函数将相关病人信息以列表的方式显示在预先定义的排队队列中。这里的视频解码进程是独立的进程,主控程序和此进程的通信是通过Linux的消息队列机制实现的。消息队列是一种内核标示,两个进程之间的交互是通过调用msgsnd和msgrecv这样的函数实现的,只要两个进程的消息队列标识是一致的,进程之间就可以交互 ]。当MiniGUI接收到退出消息时,会向视频解码进程发送退出消息,让视频解码进程清空所占用的系统资源。
SMP8654分层服务模型如图3所示。最下面的一层是相关硬件,如CPU、视频解码器、音频解码器、并行I/0接口。中间的一层MRUA (Movimiento rectiline unitormemente acelerado)提供了访问这些硬件的抽象接口,另外DCC(Decoding Chain Contro1)是通过访问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;
创建Scaler对象;
//scaler=EMHWL1B MODULE(DispGFXMultiScaler,O);
为当前的Mixer对象创建一个关联Scaler对象的索引;
初始化GFX引擎;
设置GFX对象的各通道属性;
开始在GFX上投递绘制请求;
关闭GFX引擎,并依次关闭DCC实例对象,RUA实例对象;
}
2.1 嵌入式Linux
Linux是一个完全免费的开源操作系统,内核可以被裁剪到134 KB左右。Linux是一个能够适应多种CPU和硬件平台的操作系统,裁剪之后的Linux系统用于这些设备中执行资源管理、任务调度、存储空间分配等任务 。嵌入式应用系统的开发一般可以分为如下几个步骤:交叉编译工具的建立,Bootloader的编译和烧写,编译内核并移植到开发板,文件系统的编译和烧写。交叉编译是嵌入式系统开发中需要用到的一个常见技术,其主要特征是嵌入式设备上的可执行程序通常是在另外一台机器上编译生成的。通常将前者称为目标机器(Target),后者称为主机(Host)。主机拥有的资源丰富很适合在上面编译机器相关的代码,这种技术为软件的不同平台移植创造了便利条件。交叉编译工具配置在主机(Host)上编译及配置环境变量后,就可以用来编译Bootloader、内核和文件系统。Bootloader是一个启动加载Linux内核的固件程序,有点类似于PC机的BIOS程序,在完成硬件初始化以及内存映射等操作之后,通常会将外部存储介质上存放的内核镜像加载到RAM 中,然后跳转到指定的内存位置执行。
2.2 M GUl用户界面
GUI(Graphical User Interface)是指采用图形方式显示的计算机操作用户界面。系统中所要阐述的高清播放机上需要提供人机交互界面,控制诸如视频的暂停、播放、文件更新以及播放机的声音控制和开关机控制等图形界面。智能导诊系统中使用的图形用户界面采用的是MiniGUI。MiniGUI是一个跨平台的面向嵌入式系统的轻量级图形用户界面支持系统,可在Linux/ptClinux、eCos、
“c/os—II、VxWorks、pSOS、ThreadX 等操作系统以及Win32平台上运行,广泛应用于手持信息终端、机顶盒、工业控制系统、便携式多媒体播放器机等产品和领域 。
3 播放机软件系统设计
3.1 智能导诊系统的软件架构
sMP8654为应用开发提供分层服务架构,软件系统设计主要根据SMP8654分层服务模型,找出最优化的设计方案。智能导诊通过研究DCC 的控制逻辑,及Sigma公司的SDK文档,设计出了如图2所示的SMP8654高清播放机的软件系统架构。智能导诊系统首先对硬件平台初始化,接着初始化有线或者无线网络(这部分主要作用是网络接口卡初始化操作,日志部分初始化是跟踪和调试应用程序的重要组成部分);接着创建MiniGUI主窗口,最后进入消息循环。
当MiniGUI接收到MSG_CLOSE消息时,由HWND— DESKTOP向主窗El发送退出消息,至此程序结束,播放机被关闭;当播放机接收到图片显示命令时,将命令消息存人到消息队列中,这里要创建消息队列是因为MiniGUI在接收到用户的各种不同命令时,都会将命令解析并且存入到任务队列中,由任务派发器将任务发送到不同模块处理。MiniGUI的主程序会根据用户选择的视频及音频文件,选择将消息发送到视频解码进程处理,当用户选择打开某个高清的图片时,消息队列中会保留图片大小、图片格式、图片的显示时间等控制信息。这里要使用任务队列的原因其实很简单,分离出播放器的一个个任务,让不同的软件服务模块处理。如果要播放视频,调度程序会将任务队列中的视频播放任务派发给视频解码进程处理。如果要使用GFX引擎高效率绘制图片,则任务被分派到高清图片处理进程处理。
智能导诊系统服务进程主要负责从医院HIS信息系统的接口函数中获得当前病人的挂号信息,并且通过TCP发送到高清播放机上,最后通过MiniGUI的Draw—Text函数将相关病人信息以列表的方式显示在预先定义的排队队列中。这里的视频解码进程是独立的进程,主控程序和此进程的通信是通过Linux的消息队列机制实现的。消息队列是一种内核标示,两个进程之间的交互是通过调用msgsnd和msgrecv这样的函数实现的,只要两个进程的消息队列标识是一致的,进程之间就可以交互 ]。当MiniGUI接收到退出消息时,会向视频解码进程发送退出消息,让视频解码进程清空所占用的系统资源。
SMP8654分层服务模型如图3所示。最下面的一层是相关硬件,如CPU、视频解码器、音频解码器、并行I/0接口。中间的一层MRUA (Movimiento rectiline unitormemente acelerado)提供了访问这些硬件的抽象接口,另外DCC(Decoding Chain Contro1)是通过访问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;
创建Scaler对象;
//scaler=EMHWL1B MODULE(DispGFXMultiScaler,O);
为当前的Mixer对象创建一个关联Scaler对象的索引;
初始化GFX引擎;
设置GFX对象的各通道属性;
开始在GFX上投递绘制请求;
关闭GFX引擎,并依次关闭DCC实例对象,RUA实例对象;
}
MIPS 嵌入式 Linux ARM 总线 电路 显示器 DSP USB VxWorks 机顶盒 解码器 相关文章:
- 构建高性能的生物电信号采集系统前端模块(05-12)
- 采用 MAXQ2010的低功耗医学数据记录仪的设计(03-08)
- 基于ARM核的ADμC7024在脉搏血氧计中的应用(11-24)
- 基于TMS320LF2407A DSP心电监护系统(11-27)
- 远程心电医疗信号监测系统设计(01-13)
- 基于MSP430F149和nRF905的无线血氧指夹的设计(01-13)