http://www.paper.edu.cn
基于 ARM9 红外热像仪的设计与实现
王勇,尹勇
武汉理工大学信息工程学院,武汉(430070)
E-mail:wangyong0919@whut.edu.cn
摘 要:本文根据红外热像仪系统的功能需求,设计了基于 ARM+FPGA 的硬件平台和
Windows CE5.0 操作系统的红外热像仪系统。其中 ARM 模块的核心芯片选用 Samsung 公司
的 S3C2440 处理器,主要完成人机界面和管理形式多样的通讯与外围接口等任务。FPGA 模
块完成图像采集、预处理、伪彩变换等功能。根据控制模块的功能要求,将系统硬件划分为
CPU、存储器、人机交互、调试系统、电源等模块。分析 Windows CE 中 Bootloader 的功能
和架构,完成 BootLoader 在 S3C2440 中的移植与优化,矩阵键盘驱动的编写。完成数据的
实时读取,伪彩图像的显示设计等。通过测试表明,该红外热像仪各部分能正常工作,可以
运行 Windows CE 操作系统下的应用程序,系统设计基本达到了预期的功能。
关键词:ARM9;红外热像仪;Windows CE
1.引言
国内外红外系统大都以单片机或 FPGA 为控制器,DSP 为处理器,基于 ARM 控制器
的方式较少见[1][2]。近年来,随着嵌入式技术的发展,采用 ARM 结构的控制系统显示出了
其优越性,正逐步得到重视。与通用集成电路相比,ARM 芯片具有体积小、重量轻、功耗
低、可靠性高等几个方面的优势,而且在大批量应用时,可降低成本[3]。
本文将嵌入式系统的概念引入红外成像技术的控制系统研究中,使红外成像技术能够在
嵌入式系统的支持下产生新的研究方法,新的技术路线和新的产品。研究的目的是开发一种
小型化、智能化的嵌入式产品。采用高速高集成的嵌入式处理器 S3C2440,在 Windows CE
操作系统下控制 CMOS 结构的红外非制冷焦平面探测器,充分发挥基于 ARM 的嵌入式系
统设计思路,采集并存储红外数字图像。
2. 系统总体架构的设计
根据红外热像仪系统的功能需求,我们选择了 ARM+FPGA 的硬件平台和 Windows
CE5.0 操作系统。其中本系统的 ARM 选用 Samsung 公司功能强大的处理器 S3C2440 芯片,
主要完成人机界面和管理形式多样的通讯与外围接口等任务,该系统充分利用 ARM 健壮的
实时控制特性,从改变现有硬件系统的角度出发来提高系统的高运行速度。FPGA 模块完成
图像采集、预处理、伪彩变换等功能。该系统的主要部件为:非致冷红外焦平面探测器模块、
视频图像实时处理模块、主控制器 ARM 模块。系统的总体框图如图 1 所示。
- 1 -
红 外 摄 像
头(数字接
口)
FPGA
EP2C35
处理模块
http://www.paper.edu.cn
网卡
矩阵键盘
ARM
S3C2440
USB
接口
SD 卡
音频
TFT LCD
控制模块
图 1 系统结构框图
整个红外热像仪的工作流程如下:红外辐射经过光学系统聚焦在焦平面阵列像素单元
上,UFPA 探测器完成光电转换,红外图像在 FPGA 时序控制的作用下对红外焦平面图像信
号进行采集,采集到的数据送到 FPGA 进行滤波、非均匀校正等处理。经过处理后的图像数
据保存到指定的 SRAM 中,此时 FPGA 向 ARM 发送中断信号(已经完成了图像的处理)。
ARM 响应该中断后把处理完的图像数据读入,根据应用软件的要求,在 LCD 动态显示,或
是保存为 BMP 到 SD 卡中。
ARM 主控模块包括 CPU,数据存储系统,人机交互系统、调试系统、电源管理等部分。
本系统的嵌入式控制端以 S3C2440 微处理器为核心,以其出色的内核性能和丰富的外部接
口构成一个嵌入式系统平台,其硬件结构如图 2 所示。
NAND FLASH
SDRAM
SD 卡
存储系统
人机交互系统
LCD
键盘
S3C2440
CPU
JTAG
USB
CS8900
UART
HPI 接口
扩展接口
电源管理
调
试
接
口
图 2 S3C2440 实时控制硬件结构图
- 2 -
http://www.paper.edu.cn
3.系统启动优化及平台移植
3.1 BootLoader 启动优化
由于 BootLoader 是与具体硬件密切相关的,所以 BootLoader 优化的第一步就是确定目
标设备平台[4]。在前面的方案里我们选择了三星公司的 S3C2440 作为我们的开发平台,所以
这里将以 ARMV4I 为例,对 BootLoader 进行优化。
基于 Windows CE 的操作系统启动时间一般偏长,从按电源键到 Windows CE 操作系统
启动需要大约 37 秒左右,可以采用支持多个区域的.bin 文件或 Multi-XIP(多区域就地执行)
技术使整个系统启动显著加快,优化系统的启动速度。
在 XIP 的 OS Image 中主要由两部分组成:XIPKERNEL.bin 和 NK.bin, XIPKERNEL.bin
中的内容就是 Windows CE 中比较核心的又需要经常加载的一些程序和 DLL 文件,这些文
件会被 Boot Loader 在刚启动的时候拷贝到 RAM 中去,这样就可以在 RAM 中 XIP(Excute
in place)。在 NK.bin 中的基本上是需要但不至于要常驻内存的一些程序和 DLL,在 BuildIn
下的大部分驱动 mediaplayer 等应用程序放到这里面,这些文件只有在需要的时候才被复制
到内存中去执行,节约了内存并且也加快了启动的时间。
启动的时候 Boot Loader 会先把 XIPKERNEL 复制到 RAM 中,然后跳到 RAM 中的
XIPKERNEL 的入口点去执行,然后会运行 OEMinit 里的 CPU、内存、中断等初始化的过程,
接着 OS 会从注册表中找到 binfs 的一些设置,然后加载 binfs 的驱动使 binfs 分区对 OS 来讲
是可用的,假如 device.exe 是在 NK.bin 中的话,那么在这个时候就可以用\binfs\device.exe
(\binfs 是假设的装载路径)来调用它,如果这个时候 binfs 没有初始化成功,那么 device.exe
得不到执行,系统肯定就不能运行。
HIVE 注册表也是在内存中运行的,不同的是启动的时候会从磁盘上去读改动的表项,
因为这样才能保证速度,所以注册表改动也是在内存中进行的。下面是具体的步骤:
① 修改 config.bib:
XIP 82b00000 00100000 NANDIMAGE ;起始地址与 RAM 重
XIPSCHAIN=83f00000 ;等于 CHAIN
② 修改 platform.bib,将需要的文件放到 XIP 中:
PSConfig.psr $(_FLATRELEASEDIR)\PSConfig.psr XIP S
btagext.dll $(_FLATRELEASEDIR)\btagext.dll XIP SH
③ 修改注册表,加上以下内容:
"Name"="BIN Filesystem"
"Dll"="binfs.dll"
"Paging"=dword:1
④ 加入 Hive-based Registry,BINFS,FATFS,STORE MANAGER。
⑤ 重新编译。
- 3 -
http://www.paper.edu.cn
经优化后系统启动时间大约为 6S 左右,大大提高了启动速度。
3.2 矩阵键盘驱动设计实现
红外热像仪上的键盘作为一种输入工具,有着极其重要的作用;然而受设备本身体积影
响,键盘设计数采用 8 个左右的键值(上下左右方向键、确定取消键、回放以及菜单键)。
这里采用 2×4 的矩阵键盘设计,即 2 行 4 列。把这些矩阵键盘的行和列直接与 CPU 的 I/O
口相连,可以充分利用 CPU 的 I/O 口资源,降低硬件和驱动设计难度,提高整个系统的稳
定性,并在一定程度上降低设备的生产成本。
本键盘驱动将 EINT11、EINT19 两个 I/O 口作为中断 I/O 口。有键被按下时将产生一
个 I/O 中断,内核首先进入异常中断处理程序,由它屏蔽所有中断,再调用中断服务例程 ISR
得到该中断的逻辑中断标识。中断服务例程以键盘中断的逻辑中断标识符形式返回给系统任
务调度进程,中断服务线程则在矩阵键盘驱动中负责具体中断处理。因为中断服务例程较小,
并且只做很少的处理工作,中断服务线程就必须完成大多数中断处理工作,功能主要包括响
应中断、扫描按键位置、发送键盘消息等。当有事件被捕获后,根据不同的事件类型进入不
同的键盘扫描处理程序,如图 3 所示响应键盘中断流程图
N
(等待)
开始
创建中断服务线程
按键中断
Y
区分中断,定行位置
扫描键盘定列位置
发送键盘消息
KEYBD_EVENT
N
按键弹起
Y
发送键盘消息
KEYEVENTF_KEYUP
图 3 响应键盘中断流程图
- 4 -
中断处理完成后恢复 I/O 口的初始电平,调用 InterruptDone 函数恢复中断,使其能响应
http://www.paper.edu.cn
下一次同样的中断。
4 系统应用软件开发
4.1 红外热像仪应用程序框架总体设计
根据应用要求,红外热像仪的总体框架设计如图 4 所示,利用矩阵键盘的按键,可以对
各个功能模块进行控制,例如,按下菜单键,就会出现主菜单,然后利用方向键,上/下/左/
右进行对菜单的选择,完成相应的功能。
主菜单
图
像
调
整
参
数
设
置
打
开
图
片
其
它
功
能
调色板
对比度
亮度
自动模式
阀值
湿度校正
距离校正
环境温度
两画面回放
图像回放
图像序号
图像存储
图 4 红外热像仪的功能结构图
区域高温
时间显示
设定时间
USB 传输
4.2 数据的实时读取
因为需要在较短的时间内完成数据读取、图形显示和图像存储等任务,所以采用多线程
模型,利用多个线程分别完成各项任务。本系统充分利用 Windows CE 操作系统的多线程的
特点将不同的任务分布到各个线程中,使各个任务同步而协调地进行。主线程负责创建用户
界面、接收消息等工作。为了保证数据读取不被其他线程中断,需要开辟一个优先级较高的
线程来读取数据。数据读取线程和显示线程之间的同步通过使用线程同步对象 Critical
Section 来实现。它能够保证在一个时间只有一个线程访问数据缓冲区。
在 进 行 数 据 采 集 时 首 先 进 行 初 始 化 配 置; 然 后 打 开 设 备; 获 得 设 备 的 特 征 参 数; 为
ADDMA 转换分配数据缓冲区;开始 ADDMA 转换,即数据读取。读取用到的主要函数如下:
DRV_DeviceOpen(dwDeviceNum,(LONG far *)&DriverHandle)//打开设备
DRV_DeviceGetFeatures(DriverHandle(LPT_DeviceGetFeatures)
&ptDev-Features))//获得设备特征参数
DRV_AlloeateDMABuffer(DriverHandle,(LPT_AlloeateDMABuffer)&
- 5 -
http://www.paper.edu.cn
ptAllcate DMABuffer))//为 ADDMA 转换分配缓冲区
DRV_FAIDmaStart(DriverHandle,(LPT_FAIDmaStart)&ptFAIDmaStart))
在 VC++ MFC 为 Windows 开发程序时数据库可用 ODBC(开放数据互连)或 DAO(数据
访问对象)等数据库引擎来访问,CE 既不支持 ODBC,也不支持 DAO,在 CE 中所讲的数
据库不是功能完全的数据库系统[5]。而只是一些结构化存储数据的集合。表与表之间不存在
关系数据库那样的关联。对数据库进行封装的操作封装于 CCeDBDatabase,CCeDBRecord,
CCeDBProp,CCeDBEnum 四个类中,它们是 CE 所特有的。在 CE 中实现数据库很简单,
它只有一个层次并且最多可以有 4 种排序和索引,但它却可以作为一个强有力的工具来组织
不太复杂的数据,因此用 Windows CE 中的数据库来存储读取的数据十分方便。
4.3 伪彩图像显示的设计
由于红外热图像的特点是对比度低,图像相关性很强,如果采取基于频域的彩色变换,
得到的图像必然是模糊、对比度不高的彩色图像,这样显然不是我们想得到的伪彩效果。所
以本文采取灰度级-彩色映射函数变换法。
要显示伪彩图像,首先创建调色板,创建调色板有两种方式,一种是从一个现有的 DIB
图像中创建,另个是自己定义创建一个调色板。鉴于我们的应用程序是显示红外热图像所以
我们利用第二种方式创建调色板。
下面为用典型的伪彩色显示函数,来创建显示调色的部分代码。定义调色板的部分代码
如下所示:
PALETTEENTRY pe[256]
for(int i=0;i<=255,i++)
{
if(i<64)
{
}
pe[i].peBlue=255;
pe[i].peGreen=4*i;
pe[i].peRed=0;
……
if(i>=192&&i<256)
{
pe[i].peBlue=0;
pe[i].peGreen=255-4*(i-192);
pe[i].peRed=255;
}
}
- 6 -
http://www.paper.edu.cn
由于不同的具体要求,需要不同的伪彩色编码。这时用 EVC 来编程实现伪彩变换时,
采用一个 256 色的调色板(伪彩色编码表),其中定义了每种灰度对应颜色的 RGB 值。它实
际上也是用指定的伪彩色调色板来替换当前图像的调色板。伪彩处理通过菜单选项中的“图
像调整→调色板”消息触发,其具体实现过程如图 5 所示。
创建伪彩编码表对话框,
进行编码选择
获取伪彩编码参数
根据选择的伪彩编码表对源
图像调色板进行逐一替换
替换是否
成功?
是
否
提示调色板
不一致
重绘处理后的图像
图 5 伪彩色编码实现流程图
5. 系统测试及结论
经测试,在实现了 XIP 的 NAND Flash 中,此时生成的 XIPKERNEL.bin 只有 5M 左右,
而包含有其它非重要的 NK.bin 文件可以稍后拷贝,这样大大节约的系统启动时间,大约只
需 6S。
Windows CE5.0 设备上运行的客户端可以与主机应用程序交换信息,主机应用程序通常
驻留在运行 Platform Builder 的开发工作站上。使用 CETK 对系统的各部分进行测试。图 6、
为硬件实物图。
图 6 红外热像仪硬件电路实物图
经整体测试,系统能稳定运行。
- 7 -
http://www.paper.edu.cn
参考文献
[1]320×240 LWIR Uncooled Microbolometer Detector Technical Specification Previous SOFRADIR Reference[J].
IDML.073-V3.2004. 133~134
[2] D.M.T.Coehrane , P.A.Manning , T.A.Wylie . Uneooled
therma
limaging
sensor
for UAV
applications. SPIE.2001.4369:168~177
[3] 杜春雷.ARM 体系结构与编程[J].北京.清华大学出版社,2003:7~8
[4] 刘娅等.基于 ARM 嵌入式系统的 BootLoader 的设计与实现[J].现代电子技术 2006 (7)
[5] 汪兵,李存斌,陈鹏.EVC 高级编程及其应用开发[M].北京:中国水利水电出版社.2005.3.78~79
Design and Implementation of Infrared themral imaging
instrument Based on ARM9
School of Information Engineering, Wuhan University of Technology, Wuhan(430070)
Wang yong, Ying yong
Abstract
In this paper, according to the functions of the infrared thermal imaging instrument system, The
ARM+FPGA hardware platform and windows CE5.0 operating system can be chosen. And also the
S3C2440 processor produced by Samsung as core chip is chosen in ARM module, whose main tasks
are to realize the human-machine interface, various management of the communication and the external
interface. Gathering images, pre-conduction, and transforming the preudo-color are completed by
FPGA module. According to the functions of Control module, the hardware of system as CPU,
memory , Human-Computer Interaction, debug system, power and several other modules have been
classified. The functions and structure of Bootloader is analyzed in Windows CE, the Transplant and
optimization of the Bootloader in S3C2440 processor is completed. the matrix keyboard driver is
designed. Real-time data reading and pseudo-color displaying are designed.Testing results show that
system can normally work in the infrared thermal imaging instrument and support the application
running. The basic design of the system achieves the desired function.
Keywords:ARM9; Infrared thermal imaging instrument;Windows CE
- 8 -