推广 热搜: 电机  PLC  变频器  服务机器人  培训  变送器  危化品安全,爆炸  西门子PLC  触摸屏  阀门 

基于嵌入式硬件平台的划片机视觉系统设计

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:29    评论:0    
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()通过内存缓冲区来读取数据;而mmap()通过把设备内存映射到用户进程地址空间中,绕过内核缓冲区,所以mmap()方式加速I/O访问。另外mmap()系统调用使用进程间通过映射同一文件实现共享内存,各进程可像访问普通内存一样对文件访问。访问时只需要指针而不用调用文件操作函数.因此用mmap()采集图像。初始化函数(camera_pict_init,canera_mmap _init.camera_get_mbuf和采集图像函数(camera_grap-image)介绍如下:

5 结语

    高速实时图像数据的处理和传输是划片自动化的基础和精度效率的重要保证。基于外部设备互连PCI总线嵌入式视觉系统,选用了高性能的ARM处理器,嵌入可配置ARMLINUX操作系统,可高效的完成划切要求。整个系统具有高可靠性,扩展能力强,避免传统工控机的病毒、补丁、死机等不便利因素。

 
打赏
 
更多>同类环保知识
0相关评论

推荐图文
推荐环保知识
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON