基于S3C2440處理器的嵌入式視頻采集系統(tǒng)
摘要 在研究嵌入式開(kāi)發(fā)技術(shù)的基礎(chǔ)上,提出了一個(gè)基于嵌入式處理器S3C2440的實(shí)時(shí)視頻采集系統(tǒng)解決方案。該方案通過(guò)搭建嵌入式Linux開(kāi)發(fā)環(huán)境,對(duì)T.264編碼器進(jìn)行優(yōu)化,并修改移植視頻驅(qū)動(dòng)以及C/S軟件,實(shí)現(xiàn)了系統(tǒng)的正常運(yùn)行。
關(guān)鍵詞 S3C2440;Linux;C/S軟件;視頻采集
隨著通信網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,基于網(wǎng)絡(luò)的高質(zhì)量視頻傳輸已逐步取代傳統(tǒng)的文字語(yǔ)音交互模式,成為當(dāng)今數(shù)字通信的主要研究領(lǐng)域之一。而隨著嵌入式操作系統(tǒng)和集成電路設(shè)計(jì)水平的不斷提高,嵌入式技術(shù)與通信網(wǎng)絡(luò)以及多媒體技術(shù)的融合將成為未來(lái)數(shù)字視頻通信領(lǐng)域的主流發(fā)展趨勢(shì)。
一直以來(lái),針對(duì)網(wǎng)絡(luò)傳輸實(shí)時(shí)視頻對(duì)嵌入式軟硬件都有較高要求。本文利用基于ARM920T內(nèi)核的S3C2440嵌入式微處理器,采用壓縮比更高的H.264視頻壓縮標(biāo)準(zhǔn)和開(kāi)源嵌入式Linux系統(tǒng),設(shè)計(jì)了一款基于嵌入式視頻服務(wù)器的遠(yuǎn)程實(shí)時(shí)視頻采集系統(tǒng)。
1 采集系統(tǒng)平臺(tái)搭建
1.1 系統(tǒng)硬件平臺(tái)
該采集系統(tǒng)以PC作為客戶端,以廣東友善之臂計(jì)算機(jī)科技有限公司研發(fā)的ARM9開(kāi)發(fā)板Mini2440作為視頻服務(wù)器,采用SamsungS3C2440為微處理器,用專業(yè)穩(wěn)定的CPU內(nèi)核電源芯片和復(fù)位芯片保證系統(tǒng)運(yùn)行時(shí)的穩(wěn)定性。三星公司推出的這款16/32位RISC微處理器S3C2440,采用ARM920T的內(nèi)核,典型主頻400 MHz,最高可達(dá)533 MHz,使用5級(jí)流水線技術(shù),并采用豐富的控制模塊為各種應(yīng)用提供擴(kuò)展。該采集系統(tǒng)的結(jié)構(gòu)如圖1所示。
1.2 系統(tǒng)軟件平臺(tái)搭建
PC機(jī)端使用內(nèi)核版本為2.6.18的Linux 5紅帽子企業(yè)版,由于后續(xù)需要在Windows平臺(tái)進(jìn)行FTP資料傳輸?shù)裙ぷ?,所以采取了虛擬機(jī)安裝Linux的方式,這樣方便Linux和Windows的數(shù)據(jù)網(wǎng)絡(luò)交互。虛擬機(jī)軟件版本為Vmware 6.5.1,采用的傳輸軟件為基于SFTP協(xié)議的Flash Fxp。而交叉編譯工具主要為Binutils、Gcc和Glibc。
一個(gè)嵌入式系統(tǒng)軟件角度主要分為引導(dǎo)加載程序、Linux內(nèi)核和文件系統(tǒng)3個(gè)層次,其中引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序。在負(fù)責(zé)引導(dǎo)用的Hash存儲(chǔ)器中,通常會(huì)按照?qǐng)D2的順序分布。
因?yàn)楹笃谶M(jìn)行攝像頭驅(qū)動(dòng)編寫移植過(guò)程需要大量的調(diào)試,基于網(wǎng)絡(luò)的NFS根文件系統(tǒng)就比較合適?;谶@種考慮,選擇了網(wǎng)絡(luò)功能強(qiáng)大的U-boot作為BootLoader。移植U-boot主要做了以下工作:(1)修改編譯條件,添加寄存器定義,修改時(shí)鐘。(2)修改中斷禁止部分,添加S3C24 40的中斷禁止代碼。(3)在board目錄創(chuàng)建新開(kāi)發(fā)板目錄。(4)以smdk2410.c為模板修改PLL以及UPLL的設(shè)置。(5)修改Makefile相應(yīng)配置行以支持該開(kāi)發(fā)板。
修改完畢后進(jìn)入工作目錄進(jìn)行板級(jí)配置,通過(guò)交叉編譯工具鏈對(duì)改后代碼進(jìn)行編譯。利用H-JTAG軟件進(jìn)行燒寫,如圖3所示為燒寫成功并通過(guò)超級(jí)終端引導(dǎo)完成。
根文件系統(tǒng)掛載方式主要有ramdisk,NFS和initramfs這3種。制作自啟動(dòng)的嵌入式設(shè)備需要用initramfs作為根文件系統(tǒng)的內(nèi)核進(jìn)行燒寫。先0地址處存放的是U-boot,約為100 kB;然后在0x0000~0x40000存放了約64 kB的環(huán)境變量。這兩項(xiàng)均固定,所以u(píng)Image的大小必須控制在1.75 MB以下,并從0x40000開(kāi)始存放。uImage包括內(nèi)核和根文件系統(tǒng)兩部分,需要針對(duì)其進(jìn)行裁減,以符合項(xiàng)目要求。
linux相關(guān)文章:linux教程
評(píng)論