嵌入式Linux系統(tǒng)的圖像采集與顯示
1 系統(tǒng)平臺(tái)的硬件結(jié)構(gòu)
本文使用的系統(tǒng)平臺(tái)硬件功能框圖如圖1所示,該平臺(tái)采用Samsung公司的處理器S3C2410。該處理器內(nèi)部集成了ARM公司 ARM920T處理器核的32位微控制器,資源豐富,帶獨(dú)立的16KB的指令Cache和16KB數(shù)據(jù)Cache,LCD控制器、RAM控制器,NAND 閃存控制器,3路UART、4路DMA、4路帶PWM的Timer、并行I/O口、8路10位ADC、Touch Screen接口,I2C接口,I2S接口、2個(gè)USB接口控制器、2路SPI,主頻最高可達(dá)203MHz。在處理器豐富資源的基礎(chǔ)上,還進(jìn)行了相關(guān)的配置和擴(kuò)展,平臺(tái)配置了16MB 16位的FLASH和64MB 32位的SDRAM,通過(guò)以太網(wǎng)控制器芯片AX88796擴(kuò)展了一個(gè)網(wǎng)口,另外引出了一個(gè)HOST USB接口。在USB接口上外接一個(gè)帶USB口的攝像頭。另外,還配有分辨率為320×240,256色的LCD。
2 嵌入式Linux簡(jiǎn)介
Linux操作系統(tǒng)具有相當(dāng)多的優(yōu)點(diǎn),他的內(nèi)核穩(wěn)定、功能強(qiáng)大、支持多種硬件平臺(tái)、源代碼完全開放,可裁減和低成本的特性非常適合于嵌入式應(yīng)用,并且Linux本身直接提供完整的TCP/IP協(xié)議,可非常方便地進(jìn)行網(wǎng)絡(luò)應(yīng)用。但Linux內(nèi)核本身不具備強(qiáng)實(shí)時(shí)性,且內(nèi)核體積較大,而且嵌入式系統(tǒng)的硬件資源有限,因此把Linux用于嵌入式系統(tǒng),必須對(duì)Linux進(jìn)行實(shí)時(shí)化和嵌入式化,即通過(guò)配置內(nèi)核,裁減shell和嵌入式C庫(kù)對(duì)系統(tǒng)定制,使整個(gè)系統(tǒng)能夠存放到容量較小的FLASH中,Linux的動(dòng)態(tài)模塊加載,使Linux的裁減極為方便,高度模塊化的部件使添加非常容易。
整個(gè)系統(tǒng)軟件是在嵌入式Linux的基礎(chǔ)上構(gòu)建的。S3C2410平臺(tái)使用的Linux內(nèi)核是在Linux-2.4.18內(nèi)核打上 patch-2.4.18-S3C2410這個(gè)補(bǔ)丁后編譯而成。S3C2410平臺(tái)使用的文件系統(tǒng)是yaffs,文件系統(tǒng)包括應(yīng)用程序、模塊、配置文件和庫(kù)等,圖像的采集和顯示是建立在嵌入式Linux內(nèi)核之上的,整個(gè)軟件系統(tǒng)如圖2所示。
通常宿主機(jī)和目標(biāo)板上的處理器不同,宿主機(jī)通常為Intel處理器,而目標(biāo)板如圖1所示為SAMSUNG S3C2410,所以程序需要使用針對(duì)處理器特點(diǎn)的編譯器才能生成在相應(yīng)平臺(tái)上可運(yùn)行的代碼,GNU編譯器提供這樣的功能,在編譯時(shí),可以選擇開發(fā)所需的宿主機(jī)和目標(biāo)機(jī),從而建立開發(fā)環(huán)境。在進(jìn)行嵌入式開發(fā)前的第一步工作就是把一臺(tái)PC機(jī)作為宿主機(jī)開發(fā)機(jī),并在其上安裝指定操作系統(tǒng)。對(duì)于嵌入式 Linux,宿主機(jī)PC上應(yīng)安裝Linux系統(tǒng)。之后,在宿主機(jī)上建立交叉編譯調(diào)試的開發(fā)環(huán)境,開發(fā)環(huán)境的具體建立這里不細(xì)談。本文采用移植性很強(qiáng)的C語(yǔ)言在宿主機(jī)上編寫視頻采集程序,再利用交叉編譯調(diào)試工具編譯鏈接生成可執(zhí)行代碼,最后向目標(biāo)平臺(tái)移植。
3 基于Video4Linux的圖像采集
Video4Linux是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),他為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù),在Linux下,視頻采集設(shè)備的正常使用依賴于對(duì)Video4 Linux標(biāo)準(zhǔn)的支持。如果使用Video4Linux,在編譯內(nèi)核時(shí),一定要選中Multimedia Devices下的Video for Linux選項(xiàng),本文針對(duì)的設(shè)備文件是 / dev / video,使用的器件是基于OV511的USB攝像頭。在運(yùn)行程序前,一定要先加載USB及OV511設(shè)備驅(qū)動(dòng)模塊,同時(shí)加載Video4Linux模塊,分別使用命令:modprobe usbcore,modprobe usbohci,modprobe videodev和modprobe ov511,以確保生成設(shè)備文件/dev/video,若使用的Linux操作系統(tǒng)不支持modprobe命令,也可使用insmod命令。一般來(lái)講,基于Video4Linux的圖像采集的程序流程如圖3所示。
以下簡(jiǎn)單介紹程序的編寫,在這里只給出關(guān)鍵部分的實(shí)現(xiàn)代碼。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評(píng)論