1 引言
半导体后封装工艺中关键设备划片机是通过主轴高速旋转、y向精密分度定位、x向导轨高速运动、θ向多角度旋转实现对多个芯片图形划分加工的设备。可用于硅集成电路、SAW器件、Ga/As、铌酸锂、锑化铋、厚膜电路、磷化铟等特种材料和脆硬材料晶片的划切分片。
a鉴于在精密划片机检测系统的检测速度和精度上的要求,需要分辨率较高的CCD摄像机对划切图像进行快速提取。PC-Based产品的硬件技术已经实现,但PC结构中仍存在诸多因素影响划片机的实际使用,如硬盘可能出现的机械故障、风扇带来的不稳定因素、抗震性能指标,抗干扰指标等等,这些因素依然是制约IPC(PC工控机)应用于半导体设备的问题之一。通过引入嵌入式硬件方案解决了这个难题,同时也大大降低了成本。
基于嵌入式硬件平台的精密划片机硬件部分采用主从式双CPU结构模式,主CPU为ARM处理器。精密划片机控制主体由3个单元构成:监控管理单元、四轴运动控制单元和划片机视觉单元。划片机视觉单元是通过对图像实时采集来监测晶圆划切过程;监控管理单元主要功能是监测设备运行、设置加工参数等;四轴运动控制单元是采用专用运动控制芯片,接收S3c2510传递的参数来直接控制电机完成运动控制。
视觉采集系统基于的PCI总线具备32Bit数据总线,时钟频率可达66 MHz,最快传输速率达到264 MB/s,能够满足划片机视觉系统需要,设计的核心板扩展2个PCI插槽。嵌入式设备需编写PCI设备的驱动程序将现有的PCI设备应用到嵌入式主板中。
划片机的视觉采集系统由光学照明系统、CCD摄像器件、图像处理软件等部分构成,视觉系统构成见图1。
2 硬件电路设计
根据PCI系统的总线拓扑结构设计了划片图像采集系统的硬件结构。其中的摄像头,根据划片机视觉的要求选用35万像素的PCI接口的图像采集模块。
系统主处理器采用三星公司的S3C25lO,考虑到S3C2510内置PCI控制器,扩展的2块PCI接口可分别和四轴嵌入式运动控制芯片MCX314As和图像采集模块连接。系统框图见图2。
芯片为ARM 940T内核,最高运行频率可达200 MHz,芯片内置的SDRAM控制器、PCI控制器、USB控制器和10M/100M以太网控制器等一系列接口控制器。满足精密划片机的实时控制要求,主板的外部时钟源为10 MHz,通过S3C2510的4个内置倍频率器,设置引脚CLKMOD0、CLKMODl、CPU_ FREQl、BUS_ FREQ0为高;设置引脚CPUFREQ0、CPU_FREQ2、BUS_FREQl、BUS_ FREQ2为低,使系统内核运行频率为133MHz,PCI设备运行频率为66 MHz,USB设备运行频率为48 MHz。图3是S3C2510的PCI插槽图。
系统上电后,PCI插槽上图像采集模块将等待CCD摄像头模拟信号的输入,当图像采集模块得到模拟数据后便对模拟数据进行编码,处理后的数据通过S3C2510内部AHB总线传输到SDRAM,主控管理单元利用主板上嵌入式Linux系统中的视频服务程序使用解码播放器即可对晶圆监测划切。
S3C2510 ARM处理器,内部PCI(MINI-PCI)&PC Card控制器符合PCI总线规范2.2版本,将S3C2510的PCI(MINI-PCI)&PC Card控制器设置为PCI Host工作模式(见表1),具有32bit地址/数据复用总线,支持非线性传输和突发传输,最高数据传输速度可以达到264 MB/s及66 MHz(132 MB/s及33 MHz)。而且带有地址变换机制,可以将内部的PCI总线地址映射到内存或者外围设备。在设计中设定PCI总线的时钟频率为66 MHz,因此主板上PCI总线的最高传输速度可以达到264 MB/s,能够满足数据的快速传输。系统利用时钟反馈来弥补PCI的时钟延迟。
当PCI控制器工作在PCI HOST、模式下时,其时钟源是由系统内部提供的,S3C2510有3个PCI时钟输出信号PCICLK1,PCICLK2和PCILK3,将PCI设备诊断寄存器PCIDIAG0的DC3位设置为l,即将PCICLK3设置为输出无效,此时PCICLK1与PCICLK3相连,通过PCICLK3将时钟信号反馈给处理器内核,这样可以使外部PCI设备与PCI时钟保持一致,从而弥补时钟延迟。
系统以及PCI控制器的启动顺序如图4所示。其中在对PCI控制器的特殊功能寄存器进行配置时需要首先关闭中断,即设置PCIINTEN=0。然后设置PCI控制和状态寄存器PCICON[ARB,ATS,SPL,IOP,MMP],某些需要的情况下还要设置PCI诊断寄存器,这个寄存器是针对测试功能的,在PCMCIA Host工作模式下不需要进行设置。然后要对与基地址有关的寄存器PCIBAM0~l和PCI-BATPA0~2进行设计,设置完之后要配置有关PCI重启和时钟的寄存器,其中关键的一步是设置PCI重启和时钟寄存器PCIRCC[MSK]=0,这是为了防止重启信号和时钟信号的冲突。
在PCI控制器侦测外围设备并初始化外围设备的寄存器时,需要完成以下工作:
(1)读取所有的配置寄存器值,包括PCIHID,PCIHSC,PCIHSSID等;
(2)检查BAR(Backup Address Register)的范围并一一分配空间;
(3)使能外部设备并激活总线。
以上配置都是在PCI图像采集模块的驱动中完成的,因为已经把驱动程序加载到了ARM Linux的内核中,所以系统启动之后,操作系统会自动配置PCI外部设备。
3 ARM Linux移植和设备驱动实现
3.1 Boot Loader的移植
Boot Loader是和硬件紧密连接的,系统是通过Boot Loader。来调用操作系统内核并最终运行操作系统。本系统采用了U-Boot(Universal Boot Loader)作为。Boot Loader,U-Boot相当于一个小型的Linux系统,其工作涉及到硬件系统的初始化、存储空间分配等,在设计过程中主要完成了以下工作,相关的程序编写根据U-Boot提供的例程来完成:
(1)修改Makefile配置文件,添加针对目标板的编译命令行;
(2)在CPU目录下建立arm940t目录,主要包括中断设置函数代码interrupts9c,系统入口函数start.S,CPU相关代码文件cpu.c以及串口初始化代码相关文件serial.c等;
(3)在Board目录下建立S3C2510目录,主要包括FLASH初始化代码flash.c,连接器文件u-boot.1ds,内存分配代码memsetup.S等;
(4)编写配置文件,即:include/configs/s3c25 l0.h,对寄存器的定义等系统配置,大部分工作是参考S3C25l0的数据手册来进行的;
(5)编写flash.c文件,根据使用的AMD的NOR Flash来编写Flash的驱动,包括flash芯片的型号,打印信息,容量大小,flash擦除函数等;
(6)修改SDRAM的大小,修改配置文件in-clude/configs/s3c25 10.h 中 的 #define PHYS _SDRAM_ SIZE值。其大小是根据实际应用中SDRAM的大小来确定;
(7)修改串口参数文件serial.C。主要是设置串口波特率,波特率计算公式为:RUBRDIVO=((int)(MCLK/16./(gd_>baudrate)+0.5)-1);
(8)修改start.S文件,一个可执行的Image必须有一个入口点并且只能有一个唯一的全局入口,修改start.S中的.globl _start _start:使其放在Rom(flash)的0×0地址。编译U-Boot,通过Jtag口下载到目标板进行调试。
3.2 ARM Linux设备驱动编写
Linux的内核是由设备管理、进程管理、文件系统和内存管理一起组成,Linux设备驱动可以分为字符类设备,网络接口类设备,块类设备和其他非标准驱动。PCI设备被看作是字符型设备。每个PCI外设都由一个总线号、一个设备号和一个功能号来标示,共有3个访问空间,即I/O端口、内存空间和配置寄存器。PCI配置空间由256个字节组成,且每个设备功能都有一个配置空间,用于决定PCI器件的工作方式和映射到系统中的地址。
添加系统的PCI设备驱动主要步骤:
(1)创建1个PCI设备,命令:mknod pci_dev c247 0,其中c表示字符设备,247表示主设备号,0代表次设备号。
(2)初始化外部设备,将函数pci_ dev_ init()添加到ARMlinux/linux/drivers/chal/mem.c文件的chr _dev_ init()中,chr _dev _init()将在系统启动时被调用,会完成设备驱动的初始化工作:
(3)设备驱动文件pci__dev.c的编写。设备注册接口函数,中断处理函数等构成了PCI设备驱动主要代码。即file_operationgs根据S3C2510的PCI配置寄存器所给定的基址来读写数据。PCI定义的I/O空间是32位地址空间,内存和I/O可使用相同的配置接口。
(4)PCI设备的加载。ARMlinux不支持设备驱动的动态加载,因此需要把驱动编译到ARM Linux内核中,首先需修改makefile文件,添加下行:obj_$(CONFIG_ PCI_ DEV)+=pci _dev.o接着修改config.in, 添 加 :bool'pci _dev install'CONFIGPCI DEV,添加这行的目的是为了在配置目标板Linux系统内核时以便对这个设备进行选择。最后在目标系统的makefile中添加设备节点:pci _dev,C,247,0这样在配置Linux内核时就可以选择pci_dev install,然后进行编译,这样PCI设备驱动就加载到了ARM Linux系统中。
4 主控单元图像采集编程
内核针对数码摄像头等视频设备提供V4L函数接口,V4L提供针对视频设备进行基本的I/O操作的接口函数如:open、read、write、close,中断处理,内存映射及I/O通道的控制ioctl等,并定义在struct file_operations数据结构体中。当应用程序对设备进行诸如open、read、Write、close等系统调用操作时,内核将通过file_operation结构访问驱动程序提供的函数接口.具体的采集程序如下:
PCI接口视频采集流程如图5所示。
V4L为视频采集图像提供两种方案①:read()直接读取,②:mmap()内存映射。read()通过内存缓冲区