(2)BMP图像文件创建程序。为提高程序运行速度。并考虑到该系统的实际需要,程序只实现了写BMP图像文件功能。程序主要由SD卡操作驱动接口函数和文件系统层组成。
驱动函数目的是为文件系统层提供所需的SD卡初始化函数和SD卡写多块数据函数。图8是SD卡写函数流程图示意图。当写函数接收到主程序的写文件指令后,就向SD卡发送多块写命令,卡将发送给主机一个应答令牌,并且等待主机发送一个发送数据块来,当应答R1为0时,说明可以发送数据,块大小设置为512 B。数据块之后附有16位的CRC校验,因为CRC校验计算占用了很大部分发送的时间,该系统采用自定义用户指令对这部分进行了加速处理。
要使写入SD卡的数据在装有Windows或Linux操作系统的上位机中得到正确访问,需要在SD卡上创建它们支持的文件系统。考虑到FAT12目前已经很少使用,在此设计的文件系统只支持FAT16和FAT32。并且将整个卡作为一个分区处理。
图9是系统的软件工作主要流程图。在主程序中,系统启动后,先进行初始化操作,包括中断初始化、文件系统初始化和SD卡底层驱动的初始化。随后系统进入主循环等待状态,一旦检测到DETECT_PIO电平的变化就暂停SDRAM数据写入,以防SDRAM缓存的图像数据被覆盖,同时根据当前的时间创建一个BMP格式的文件,然后往里填写文件头和文件信息头,随后连续写一帧RGB数据。文件创建完毕后系统继续处于检测等待状态,并恢复SDRAM数据写入。
5 系统评价
该设计在自制核心实验板上(见图10)进行了软、硬件仿真和调试,调试环境参数设定如下:采集时钟频率为25 MHz,NiosⅡ时钟频率为100 MHz、每帧图像大小为320×240像素。调试结果如下:系统采集速度在60帧/s左右。对五米之内场景动态变化的响应时间在5 ms左右,SD卡保存单帧图像时间约为9 s(每帧图像数据量是153 600 B),连续工作一个星期无任何故障发生。结果表明该系统图像采集和处理速度超过一般的以软件实现为主的嵌入式图像采集方案(如ARM处理器系统)。由于核心处理器采用单芯片方案,采集系统比较稳定,同时其功耗大大低于多芯片方案。
6 结 语
在此提出一种基于SoPC技术的图像检测、采集和储存的一体化单芯片控制新型系统集成方案,并实现了原型系统,该系统的主要特点是处理速度快、功耗低、稳定可靠。
该设计可以在进一步工作中移植嵌入式操作系统μCLinux,以实现复杂的多任务操作。因此该设计既可作为独立的解决方案应用于便携式原位观测系统中,同时以其良好的扩展性,也可作为一个子系统应用于大型图像处理系统的前端部分。