嵌入式操作系统
1、 引言
随着医疗诊断仪器小型化、便携化的进程,高性能32位微处理器正在越来越多地应用于各类小型医疗影像设备中,但是如何利用这些微处理器传送和处理实时图像,却是一个丞待解决的问题。从ARM 7系列开始,ARM处理器就集成了CMOS(Complementary Metal Oxide SemiConductor)图像传感器接口,这为解决上述问题提供了可能。处理器可以通过CMOS图像传感器接口适应不同的CMOS图像传感器。通过CMOS接口,图像数据将被送入到系统的CMOS图像通道中。CMOS图像通道为CMOS图像传感器接口与系统AHB(Advanced High peRFormanceBus)总线之间的连接通路,由CSI (CMOS Sensor Interface)和PRP(Pre-Processor)组成。该通道专门用于高速图像传输,提供了多种图像格式输入和传输方式,并能在通道内进行颜色空间变换、窗体调整等多种操作,是诊断图像以及其他图像应用传输的理想通道。
本文讨论了一种基于32位微处理器ARM9E和嵌入式Linux的便携式超声诊断仪的解决方案。系统以CMOS图像通道为诊断网像的传输通道,将采集的超声图像信息送人系统总线,在嵌入式Linux操作系统平台上,实现了诊断图像的实时显示和静态图像的大容量非易失性存储,所实现的诊断系统不仅功能强大、扩展容易,而且还兼顾了小型化的需求。
2、 系统构架
本文设计的便携式超声诊断仪系统结构如图l所示。用户通过输入设备向系统输入控制命令,完成超声图像的采集、显示、保存等相关处理。当执行扫描命令时,系统通过串口向以FPGA为核心的超声图像采集模块发送图像采集命令,控制超声探头扫描驱动电路和信号发射接收电路同步动作。接收的超声信号在超声图像采集模块中经放大、模数转换后送人FPGA,完成数字扫描变换(DCS)和插值运算后,得到二维的B超图像信息。将该图像信息进行格式转换后通过ARM芯片CMOS接13送人控制系统,经图像通道传输后,完成在LCD(Liquid Crystal Display)上的实时显示,同时可拔插的大容量SD(Secure Digital Memory Card)卡可对所需的图像进行保存。保存的图像信息可以进行离线处理,比如打印、电影回放、远程浏览等。
3、 系统硬件设计
3.1硬件框图
本设计选用以ARM926EJ-S为内核的Freescale i.MX21作为处理器,控制系统的硬件框俐如图2所示,系统是以ARM处理器为核心,外加兼容的硬件外设。超声采集模块完成图像的采集和传入,LCD把传人的图像信息实时的显示出来,通过SD卡把大量的图像数据保存起来以便后期处理。通过外加USB HUB。可将鼠标、键盘、打印机接入系统。本地储存的诊断图像数据可以通过快速以太网控制处理器DM9000送入网口,通过以太网实现远程浏览。
3.2 CMOS图像通道
本控制系统CMOS图像通道框图如图3所示,超声图像数据的传入利用i.MX21芯片的CMOS图像传感器接口来实现。该接口支持的图像数据类型包括RGB565、RGB888、YUV422、YUV444等。不同类型的图像数据在CMOS口经过CSI 8位采样后,封装成32位图像数据送人CSI RxFIFO。CSI RxFIFO中的图像数据根据类型的不同,送显和存储的硬件和软件实现方法也是不同的。
(1)若类型为RGB565,且图像窗体不需要调整(显示设备单一)。图像数据可以通过DMA通道直接传送到显示缓冲区,如图3中通道①;
(2)若类型为RGB565,且图像窗体需要调整(显示设备多样化),图像数据则需要经过前处理器(PRPl,在PRP中调整图像大小送入显示缓冲区,如图3中通道②;
(3)若类型为YUV422,图像数据则需要经过PRP,在PRP中调整图像大小并转换成合适的颜色空间后送人显示缓冲区,如图3中通道②;
(4)若类型为YUV444、RGB888,图像数据则需通过软件编程实现图像数据的颜色处理和转换后送入PRP调整窗体,最后送入显示缓冲区,如图3中通道③。
本设计为使LCD接口输出的图像兼容QVGA、VGA、SVGA、XGA等尺寸的显示屏,且兼顾图像传输的速率、图像显示的质量,我们使用RGB565格式,选用罔3中通道②。因此需将超声图像采集模块所采集的图像信息构造为RGB565格式,故CMOS接口输入的罔像信息时序图如图4所示。
图中Vsync是场I司步信号,Hsync是水平同步信号,Pixelk是象素数据输入同步信号,D [7:0]为象素数据信号。Vsync和Hsync为低电平时即可开始有效图像数据的输入,Pixelk上升沿的到来则表明进行数据输入,Pixelk的一个周期将完成一个图像数据字节的输入。在传输一帧图像过程中,即Vsync的一个周期内,Hsync会出现H次(H为行数)高电平。在Hsync的一个周期内,Pixelk将出现W*Pixelbytes次(W为列数,Pixelbytes为每象素占用字节数)高电平。而下一个Vsync信号上升沿的到来则表明一帧分辨率为W*H的图像输入过程的结束。
CSI RxFIFO中的图像数据送入PRP进行窗体调整后,通过AHB(Advanced High peRFormance Bus)进入内存,PRP窗体的调整通过设置PRP控制寄存器实现。
3.3图像显示及保存
FrameBuffer是Linux为显示设备提供的一个接口,它是显存抽象后的一种设备.对该设备进行读/写则可直接对显存进行操作。通过驱动程序可为FrameBuffer在文件系统中创建一个设备文件fb0,用户要完成对FrameBuffer的图像输入,只需完成对fb0图像的写入操作。当LCDC(LCD Controller)中的Pixel FIFO为空或者部分为空时,LCDC要求从基于突发传输模式的FrameBuffer中取要显示的图像数据。当LCDC的传输请求被存储控制器中过的总线仲裁器接收并确认后,FrameBuffer中的图像数据将通过专用的DMA通道送入Pixel FIFO,然后经过字节翻转、背景前景图像合成后通过LCDC逻辑接口直接送入LCD显示屏接口。
通过MMC/SD接口可将SD卡接入控制系统,利用驱动程序将SD卡挂载在文件系统中。用户可以编写应用程序将内存中的图像数据保存在SD卡中,也可将SD卡中的图像数据读入到内存中。
4、 系统软件设计
本控制系统是基于上述硬件平台和嵌入式Linux操作系统开发设计的。首先在硬件平台上实现嵌入式Linux操作系统内核和文件系统的移植,并实现对外设硬件的底层驱动。应用程序采用模块化设计,其中功能模块设计主要包括GUI(Graphical User Interface)和WebServer程序设计,应用模块主要包括采集模块子程序,LCD显示模块子程序,打印模块子程序,SD卡存储子程序,以太网传输子程序等。本文重点对罔像通道相关程序做出论述。
如图3,设计CSI RxFIFO中的图像数据通过专用总线通道②送人PRP,DMA通道①被内部逻辑控制器关断。因此在CSI和PRP的驱动程序中,CSI和PRP的初始化代码应作如下修改:
CSI初始化:
* (uint32_t *)GPIOB_GIUS &= ~0x3FFC00; //关断DMA通道
*(uint32_t *) CSI_CSICR1 |= 0x2; //图像数据上升沿触发
*(uint32_t *) CSI_CSICR1 |= 0x80; //大端格式
*(uint32_t *) CSI_CSICR1 |= 0x10000000; //PRP使能
PRP初始化:
*(uint32_t *)CRM_PCCR0 |= 0x8008000; //PRP时钟使能
*(uint32_t *)EMMA_PRP_CNTL |=0x10000; //PRP复位
*(uint32_t *)EMMA_PRP_INTRCTRL = 0x00000000; //关中断
*(uint32_t *)EMMA_PRP_SPIX_FMT = 0x2CA00565; //RGB565格式数据输入
*(uint32_t *)EMMA_PRP_SFRM_SIZE = 0x028001E0; //输入图像窗体为640 x 480
*(uint32_t *)EMMA_PRP_DISIZE_CH1=0 x028001E0; //输出图像窗体为640 x 480
*(uint32_t *)EMMA_PRP_DPIX_FMT = 0x2CA00565; //RGB565格式数据输出
*(uint32_t *)EMMA_PRP_DLST_CH1 = 0x00000280; //行步为640
本设计初始安装分辨率为640 x 480的LCD.如上设置初始化后,图像数据将由CSI RxFIFO进入PRP处理。为了使上层用户在不改变设备文件的前提下,直接利用CSI设备文件描述符,采用如下代码将CSI设备文件的虚拟地址映射为PRP输出的物理地址,用户就可以直接从CSI设备文件中读取经PRP处理后的图像数据。
if ((csi_data_buf = (U32 *)__get_free_pages(GFP_KERNEL, 8))) {
prp_buf_phy_addr = virt_to_phys((void *) csi_data_buf);
printk(“Buffer start: 0x%08x, PRP addr: 0x%08x ”, (int) csi_data_buf, (int)prp_buf_phy_addr);
} else {
printk (“ERROR: cannot allocate buffer memory for driver ! ”);
return -1; }
通过如上驱动程序的修改,用户就可以编写应用程序实现对PRP处理后的图像数据进行送显和存储。应用程序的程序概图如图5所示:
5、测试结果
本文设计的控制系统经测试,诊断图像实时显示的帧率可以达到20‰,大于便携式B超图像10帧/s的帧率要求.且LCD观察图像画面清晰。采用RGB565格式的标准位图保存诊断图像信息,每张图片的数据大小为:
640 * 480 * (5+6+5)/8=614400 bytes
使用1G的SD卡作为外部存储设备,可以存储1747张诊断图片。完全满足便携式诊断设备的要求和实际诊断情况的需要。
6 、结论
本设计采用ARM9E为核心的Freescale i.MX21芯片作为便携式超声诊断仪中央处理器,利用其内置的CMOS图像传感器通道,将超声图像采集模块输入的图像信息实时的显示出来,并根据需要对显示的图像进行保存。经测试,该控制系统工作稳定可靠,满足了常规的诊断需要,具有较高的实用价值。
本文作者创新点:本文采用的专用高速CMOS图像传输通道将超声诊断图像输入控制系统并进行处理。在软硬件都满足需求的基础上给出了详细的设计实现,说设计的系统在诊断图像的显示帧率、显示画面清晰度方面都达到了很好的效果。为同类系统设计、升级和改进打下了良好的基础。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !