????半導(dǎo)體后封裝工藝中關(guān)鍵設(shè)備劃片機(jī)" title="劃片機(jī)">劃片機(jī)是通過主軸高速旋轉(zhuǎn),、y向精密分度定位,、x向?qū)к壐咚龠\(yùn)動,、θ向多角度旋轉(zhuǎn)實(shí)現(xiàn)對多個芯片圖形劃分加工的設(shè)備??捎糜诠杓呻娐?、SAW器件、Ga/As,、鈮酸鋰,、銻化鉍,、厚膜電路、磷化銦等特種材料和脆硬材料晶片的劃切分片,。
????a鑒于在精密劃片機(jī)檢測系統(tǒng)的檢測速度和精度上的要求,,需要分辨率較高的CCD攝像機(jī)對劃切圖像進(jìn)行快速提取。PC-Based產(chǎn)品的硬件技術(shù)已經(jīng)實(shí)現(xiàn),,但PC結(jié)構(gòu)中仍存在諸多因素影響劃片機(jī)的實(shí)際使用,如硬盤可能出現(xiàn)的機(jī)械故障,、風(fēng)扇帶來的不穩(wěn)定因素,、抗震性能指標(biāo),抗干擾指標(biāo)等等,,這些因素依然是制約IPC(PC工控機(jī))應(yīng)用于半導(dǎo)體設(shè)備的問題之一,。通過引入嵌入式硬件方案解決了這個難題,同時(shí)也大大降低了成本,。
????基于嵌入式硬件平臺的精密劃片機(jī)硬件部分采用主從式雙CPU結(jié)構(gòu)模式,,主CPU為ARM處理器。精密劃片機(jī)控制主體由3個單元構(gòu)成:監(jiān)控管理單元,、四軸運(yùn)動控制單元和劃片機(jī)視覺單元,。劃片機(jī)視覺單元是通過對圖像實(shí)時(shí)采集來監(jiān)測晶圓劃切過程;監(jiān)控管理單元主要功能是監(jiān)測設(shè)備運(yùn)行,、設(shè)置加工參數(shù)等,;四軸運(yùn)動控制單元是采用專用運(yùn)動控制芯片,接收S3c2510傳遞的參數(shù)來直接控制電機(jī)完成運(yùn)動控制,。
????視覺采集系統(tǒng)基于的PCI總線具備32Bit數(shù)據(jù)總線,,時(shí)鐘頻率可達(dá)66?MHz,最快傳輸速率達(dá)到264?MB/s,,能夠滿足劃片機(jī)視覺系統(tǒng)需要,,設(shè)計(jì)的核心板擴(kuò)展2個PCI插槽。嵌入式設(shè)備需編寫PCI設(shè)備的驅(qū)動程序?qū)F(xiàn)有的PCI設(shè)備應(yīng)用到嵌入式主板中,。
????劃片機(jī)的視覺采集系統(tǒng)由光學(xué)照明系統(tǒng),、CCD攝像器件、圖像處理軟件等部分構(gòu)成,,視覺系統(tǒng)構(gòu)成見圖1,。
????
2?硬件電路設(shè)計(jì)
????根據(jù)PCI系統(tǒng)的總線拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)了劃片圖像采集系統(tǒng)的硬件結(jié)構(gòu)。其中的攝像頭,,根據(jù)劃片機(jī)視覺的要求選用35萬像素的PCI接口的圖像采集模塊" title="圖像采集模塊">圖像采集模塊,。
????系統(tǒng)主處理器采用三星公司的S3C25lO,考慮到S3C2510內(nèi)置PCI控制器,,擴(kuò)展的2塊PCI接口可分別和四軸嵌入式運(yùn)動控制芯片MCX314As和圖像采集模塊連接,。系統(tǒng)框圖見圖2,。
????芯片為ARM?940T內(nèi)核,最高運(yùn)行頻率可達(dá)200?MHz,,芯片內(nèi)置的SDRAM控制器,、PCI控制器、USB控制器和10M/100M以太網(wǎng)控制器等一系列接口控制器,。滿足精密劃片機(jī)的實(shí)時(shí)控制要求,,主板的外部時(shí)鐘源為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)核運(yùn)行頻率為133MHz,,PCI設(shè)備運(yùn)行頻率為66?MHz,,USB設(shè)備運(yùn)行頻率為 48?MHz。圖3是S3C2510的PCI插槽圖,。
????系統(tǒng)上電后,,PCI插槽上圖像采集模塊將等待CCD攝像頭模擬信號的輸入,當(dāng)圖像采集模塊得到模擬數(shù)據(jù)后便對模擬數(shù)據(jù)進(jìn)行編碼,,處理后的數(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機(jī)制,,可以將內(nèi)部的 PCI總線地址映射到內(nèi)存或者外圍設(shè)備,。在設(shè)計(jì)中設(shè)定PCI總線的時(shí)鐘頻率為66?MHz,因此主板上PCI總線的最高傳輸速度可以達(dá)到 264?MB/s,,能夠滿足數(shù)據(jù)的快速傳輸,。系統(tǒng)利用時(shí)鐘反饋來彌補(bǔ)PCI的時(shí)鐘延遲。
????當(dāng)PCI控制器工作在PCI?HOST,、模式下時(shí),,其時(shí)鐘源是由系統(tǒng)內(nèi)部提供的,,S3C2510有3個PCI時(shí)鐘輸出信號 PCICLK1,PCICLK2和PCILK3,,將PCI設(shè)備診斷寄存器PCIDIAG0的DC3位設(shè)置為l,,即將PCICLK3設(shè)置為輸出無效,此時(shí) PCICLK1與PCICLK3相連,,通過PCICLK3將時(shí)鐘信號反饋給處理器內(nèi)核,,這樣可以使外部PCI設(shè)備與PCI時(shí)鐘保持一致,從而彌補(bǔ)時(shí)鐘延遲,。
????系統(tǒng)以及PCI控制器的啟動順序如圖4所示,。其中在對PCI控制器的特殊功能寄存器進(jìn)行配置時(shí)需要首先關(guān)閉中斷,即設(shè)置PCIINTEN=0,。然后設(shè)置PCI控制和狀態(tài)寄存器PCICON[ARB,ATS,,SPL,,IOP,MMP],,某些需要的情況下還要設(shè)置PCI診斷寄存器,,這個寄存器是針對測試功能的,在PCMCIA?Host工作模式下不需要進(jìn)行設(shè)置,。然后要對與基地址有關(guān)的寄存器PCIBAM0~l和PCI-BATPA0~2進(jìn)行設(shè)計(jì),,設(shè)置完之后要配置有關(guān)PCI重啟和時(shí)鐘的寄存器,其中關(guān)鍵的一步是設(shè)置PCI重啟和時(shí)鐘寄存器PCIRCC[MSK]=0,,這是為了防止重啟信號和時(shí)鐘信號的沖突,。
????在PCI控制器偵測外圍設(shè)備并初始化外圍設(shè)備的寄存器時(shí),需要完成以下工作:
????(1)讀取所有的配置寄存器值,,包括PCIHID,,PCIHSC,PCIHSSID等,;
????(2)檢查BAR(Backup?Address?Register)的范圍并一一分配空間,;
????(3)使能外部設(shè)備" title="外部設(shè)備">外部設(shè)備并激活總線。
????以上配置都是在PCI圖像采集模塊的驅(qū)動中完成的,,因?yàn)橐呀?jīng)把驅(qū)動程序加載到了ARM?Linux的內(nèi)核中,,所以系統(tǒng)啟動之后,操作系統(tǒng)會自動配置PCI外部設(shè)備,。
3?ARM?Linux移植和設(shè)備驅(qū)動" title="設(shè)備驅(qū)動">設(shè)備驅(qū)動實(shí)現(xiàn)
3.1?Boot?Loader的移植
????Boot?Loader是和硬件緊密連接的,,系統(tǒng)是通過Boot?Loader。來調(diào)用操作系統(tǒng)內(nèi)核并最終運(yùn)行操作系統(tǒng),。本系統(tǒng)采用了U- Boot(Universal?Boot?Loader)作為,。Boot?Loader,,U-Boot相當(dāng)于一個小型的Linux系統(tǒng),其工作涉及到硬件系統(tǒng)的初始化,、存儲空間分配等,,在設(shè)計(jì)過程中主要完成了以下工作,相關(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ù)手冊來進(jìn)行的,;
(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ù)實(shí)際應(yīng)用中SDRAM的大小來確定,;
(7)修改串口參數(shù)文件serial.C。主要是設(shè)置串口波特率,,波特率計(jì)算公式為:RUBRDIVO=((int)(MCLK/16./(gd_>baudrate)+0.5)-1),;
(8)修改start.S文件,一個可執(zhí)行的Image必須有一個入口點(diǎn)并且只能有一個唯一的全局入口,,修改start.S中的.globl?_start?_start:使其放在Rom(flash)的0×0地址,。編譯U-Boot,通過Jtag口下載到目標(biāo)板進(jìn)行調(diào)試,。
3.2?ARM?Linux設(shè)備驅(qū)動編寫
????Linux的內(nèi)核是由設(shè)備管理,、進(jìn)程管理、文件系統(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)啟動時(shí)被調(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í)以便對這個設(shè)備進(jìn)行選擇,。最后在目標(biāo)系統(tǒng)的makefile中添加設(shè)備節(jié)點(diǎn):pci?_dev,,C,247,,0這樣在配置Linux 內(nèi)核時(shí)就可以選擇pci_dev?install,,然后進(jìn)行編譯,這樣PCI設(shè)備驅(qū)動就加載到了ARM?Linux系統(tǒng)中,。
4?主控單元圖像采集編程
????內(nèi)核針對數(shù)碼攝像頭等視頻設(shè)備提供V4L函數(shù)接口,,V4L提供針對視頻設(shè)備進(jìn)行基本的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è)備進(jìn)行諸如open、read,、Write,、close等系統(tǒng)調(diào)用操作時(shí),內(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)存映射到用戶進(jìn)程地址空間中,,繞過內(nèi)核緩沖區(qū),所以mmap()方式加速I/O訪問,。另外mmap()系統(tǒng)調(diào)用使用進(jìn)程間通過映射同一文件實(shí)現(xiàn)共享內(nèi)存,,各進(jìn)程可像訪問普通內(nèi)存一樣對文件訪問。訪問時(shí)只需要指針而不用調(diào)用文件操作函數(shù).因此用mmap()采集圖像,。初始化函數(shù)(camera_pict_init,,canera_mmap?_init.camera_get_mbuf和采集圖像函數(shù)(camera_grap- image)介紹如下:
5?結(jié)語
????高速實(shí)時(shí)圖像數(shù)據(jù)的處理和傳輸是劃片自動化的基礎(chǔ)和精度效率的重要保證?;谕獠吭O(shè)備互連PCI總線嵌入式視覺系統(tǒng),,選用了高性能的ARM處理器,嵌入可配置ARMLINUX操作系統(tǒng),,可高效的完成劃切要求,。整個系統(tǒng)具有高可靠性,擴(kuò)展能力強(qiáng),,避免傳統(tǒng)工控機(jī)的病毒,、補(bǔ)丁、死機(jī)等不便利因素,。