基于ARM和μC/OS-II血液医疗检测仪的设计与研究
2012-05-12薛俊
薛 俊
(长江大学工程技术学院,湖北荆州434020)
1 血液医疗检测系统简述
血液抽样化验的电子自动化充分反映出医疗器械与高速发展的微电子技术密切相结合,多渠道高性能低成本的特点使得血液检测系统可以广泛应用于化学分析、免疫分析、岩矿分析、食品检验、环境分析等领域,是当前化学分析和免疫分析研究的热点。其实现机理是依据免疫学诊断的基础——抗原-抗体的特异性结合反应,将酶或其他非放射性标记物标记于抗原或抗体,然后与已知抗原或抗体反应,标记的酶使反应底物进行发光,经光电倍增管测量后可得到被测样本的每秒钟发光计数(CPS),再根据系统内置的标准曲线将CPS转换为样本的浓度值[2]。该项技术的应用,使抗原-抗体的反应时间缩短,特异性程度和灵敏度得到提高,同时辅以嵌入式技术的应用,使整个反应的全自动化实现成为可能,是近十年来免疫检验技术的一个飞跃。
2 血液检测系统框架组织
硬件分为上位机和下位机两部分,上位机以S3C44B0芯片为核心,边置 NAND/NOR FLASH、32M内存、USBHost、串口0打印机、串口1下位相连、LCD触摸、SD卡、键盘鼠标双PS/2、网卡;下位机以89S52单片机为核心,边置加样引擎、光子计数器、混匀电机、8255 I/O扩展、抽样试管转轮,串口上位相连。
软件在上位机采用μC/OS-Ⅱ操作系统管理多个硬件工作任务,实现液晶显示英文中文输入法及其可触摸,方便医生管理和修改病人检测血液信息,随时用U盘或者SD卡即时保存病人数据,通过网络远程控制系统工作,运用键盘鼠标便捷可视化操作,最后运用打印机打印结果信息。在下位机运用串口相连,即时发送检测数据给上位机,并扩展IO口供各个混匀系统的电机控制。血液检测系统的框架如图1所示。
图1 血液检测系统整体框架结构图
硬件开发平台采用Samsung(三星)公司推出的16/32位RISC嵌入式微处理器S3C44B0X(ARM7TDMI内核)为核心,该处理器为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。利用ADS1.2软件开发平台实现。
3 主板核心软件的开发与实现
由于系统采用了上位机下位机模型来分别处理各自的数据操作,所以针对各自设备,要逐一撰写各个设备驱动,调试驱动通过以后,运用操作系统μC/OS-Ⅱ将这些设备驱动程序当作任务逐个管理起来,达到各自之间协调通信和同步。在μC/OS-Ⅱ操作系统的应用层次,我们根据项目需要妥善地向系统穿插源代码,编写适合于μC/OS-Ⅱ环境下的实际应用程序。
μC/OS-Ⅱ的实现代码用的是C语言,但是仍需要用汇编写一些与处理器相关的代码,这是因为μC/OS-Ⅱ在读写处理器寄存器时只能通过汇编来实现,如任务堆栈使用状况、任务切换、系统时钟等,并且这些代码跟芯片型号、主频、工作模式都有很大的关系,所以要让μC/OS-Ⅱ操作系统真正在指定芯片S3C44B0上面工作起来,必须进行汇编语言改写。
由于μC/OS-Ⅱ仅是一个内核式操作系统,并且在设计时就已经充分考虑了可移植性,所以μC/OS-Ⅱ移植相对来说比较容易,通常体现在下面几个方面:
(1)修改 OS_CPU.H
修改配置文件,使得μC/OS-Ⅱ支持ARM7的32位模式,设置堆栈增长方向,添设ARM7下的一些CPSR的处理,主要程序如下:
(2)修改 OS_CPU_C.C
这是真正实现管理堆栈的C文件。为芯片开辟堆栈组织堆栈是任务运行的根本保证,关键函数是OSTaskStkInit()。
void*OSTaskStkInit(void(*task)(void*pd),void*pdata,void*ptos,INT16U opt);task函数指针即是指向需要的具体任务名字,分60字节的空间给其堆栈,--stack逐一配置 pc、lr、r0 ~ r12、cpsr、spsr值。
(3)修改 OS_CPU_A.ASM
这个文件主要汇集如何设置系统时钟、如何实现系统任务的汇编切换、如何调度任务、如何处理外部中断事件。
完成这三个文件的修改操作,系统就可以跑动起来了。
3.1 U盘存储模块的级别访问
血液检测系统的数据存储设计,是系统开发重要的一个部分。来自外部采集的数据、经医学算法处理的数据、LCD显示屏显示的数据以及最终处理并打印的数据都需要放在外部存储设备进行管理,而且数据经常随着不同操作界面有不同的含义,这就需要在编写驱动设备的同时,建立合适的访问方式和层次管理才能有条不紊地进行数据的读写。
经由USB主机系统整个协议栈,我们可以理顺主机软件开发骨架。由于血液检测系统的开发融入μC/OS-Ⅱ操作系统的管理,而在USB总线活动时,USB主机系统仅需要按照协议的特定时序来运行,因此操作系统μC/OS-Ⅱ调度U盘工作的时候,可以使用μC/OS-Ⅱ的中断机制来处理来自U盘或者给U盘的数据信息。下面是程序代码开发的软件层次。
(1)主CPU与各系统模块的初始化程序设计:实现主CPU的初始化和边置芯片的初始化,包括内存、NAND Flash、LCD显示,键盘,以及RS-232串口程序等,也初始化CPU与USB主机控制器之间的数据通信功能。
(2)μC/OS-Ⅱ操作系统的启动:进入操作系统初始化,创建空闲进程,分配系统各个任务号,配置S3C44B0的系统中断,时刻接受来自硬件的中断信息,管理对U盘的访问。
(3)USB主机系统软件的实现:主要完成核心驱动程序的功能,具体来说就是实现USB的4种基本的数据传输方式,实现USB设备的枚举过程,并获取USB设备的描述符等,这些功能都可以通过读写主控制器寄存器来完成,因此,系统中只需分别定义一个读寄存器函数和写寄存器函数,然后以此函数为基础来构成各功能函数,实现数据传输、设备枚举以及获取描述符等各种操作。
(4)Mass Storage类协议的程序设计:实现Mass Storage设备类中Bulk-Only传输协议,实现Mass Storage类中UFI子类的读写请求命令,以此对设备进行各种访问和读写操作。
(5)应用程序设计:主要实现FAT文件系统。可根据FAT文件系统的核心思想,通过MassStorage类协议中的UFI子类命令和标准的设备请求命令与设备U盘建立连接关系,并在USB主机系统中建立磁盘的空间结构,定义MBR,DBR的数据结构,建立FAT表,FDT表,来实现对文件系统进行读取等操作即可。
3.2 μC/OS-Ⅱ对U盘信号访问处理
μC/OS-Ⅱ对U盘管理是中断层次的概念,也就是说μC/OS-Ⅱ在系统初始化之后,设置中断处理为一项任务,来处理外部事件的发生。主芯片S3C44B0对主控制器枚举的时候,如果没有USB设备的接入,系统自动进入到其它任务的运行中,同时将中断任务挂起等待邮箱信号,当U盘接入系统的时候,SL811主控制器发送中断给S3C44B0,中断处理程序发送U盘工作时需要的邮箱信号,由于中断任务的优先级最高,那么U盘取得信号就进入到自己的工作方式当中,实现枚举与探测。
4 血液检测系统测试数据
血液检测系统的开发,就是要满足用户定制,达到产品运行时各种功能的正确运行。各个模块的联调、整机系统的磨合检测,需要一定外在的软件边界测试和意外数据测试;数据测试也是一块不可以缺少的工作,下面是关于系统几个关键模块的数据测试,包括自行开发的穿插软件测试。
超级终端是常用的调试工具,虽然不能直接检测项目的图形效果,但却能够捕捉软件在运行时各软件块的工作情况,而且RS232的快速性不会延误系统工作机时,能够打印软件局部位置执行时的数据结果。因此我们采用超级终端打印信息来反馈机器工作情况,用截图阐述数据测试结果。
图2 用户登录综合数据
图3 PC机读U盘的数据
5 总结
基于ARM处理器的嵌入式血液检测系统经过半年开发,成功地实现了系统所要求的各项技术指标;实现了主机液晶、触摸屏、键盘鼠标、串口下位机、USB的设备驱动程序,完成了U盘的USB1.1协议栈、USB的MassStorage类的Bulk-only传输,实现轻型文件系统FAT16,撰写了U盘μC/OS-Ⅱ环境下多任务多数据的防紊乱程序;编写和调试PS/2键盘鼠标和LCD触摸屏一体化软件源代码,从整体软件和硬件驱动的延时机制来处理系统输入法汉字错误累积长度;实现了μC/OS-Ⅱ操作系统下循环缓冲队列机制和邮箱机制的运用,综合中断串口数据、医学算法、U盘存储存在着不同执行速度和执行顺序,使用源码穿插和数据缓冲拷贝形式解决速度差异带来的机械性,最终实现系统批量采集外在数据,进行自动化处理。由于ARM技术的迅猛发展,融入了SOC上的LINUX操作系统管理,综合图形界面,支持各式样的文件系统,能够兼容各层驱动,攘扩绝大部分常用设备的驱动,并提供便捷的驱动开发模块等等,这都有益于本血液检测系统向更高层次的ARM主芯片方向开发,使它更具有全自动性和界面美观性,反应速度也大大提高。在未来的血液检测系统升级改进中,使用LINUX系统是大势所趋。
[1]李烈均,刘少杰,张夜新.医疗系统的现状及发展前景[M].北京:科学出版社,2004.
[2]李丽娜.新型流动注射-化学发光体系的研究及其应用[D].重庆:西南大学,2006.
[3]马忠梅,马广云,徐英慧,等.ARM嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社,2005.
[4]邵贝贝.嵌入式实时操作系统μC/OS-Ⅱ的应用与新发展[M].北京:北京航空航天大学出版社,2003.
[5]Adam Chapweske.PS/2 Interface Development[M].A-merica,2000.
[6]刘丙成.μC/OS-Ⅱ内核分析及其平台的构建[D].呼和浩特:内蒙古工业大学,2005.
[7]尹高.LCD液晶模块理论[M].北京:高等教育出版社,2004.
[8]张建鹏.全自动化学发光免疫分析仪[D]天津大学,2005.
[9]宋寅卯,张青波.μC/OS-Ⅱ在 S3C44BOX上的移植[J].微计算机信息,2005.21(4):127 ~128.
[10]邵同震,孙光民.嵌入式系统中USB总线驱动的开发与应用[J].计算机应用研究,2002.(12):33 -41.