????半導(dǎo)體后封裝工藝中關(guān)鍵設(shè)備劃片機" title="劃片機">劃片機是通過主軸高速旋轉(zhuǎn)、y向精密分度定位、x向?qū)к壐咚龠\動、θ向多角度旋轉(zhuǎn)實現(xiàn)對多個芯片圖形劃分加工的設(shè)備??捎糜诠杓呻娐贰AW器件、Ga/As、鈮酸鋰、銻化鉍、厚膜電路、磷化銦等特種材料和脆硬材料晶片的劃切分片。
????a鑒于在精密劃片機檢測系統(tǒng)的檢測速度和精度上的要求,需要分辨率較高的CCD攝像機對劃切圖像進行快速提取。PC-Based產(chǎn)品的硬件技術(shù)已經(jīng)實現(xiàn),但PC結(jié)構(gòu)中仍存在諸多因素影響劃片機的實際使用,如硬盤可能出現(xiàn)的機械故障、風(fēng)扇帶來的不穩(wěn)定因素、抗震性能指標(biāo),抗干擾指標(biāo)等等,這些因素依然是制約IPC(PC工控機)應(yīng)用于半導(dǎo)體設(shè)備的問題之一。通過引入嵌入式硬件方案解決了這個難題,同時也大大降低了成本。
????基于嵌入式硬件平臺的精密劃片機硬件部分采用主從式雙CPU結(jié)構(gòu)模式,主CPU為ARM處理器。精密劃片機控制主體由3個單元構(gòu)成:監(jiān)控管理單元、四軸運動控制單元和劃片機視覺單元。劃片機視覺單元是通過對圖像實時采集來監(jiān)測晶圓劃切過程;監(jiān)控管理單元主要功能是監(jiān)測設(shè)備運行、設(shè)置加工參數(shù)等;四軸運動控制單元是采用專用運動控制芯片,接收S3c2510傳遞的參數(shù)來直接控制電機完成運動控制。
????視覺采集系統(tǒng)基于的PCI總線具備32Bit數(shù)據(jù)總線,時鐘頻率可達(dá)66?MHz,最快傳輸速率達(dá)到264?MB/s,能夠滿足劃片機視覺系統(tǒng)需要,設(shè)計的核心板擴展2個PCI插槽。嵌入式設(shè)備需編寫PCI設(shè)備的驅(qū)動程序?qū)F(xiàn)有的PCI設(shè)備應(yīng)用到嵌入式主板中。
????劃片機的視覺采集系統(tǒng)由光學(xué)照明系統(tǒng)、CCD攝像器件、圖像處理軟件等部分構(gòu)成,視覺系統(tǒng)構(gòu)成見圖1。
????
2?硬件電路設(shè)計
????根據(jù)PCI系統(tǒng)的總線拓?fù)浣Y(jié)構(gòu)設(shè)計了劃片圖像采集系統(tǒng)的硬件結(jié)構(gòu)。其中的攝像頭,根據(jù)劃片機視覺的要求選用35萬像素的PCI接口的圖像采集模塊" title="圖像采集模塊">圖像采集模塊。
????系統(tǒng)主處理器采用三星公司的S3C25lO,考慮到S3C2510內(nèi)置PCI控制器,擴展的2塊PCI接口可分別和四軸嵌入式運動控制芯片MCX314As和圖像采集模塊連接。系統(tǒng)框圖見圖2。
????芯片為ARM?940T內(nèi)核,最高運行頻率可達(dá)200?MHz,芯片內(nèi)置的SDRAM控制器、PCI控制器、USB控制器和10M/100M以太網(wǎng)控制器等一系列接口控制器。滿足精密劃片機的實時控制要求,主板的外部時鐘源為10?MHz,通過S3C2510的4個內(nèi)置倍頻率器,設(shè)置引腳 CLKMOD0、CLKMODl、CPU_?FREQl、BUS_?FREQ0為高;設(shè)置引腳CPUFREQ0、CPU_FREQ2、 BUS_FREQl、BUS_?FREQ2為低,使系統(tǒng)內(nèi)核運行頻率為133MHz,PCI設(shè)備運行頻率為66?MHz,USB設(shè)備運行頻率為 48?MHz。圖3是S3C2510的PCI插槽圖。
????系統(tǒng)上電后,PCI插槽上圖像采集模塊將等待CCD攝像頭模擬信號的輸入,當(dāng)圖像采集模塊得到模擬數(shù)據(jù)后便對模擬數(shù)據(jù)進行編碼,處理后的數(shù)據(jù)通過 S3C2510內(nèi)部AHB總線傳輸?shù)絊DRAM,主控管理單元利用主板上嵌入式Linux系統(tǒng)中的視頻服務(wù)程序使用解碼播放器即可對晶圓監(jiān)測劃切。
????S3C2510?ARM處理器,內(nèi)部PCI(MINI-PCI)&PC?Card控制器符合PCI總線規(guī)范2.2版本,將S3C2510 的PCI(MINI-PCI)&PC?Card控制器設(shè)置為PCI?Host工作模式(見表1),具有32bit地址/數(shù)據(jù)復(fù)用總線,支持非線性傳輸和突發(fā)傳輸,最高數(shù)據(jù)傳輸速度可以達(dá)到264?MB/s及66?MHz(132?MB/s及33?MHz)。而且?guī)в械刂纷儞Q機制,可以將內(nèi)部的 PCI總線地址映射到內(nèi)存或者外圍設(shè)備。在設(shè)計中設(shè)定PCI總線的時鐘頻率為66?MHz,因此主板上PCI總線的最高傳輸速度可以達(dá)到 264?MB/s,能夠滿足數(shù)據(jù)的快速傳輸。系統(tǒng)利用時鐘反饋來彌補PCI的時鐘延遲。
????當(dāng)PCI控制器工作在PCI?HOST、模式下時,其時鐘源是由系統(tǒng)內(nèi)部提供的,S3C2510有3個PCI時鐘輸出信號 PCICLK1,PCICLK2和PCILK3,將PCI設(shè)備診斷寄存器PCIDIAG0的DC3位設(shè)置為l,即將PCICLK3設(shè)置為輸出無效,此時 PCICLK1與PCICLK3相連,通過PCICLK3將時鐘信號反饋給處理器內(nèi)核,這樣可以使外部PCI設(shè)備與PCI時鐘保持一致,從而彌補時鐘延遲。
????系統(tǒng)以及PCI控制器的啟動順序如圖4所示。其中在對PCI控制器的特殊功能寄存器進行配置時需要首先關(guān)閉中斷,即設(shè)置PCIINTEN=0。然后設(shè)置PCI控制和狀態(tài)寄存器PCICON[ARB,ATS,SPL,IOP,MMP],某些需要的情況下還要設(shè)置PCI診斷寄存器,這個寄存器是針對測試功能的,在PCMCIA?Host工作模式下不需要進行設(shè)置。然后要對與基地址有關(guān)的寄存器PCIBAM0~l和PCI-BATPA0~2進行設(shè)計,設(shè)置完之后要配置有關(guān)PCI重啟和時鐘的寄存器,其中關(guān)鍵的一步是設(shè)置PCI重啟和時鐘寄存器PCIRCC[MSK]=0,這是為了防止重啟信號和時鐘信號的沖突。
????在PCI控制器偵測外圍設(shè)備并初始化外圍設(shè)備的寄存器時,需要完成以下工作:
????(1)讀取所有的配置寄存器值,包括PCIHID,PCIHSC,PCIHSSID等;
????(2)檢查BAR(Backup?Address?Register)的范圍并一一分配空間;
????(3)使能外部設(shè)備" title="外部設(shè)備">外部設(shè)備并激活總線。
????以上配置都是在PCI圖像采集模塊的驅(qū)動中完成的,因為已經(jīng)把驅(qū)動程序加載到了ARM?Linux的內(nèi)核中,所以系統(tǒng)啟動之后,操作系統(tǒng)會自動配置PCI外部設(shè)備。
3?ARM?Linux移植和設(shè)備驅(qū)動" title="設(shè)備驅(qū)動">設(shè)備驅(qū)動實現(xiàn)
3.1?Boot?Loader的移植
????Boot?Loader是和硬件緊密連接的,系統(tǒng)是通過Boot?Loader。來調(diào)用操作系統(tǒng)內(nèi)核并最終運行操作系統(tǒng)。本系統(tǒng)采用了U- Boot(Universal?Boot?Loader)作為。Boot?Loader,U-Boot相當(dāng)于一個小型的Linux系統(tǒng),其工作涉及到硬件系統(tǒng)的初始化、存儲空間分配等,在設(shè)計過程中主要完成了以下工作,相關(guān)的程序編寫根據(jù)U-Boot提供的例程來完成:
(1)修改Makefile配置文件,添加針對目標(biāo)板的編譯命令行;
(2)在CPU目錄下建立arm940t目錄,主要包括中斷設(shè)置函數(shù)代碼interrupts9c,系統(tǒng)入口函數(shù)start.S,CPU相關(guān)代碼文件cpu.c以及串口初始化代碼相關(guān)文件serial.c等;
(3)在Board目錄下建立S3C2510目錄,主要包括FLASH初始化代碼flash.c,連接器文件u-boot.1ds,內(nèi)存分配代碼memsetup.S等;
(4)編寫配置文件,即:include/configs/s3c25?l0.h,對寄存器的定義等系統(tǒng)配置,大部分工作是參考S3C25l0的數(shù)據(jù)手冊來進行的;
(5)編寫flash.c文件,根據(jù)使用的AMD的NOR?Flash來編寫Flash的驅(qū)動,包括flash芯片的型號,打印信息,容量大小,flash擦除函數(shù)等;
(6)修改SDRAM的大小,修改配置文件in-clude/configs/s3c25?10.h?中?的?#define?PHYS?_SDRAM_?SIZE值。其大小是根據(jù)實際應(yīng)用中SDRAM的大小來確定;
(7)修改串口參數(shù)文件serial.C。主要是設(shè)置串口波特率,波特率計算公式為:RUBRDIVO=((int)(MCLK/16./(gd_>baudrate)+0.5)-1);
(8)修改start.S文件,一個可執(zhí)行的Image必須有一個入口點并且只能有一個唯一的全局入口,修改start.S中的.globl?_start?_start:使其放在Rom(flash)的0×0地址。編譯U-Boot,通過Jtag口下載到目標(biāo)板進行調(diào)試。
3.2?ARM?Linux設(shè)備驅(qū)動編寫
????Linux的內(nèi)核是由設(shè)備管理、進程管理、文件系統(tǒng)和內(nèi)存管理一起組成,Linux設(shè)備驅(qū)動可以分為字符類設(shè)備,網(wǎng)絡(luò)接口類設(shè)備,塊類設(shè)備和其他非標(biāo)準(zhǔn)驅(qū)動。PCI設(shè)備被看作是字符型設(shè)備。每個PCI外設(shè)都由一個總線號、一個設(shè)備號和一個功能號來標(biāo)示,共有3個訪問空間,即I/O" title="I/O">I/O端口、內(nèi)存空間和配置寄存器。PCI配置空間由256個字節(jié)組成,且每個設(shè)備功能都有一個配置空間,用于決定PCI器件的工作方式和映射到系統(tǒng)中的地址。
????添加系統(tǒng)的PCI設(shè)備驅(qū)動主要步驟:
(1)創(chuàng)建1個PCI設(shè)備,命令:mknod?pci_dev?c247?0,其中c表示字符設(shè)備,247表示主設(shè)備號,0代表次設(shè)備號。
(2)初始化外部設(shè)備,將函數(shù)pci_?dev_?init()添加到ARMlinux/linux/drivers/chal/mem.c文件的 chr?_dev_?init()中,chr?_dev?_init()將在系統(tǒng)啟動時被調(diào)用,會完成設(shè)備驅(qū)動的初始化工作:
(3)設(shè)備驅(qū)動文件pci__dev.c的編寫。設(shè)備注冊接口函數(shù),中斷處理函數(shù)等構(gòu)成了PCI設(shè)備驅(qū)動主要代碼。即file_operationgs根據(jù)S3C2510的PCI配置寄存器所給定的基址來讀寫數(shù)據(jù)。PCI定義的I/O空間是32位地址空間,內(nèi)存和I/O可使用相同的配置接口。
(4)PCI設(shè)備的加載。ARMlinux不支持設(shè)備驅(qū)動的動態(tài)加載,因此需要把驅(qū)動編譯到ARM?Linux內(nèi)核中,首先需修改makefile文件,添加下行:obj_$(CONFIG_?PCI_?DEV)+=pci?_dev.o接著修改 config.in,?添?加?:bool'pci?_dev?install'CONFIGPCI?DEV,添加這行的目的是為了在配置目標(biāo)板 Linux系統(tǒng)內(nèi)核時以便對這個設(shè)備進行選擇。最后在目標(biāo)系統(tǒng)的makefile中添加設(shè)備節(jié)點:pci?_dev,C,247,0這樣在配置Linux 內(nèi)核時就可以選擇pci_dev?install,然后進行編譯,這樣PCI設(shè)備驅(qū)動就加載到了ARM?Linux系統(tǒng)中。
4?主控單元圖像采集編程
????內(nèi)核針對數(shù)碼攝像頭等視頻設(shè)備提供V4L函數(shù)接口,V4L提供針對視頻設(shè)備進行基本的I/O操作的接口函數(shù)如:open、read、write、 close,中斷處理,內(nèi)存映射及I/O通道的控制ioctl等,并定義在struct?file_operations數(shù)據(jù)結(jié)構(gòu)體中。當(dāng)應(yīng)用程序?qū)υO(shè)備進行諸如open、read、Write、close等系統(tǒng)調(diào)用操作時,內(nèi)核將通過file_operation結(jié)構(gòu)訪問驅(qū)動程序提供的函數(shù)接口.具體的采集程序如下:
PCI接口視頻采集流程如圖5所示。
????V4L為視頻采集圖像提供兩種方案①:read()直接讀取,②:mmap()內(nèi)存映射。read()通過內(nèi)存緩沖區(qū)來讀取數(shù)據(jù);而mmap()通過把設(shè)備內(nèi)存映射到用戶進程地址空間中,繞過內(nèi)核緩沖區(qū),所以mmap()方式加速I/O訪問。另外mmap()系統(tǒng)調(diào)用使用進程間通過映射同一文件實現(xiàn)共享內(nèi)存,各進程可像訪問普通內(nèi)存一樣對文件訪問。訪問時只需要指針而不用調(diào)用文件操作函數(shù).因此用mmap()采集圖像。初始化函數(shù)(camera_pict_init,canera_mmap?_init.camera_get_mbuf和采集圖像函數(shù)(camera_grap- image)介紹如下:
5?結(jié)語
????高速實時圖像數(shù)據(jù)的處理和傳輸是劃片自動化的基礎(chǔ)和精度效率的重要保證?;谕獠吭O(shè)備互連PCI總線嵌入式視覺系統(tǒng),選用了高性能的ARM處理器,嵌入可配置ARMLINUX操作系統(tǒng),可高效的完成劃切要求。整個系統(tǒng)具有高可靠性,擴展能力強,避免傳統(tǒng)工控機的病毒、補丁、死機等不便利因素。