第一篇:全高清實時視頻顯示嵌入式系統(tǒng)設(shè)計與調(diào)試
實驗名稱
全高清實時視頻顯示
嵌入式系統(tǒng)設(shè)計與調(diào)試
課程名稱
姓名學(xué)號
年級專業(yè)
嵌入式系統(tǒng)設(shè)計
彭嘉喬
3130104084
大三
電子信息工程
所在學(xué)院
電氣工程學(xué)院 全高清實時視頻顯示嵌入式系統(tǒng)設(shè)計與調(diào)試報告
3130104084 彭嘉喬
心得體會:
我想了想,還是決定把心得體會放在這里。畢竟基礎(chǔ)實驗大家做的都是一樣的內(nèi)容,何況我們做的水平也就那樣,Phase5還沒有做完。但我的感想是獨一無二的,不如把最有價值的部分排版到最前面。
如果讓我直觀總結(jié)下這22天小學(xué)期的感受,我會毫不猶豫地說:“累”。如果要具體點的話,“真的很累”。這種累,不僅是身體上的累,更是心累,大部分時候是一種深深的絕望。
我對這門課是有心理準(zhǔn)備的。上課前我就看過往屆學(xué)生寫的報告,無一例外充斥著“大學(xué)最累的課”“大學(xué)生涯難度最高的課”“累得昏天黑地”這種話,然而我還是有著迷之自信。其實如果我不是有著迷之自信的話我壓根就不會選這門課,畢竟我之前沒有上過數(shù)字系統(tǒng)設(shè)計,沒有任何與FPGA板開發(fā)有關(guān)的經(jīng)驗,對這門課的內(nèi)容完全是兩眼一抹黑。
這門課一開始是早上八點開始,到下午五點結(jié)束,后來才改成了早上八點半開始。最初我根本不適應(yīng)這樣的強度,而且由于這樣改變了我睡午覺的習(xí)慣,導(dǎo)致我第一周每天回寢室后都先補覺睡到九點,再起來繼續(xù)白天的進度到凌晨三點再睡覺,作息嚴(yán)重混亂。后面稍微調(diào)整過來了,回寢不需要補覺了,只是昏昏沉沉一晚上而已。
從Phase2第一次要求自己寫代碼開始我就感覺到了巨大的壓力。因為沒有上過數(shù)字系統(tǒng)設(shè)計,我壓根就不會Verilog語言,得拿著數(shù)設(shè)的書從零開始自學(xué),以致于連寫個激勵源文件都要折騰一天時間。這門課的玄學(xué)之處也從寫這第一個testbench開始出現(xiàn),我照著書上的例子一模一樣的形式寫的都運行不了。
當(dāng)然這只算小兒科的,Phase2.3把之前的幾個文件綜合起來,本來分別檢驗都符合要求,綜合起來后出現(xiàn)了嚴(yán)重的bug,仿真顯示scl的輸出有一半是高阻態(tài),sda的輸出始終為高阻態(tài)。即使將其強制賦值為1再輸出仍然不行。我在i2c文件里通過注釋掉其余語句逐句檢驗也發(fā)現(xiàn)不了問題。偶然間我發(fā)現(xiàn),當(dāng)注釋掉與sda有關(guān)的一切,刪掉sda的輸出引腳后仿真顯示scl正常,注釋掉scl后sda仍然全為高阻態(tài)。我開始猜測是不是sda引腳出現(xiàn)了干擾,甚至去檢查約束文件。為了這個bug我整整耽誤了兩天,最終在萬念俱灰走投無路的情況下我干脆重建了工程把代碼原樣復(fù)制了進去,結(jié)果仿真就正常了??
有趣的是重建工程前還可以生成bitstream文件,重建后就不行了。明明是一樣的代碼啊??再花半天終于生成了bitstream文件,我也不知道怎么弄好的,然后燒錄上去果然不能用,即使仿真波形和老師給的標(biāo)準(zhǔn)波形一模一樣。干脆全部推倒重寫吧。
這樣的玄學(xué)在之后的實驗中會一而再再而三地發(fā)生。同樣的代碼,重建工程復(fù)制進去就是截然不同的結(jié)果。同一個工程沒有任何改動,重啟下電腦就不能用了。同樣的bitstream文件每次燒錄顯示都不同。一模一樣的操作步驟在別人的電腦上行得通在自己電腦上就報錯。不僅是我,其他同學(xué)也都發(fā)現(xiàn)了,人人都知道了重建大法好,出bug第一反應(yīng)不再是去找原因而是先重建試試。想想以后我用的電子產(chǎn)品可能就是這樣一群人用這樣的方式做出來的,簡直慌得要死。
除了玄學(xué),很多時候一點小問題也會耽誤我們一整天的時間?;蛘呤菙?shù)百行代碼里的一句話,或者是軟件的一個設(shè)置。在此不得不吐槽一下vivado和SDK都實在是太復(fù)雜太用戶不友好了,如果老師不多教教軟件的使用,告訴我們軟件各個部分各種功能都是做什么的,只靠我們自己摸索實在是太難了。其實除了玄學(xué)問題我們真的沒辦法以外,大部分問題我們最終發(fā)現(xiàn)都是很簡單的小問題,如果經(jīng)驗豐富的話很快就能解決,可讓我們這些新手來自己解決的話往往無從下手,像無頭蒼蠅一樣浪費非常多的時間。
整個小學(xué)期,我們可能只有5%的時間真正在寫代碼,70%以上的時間雙眼空洞地盯著電腦屏幕,仰天長嘆乞求上蒼告訴自己究竟錯在了哪里。當(dāng)然上天不會回應(yīng),助教也不會。當(dāng)我發(fā)現(xiàn)無論我問什么助教都會回答:“講義上有自己好好看看吧”而我確定一定以及肯定我把講義上的每一個字都看過了而且確實沒有答案的時候,助教在我心中就已經(jīng)不存在了。
雖然我可以理解老師和助教希望我們自己解決問題以提升能力積累經(jīng)驗的苦心,但是我質(zhì)疑這樣是否有效率。讓高中生提前接觸微積分他或許會感受到數(shù)學(xué)的美和神奇進而愛上數(shù)學(xué),而換成個小學(xué)生只會感到枯燥厭煩。適當(dāng)拔高確實可以考驗打磨學(xué)生,拔得太高拔苗助長只是種折磨。如果在好幾個關(guān)鍵時刻有過來人抬我們一手,稍微指點一下,我們的進度起碼可以快一周,Phase5可能就做出來了,攀登到高峰看到最美的風(fēng)景,創(chuàng)新實驗也能做得更好??蓪嶋H上我們在很多沒有意義的細節(jié)上浪費時間,向著看不見的敵人揮拳,收不到任何正反饋,仿佛身體被掏空一般難受。
我并不怕苦怕累,畢竟能考進浙江大學(xué),吃不得苦高考就被淘汰掉了??纱蠖鄶?shù)時候我知道自己吃苦能換來什么,知道自己忙得有意義能忙出成果,但在這門課里大多數(shù)時候是“窮忙”,結(jié)果每天在電腦前忙個不停,卻可能一整天都找不出bug原地踏步,沒有任何充實的感覺,反而覺得異??仗?。
或許是作學(xué)生太久了變得嬌慣了吧,覺得世間萬事都該讓著自己。幸好在我最煩躁最憤怒的時候被老師澆了一盆冷水,現(xiàn)在還記得特別深刻:“以后工作的時候,沒人會問你遇到了什么問題,只會問你做出來了沒有?!?/p>
這么一想大概也就釋懷了吧。這個世界就是這么殘酷啊,我確實可以找一萬個理由來解釋我為什么做得這么差,可還是掩蓋不掉一個現(xiàn)實就是別人做出來了可我沒有。沒做出來就是沒做出來,還是老實承認(rèn)自己太菜吧。其實世間所有的不如意,都是自己不給力。
畢竟學(xué)渣是原罪。
以下是具體的實驗過程。
Phase1、基于 Xilinx Vivado 的嵌入式系統(tǒng)設(shè)計入門實驗。
Phase1是整個實驗的入門,與其他實驗相比,實驗很簡單,不過因為沒有指導(dǎo),需要自己摸索,所以,也是花了我們半天的時間。這次實驗是對vivado軟件的初步認(rèn)識,如建立project,IP,sdk等等。
Phase2、設(shè)計 HDMI 控制器。
Phase2首先進行的是HDMI控制器的硬件設(shè)計,根據(jù)時序圖得到hsync,vsync等信號和clk信號的關(guān)系,實驗需要進行720p和1080p的設(shè)計,程序編寫并不困難,但是由于對verilog語言的陌生,我和隊友在testbench的編寫上花費了較多的時間,后來經(jīng)過上網(wǎng)找例子教程才明白,弄懂之后發(fā)現(xiàn)并不難,主要包括復(fù)位信號,時鐘信號和輸入信號,這些語句在不同的程序里大同小異,一次編寫成功后,基本就掌握了testbench的編寫。
下一節(jié)進行的是I2C總線控制器設(shè)計,以前曾經(jīng)學(xué)習(xí)過I2C,所以我先是找了以前的I2C協(xié)議的程序,然后參考程序?qū)懗鯥2C協(xié)議,先是將頻率轉(zhuǎn)化為CLK_100K_A和CLK_100K_B,再利用二者的 | 或者&得到CLK_100K_SDA和CLK_100K_SCL,在這兩個時鐘下進行i2c_scl和i2c_sda的計算,最后經(jīng)過仿真觀察波形確定程序的正確性。
第三節(jié)是在前兩節(jié)的基礎(chǔ)上進行HDMI 顯示測試圖硬件電路設(shè)計。首先接觸到的是yuv422編碼方式,在理解這種編碼方式上花費了一些時間,盡管如此,在之后還是出現(xiàn)了反色的問題。反色問題的原因是因為技術(shù)行數(shù)據(jù)寫入了偶數(shù)行,使得yuyv的排列變成了yvyu,解決方案是地址整體加1或者減1。實驗還是分為720p和1080p兩部分,但是其實兩部分差不多,所以我們?yōu)榱斯?jié)省時間,只做了和后面實驗有關(guān)系的1080p部分。顯示彩條和彩色磚塊都是對地址進行劃分。之后的顯示小飛機需要從rom中讀取數(shù)據(jù),這一部分的步驟按照實驗講義進行,在rom的讀取語句中有些困惑,經(jīng)過詢問同學(xué),知道輸入輸出對應(yīng)rom里用到的引腳便可。
在顯示小飛機的實驗中,圖片出現(xiàn)了左右偏移的情況,最左側(cè)一列為綠色,按照我們的想法,將loc_x地址加2進行調(diào)整,如果不夠,再加2,然而加到8后最右側(cè)一列已經(jīng)出現(xiàn)明顯偏移,而最左側(cè)一列仍然是綠色,這讓我們意識到,最左側(cè)一列可能根本沒有顯示信號。進過檢查代碼,enable信號響應(yīng)需要時間,由于在讀取像素點信息時引入了enable信號,當(dāng)掃到第一列的時候enable仍為0,導(dǎo)致第一列沒有獲得像素點信息。進行相應(yīng)的更改,顯示器上得以在每一處均有顯示。最后經(jīng)過合適的調(diào)整,使得顯示不偏不倚。
Phase3、AXI-Lite 接口的設(shè)計。
Phase3 是從軟件給出的AXI-Lite協(xié)議修改得到自己要用的AXI-Lite協(xié)議,封裝成IP核添加到Block design中,利用cpu提供的150Mclk執(zhí)行。這是我第一次接觸到AXI協(xié)議,為了弄懂AXI-Lite協(xié)議,我閱讀了講義上提供的英文參考資料,因為對AXI協(xié)議沒有基礎(chǔ),所以在閱讀過程中比較吃力。在通讀一遍后,對AXI協(xié)議有了簡單的了解。從phase4.1中得到了zju_ip的AXI_Lite協(xié)議,嘗試著去理解這個協(xié)議。AXI_Lite協(xié)議包括端口定義,各種信號和對register或者rom的調(diào)用。我們主要做的內(nèi)容就是講zju_ip中的register調(diào)用改為rom調(diào)用。在調(diào)用之前的I2C程序時,需要注意輸入輸出的匹配。
IP封裝時,選擇package current resource,完成封裝后,就可以在Block design中直接調(diào)用創(chuàng)建的IP,選擇自動連接,然后將輸入輸出引腳引出。Block design完成后,有時會發(fā)現(xiàn)IP核中的錯誤,需要對IP進行修改,可以直接找到IP的程序文件用記事本或其他閱讀軟件打開修改保存,然后在upgrade IP,然后generate outputs得到更新后的IP。直接在已創(chuàng)建好的IP上進行修改更新,比重新封裝一個新的IP要簡單快捷。
搭建好block design后,生成比特流文件并打開sdk,在sdk中編寫軟件,用cpu通過axi協(xié)議訪問rom,對rom進行讀寫的操作。
Phase4、AXI-Full 接口的設(shè)計。
Phase3中用到的是axi slave,在phase4中用到的是axi master,master的程序代碼與slave相比更加繁雜。在4.1提供了一份波形圖供參考,我們通過波形圖分析各個信號之間的關(guān)系。在信號的關(guān)系中,txn_request信號和axi總線的關(guān)系最為復(fù)雜,也最為重要。txn_request信號
sdk寫完后進行燒錄,出現(xiàn)了綠屏的現(xiàn)象,這是因為沒有在sdk中寫入elf文件,寫入elf文件后在顯示器上顯示花屏,這是因為airbus.h文件沒有正確的放入sdk中。在修改了一些錯誤后,終于在顯示器上有了顯示。
示器上顯示出的大飛機圖片出現(xiàn)了左右偏移的情況,且偏移的幅度很大。我們又開始進行漫長的debug過程。先是修改了地址位,結(jié)果大飛機卻出現(xiàn)了雪花,急忙將地址為修改回來。后來,聽從同學(xué)的意見,我們將fpga板子重啟,重新燒錄,在顯示器上得到了正確的顯示。
全高清數(shù)碼相框的實驗中,短學(xué)期已經(jīng)將要結(jié)束,我們直接應(yīng)用了老師提供的bmp.c和main.c代碼,不過直接用這寫代碼在編譯時不通過,問題出現(xiàn)在“f_mount(0,&fs);”一句,報錯的原因是因為參數(shù)不夠,打開“ff.h”文件查看f_mount的用法,并進行修改,編譯得以通過。向sd卡里復(fù)制bmp圖片,然后查到板子上,燒錄后在顯示器上沒有顯示圖片,而在sdk中顯示“airbus1 open success”和“It is not a bmp file”,出現(xiàn)這個問題的原因是因為main.c中的“sprintf(filename,“0:/bmp1080p/airbus%d.bmp”,j);”語句與sd卡中的bmp文件名airbus_1不匹配所導(dǎo)致,修改語句為
“sprintf(filename,“0:/bmp1080p/airbus_%d.bmp”,j);”bmp文件能夠在顯示屏上正常顯示。這是出現(xiàn)的又一個問題只能顯示前airbus_1.bmp至airbus_9.bmp這9張圖片,這是因為文件名不能超過8個字符,我的解決辦法是直接刪掉airbus_9之后的圖片并修改main.c中的for循環(huán)語句的循環(huán)次數(shù),使得能夠在顯示器上循環(huán)顯示9張圖片。
Phase5 全高清攝像頭視頻采集
在完成phase4之后,已經(jīng)到了短學(xué)期的末尾,所以整個phase5我們只是進行了GPIO口的實驗部分。GPIO口在block design中添加,與scl和sda總線進行連接。GPIO引出的引腳可以自己設(shè)定如FPGA板子上的開關(guān)按鈕,只要在xdc中進行標(biāo)注,在sdk中說明即可。這樣就可以實現(xiàn)硬件和軟件的綜合。
第二篇:嵌入式遠程視頻采集系統(tǒng)的設(shè)計與實現(xiàn)(基于S3C2410)
嵌入式遠程視頻采集系統(tǒng)的設(shè)計與實現(xiàn)(基于S3C2410)
發(fā) 布 時 間 : 2008-11-19 來 源 : 中電網(wǎng) 作 者 : 張永強,趙永勇,李崇德 瀏 覽 :
984
多媒體通信技術(shù)的發(fā)展為信息的獲取和傳輸提供了豐富的手段,視頻采集是其中不可缺少的重要組成部分,該系統(tǒng)基于S3C2410的ARM9芯片和嵌入式Linux操作系統(tǒng),采用USB攝像頭捕捉視頻,經(jīng)MPEG-4算法壓縮編碼,系統(tǒng)直接與網(wǎng)絡(luò)相連,用戶使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器和流媒體播放程序即可查看遠程視頻影像。硬件系統(tǒng)
系統(tǒng)硬件平臺選用基于ARM9架構(gòu)嵌入式芯片S3C2410,穩(wěn)定工作在202MHz主頻,板載64MB SDRAM 64MB FLASH,主板資源包括:主USB口、從USB口、10M/100M以太網(wǎng)口,觸摸屏、彩色LCD、鍵盤、8個用戶自定義LED數(shù)碼管,A/D,RTC電路,2個串口、1個JTAG通用接口,音頻模塊,支持MPEG4,MP3編解碼,3個168PIN的擴展插座,32位的數(shù)據(jù)總線,保留充分?jǐn)U展空間。
其中標(biāo)配模塊包括:IC卡+PS2模塊、IDE硬盤+CF卡模塊、PCMCIA+SD/MMC模塊。另外可選配模塊有:GPS模塊,GPRS模塊,F(xiàn)PGA模塊,CAN+AD+DA模塊、紅外模塊、藍牙模塊、攝像頭模塊。軟件系統(tǒng)
2.1 內(nèi)核配置與USB攝像頭驅(qū)動
假定已經(jīng)搭建好嵌入式Linux的開發(fā)環(huán)境,下面第一步工作就是USB攝像頭的安裝與驅(qū)動。首先檢查Linux Kernel中是否已經(jīng)添加了USB模塊的支持,并且加入Video4Linux支持。
Multimedia devices→Video For Linux
Video For Linux→[*]V4L information in proc filesystem
在主菜單的USB Support下還有各種攝像頭的驅(qū)動,選中將要使用的攝像頭芯片類型。
<>USB IBM(Xirlink)C-it Camera support<*>USB OV511 Camera support<>USB Philips Cameras <>USB SE401 Camera support<>USB STV680(Pencam)Camera support<>USB 3com HomeConnect(akavicam)support 在USB攝像頭選購時,優(yōu)先考慮Linux內(nèi)核公開支持的攝像頭芯片,不然要額外編寫相應(yīng)的USB攝像頭驅(qū)動程序,然后進行編譯、安裝。在此選用網(wǎng)眼公司的V3000產(chǎn)品,他采用了OV511的芯片。
確定USB攝像頭被正常驅(qū)動后,下一步就是使用Video4Linux提供的API函數(shù)集來編寫視頻采集程序。
2.2 基于V4L設(shè)計的視頻采集模塊
在Linux下,所有外設(shè)都被看成是一種特殊的文件,稱為設(shè)備文件。系統(tǒng)調(diào)用是內(nèi)核和應(yīng)用程序之間的接口,而設(shè)備驅(qū)動程序則是內(nèi)核和外設(shè)之間的接口。他完成設(shè)備的初始化和釋放、對設(shè)備文件的各種操作和中斷處理等功能,為應(yīng)用程序屏蔽了外設(shè)硬件的細節(jié),使得應(yīng)用程序可以像普通文件一樣對外設(shè)進行操作。
Linux系統(tǒng)中的視頻子系統(tǒng)Video4Linux為視頻應(yīng)用程序提供了一套統(tǒng)一的API,視頻應(yīng)用程序通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用即可操作各種不同的視頻捕獲設(shè)備。Video4Linux向虛擬文件系統(tǒng)注冊視頻設(shè)備文件,應(yīng)用程序通過操作視頻設(shè)備文件實現(xiàn)對視頻設(shè)備的訪問。
Linux下與Video4Linux相關(guān)設(shè)備及用途如表1所示。
這里主要針對設(shè)備文件/dev/video進行視頻捕捉方面的程序設(shè)計。
Linux下視頻采集流程如圖2所示。
其中用到的主要函數(shù)有:
Camera_open():用來開啟視頻設(shè)備文件,使用前需要首先聲明一個video_device類型的設(shè)備文件。
Camera_get_capability():通過調(diào)用ioctl()函數(shù)取得設(shè)備文件的相關(guān)信息,并存放到video_capability結(jié)構(gòu)里。
Camera_get_picture():通過調(diào)用ioctl()函數(shù)取得圖像的相關(guān)信息,并且存放到video_picture結(jié)構(gòu)里。
Camera_close():用來關(guān)閉設(shè)備文件。Camera_grab_image():用來抓取圖像,采用mmap方式,直接將設(shè)備文件/dev/video0映射到內(nèi)存,加速文件I/O操作,還可以使多個線程共享數(shù)據(jù)。
剩下的還有設(shè)備初始化、參數(shù)設(shè)備等相關(guān)函數(shù),不再詳述。
2.3 視頻壓縮編碼模塊
獲取圖像數(shù)據(jù)后,可以直接輸出到FrameBuffer進行顯示,由于本系統(tǒng)要將采集到的視頻影響通過網(wǎng)絡(luò)傳輸出去,所以在傳輸之前要對原始的圖像數(shù)據(jù)進行壓縮編碼,在此選用MPEG-4視頻編解碼方案。和其他標(biāo)準(zhǔn)相比,MPEG-4壓縮比更高,節(jié)省存儲空間,圖像質(zhì)量更好,特別適合在低帶寬條件下傳輸視頻,并能保持圖像的質(zhì)量。
MPEG-4中基于對象的視頻編碼過程可以分為3步進行:
(1)從原始視頻流中分割視頻對象。
(2)對視頻對象進行編碼,對不同視頻對象的運動信息、形狀信息、紋理信息分配不同的碼字。對輸入的任意形狀的VOP序列,用基于塊的混合編碼技術(shù)編碼,處理順序是先IVOP后PVOP,BVOP。在對VOP的形狀信息編碼后,取得任意形狀VOP的采樣,每個VOP劃分為不相交的宏塊,每個宏塊含有4個8×8象素塊進行運動補償以及紋理編碼,已編碼的VOP幀保存在幀存中,在當(dāng)前VOP幀和已編碼VOP幀之間的計算運動矢量;對將編碼的塊和宏塊,計算他們的運動補償預(yù)測誤差;運動補償預(yù)測后的IVOP及誤差用8×8塊DCT變換,并進行DCT系數(shù)的量化,然后是游程編碼和熵編碼。
(3)對各個視頻對象的碼流進行復(fù)合,每個視頻對象的形狀、運動紋理信息復(fù)合成VOL比特流,各視頻對象視頻流復(fù)合成統(tǒng)一的碼流輸出。對視頻流進行壓縮編碼以后,接下來就要實現(xiàn)網(wǎng)絡(luò)傳輸部分的功能。
2.4 JRTPLIB網(wǎng)絡(luò)傳輸模塊
流媒體指的是在網(wǎng)絡(luò)中使用流技術(shù)傳輸?shù)倪B續(xù)時基媒體,RTP是目前解決流媒體實時傳輸問題的好辦法,JRTPLIB是一個面向?qū)ο蟮腞TP庫,他完全遵循RFC1889設(shè)計,下面講述如何在Linux平臺上運用RTP協(xié)議進行實時流媒體編程。
2.4.1 初始化 在使用JRTPLIB進行實時流媒體數(shù)據(jù)傳輸之前,首先應(yīng)該生成RTPSession類的一個實例來表示此次RTP會話,然后調(diào)用Create()方法來對其進行初始化操作。RTPSession類的Create()方法只有一個參數(shù),用來指明此次RTP會話所采用的端口號。
2.4.2 數(shù)據(jù)發(fā)送
當(dāng)RTP會話成功建立起來之后,接下來就可以開始進行流媒體數(shù)據(jù)的實時傳輸了。首先需要設(shè)置好數(shù)據(jù)發(fā)送的目標(biāo)地址,RTP協(xié)議允許同一會話存在多個目標(biāo)地址,這可以通過調(diào)用RTPSession類的AddDestination()、DeleteDestination()和ClearDestinations()方法來完成。目標(biāo)地址全部指定之后,接著就可以調(diào)用RTPSession類的SendPacket()方法,向所有的目標(biāo)地址發(fā)送流媒體數(shù)據(jù)。
2.4.3 數(shù)據(jù)接收
對于流媒體數(shù)據(jù)的接收端,首先需要調(diào)用PollData()方法來接收發(fā)送過來的RTP或者RTCP數(shù)據(jù)報。由于同一個RTP會話中允許有多個參與者(源),因此既可以通過調(diào)用GotoFirstSource()和GotoNextSource()方法來遍歷所有的源,也可以通過調(diào)用GotoFisstSourceWithDat()和GotoNextSourceWithData()方法來遍歷那些攜帶有數(shù)據(jù)的源。在從RTP會話中檢測出有效的數(shù)據(jù)源之后,接下去就可以調(diào)用RTPSession類的GetNextPacket()方法從中抽取RTP數(shù)據(jù)報,當(dāng)接收到的RTP數(shù)據(jù)報處理完之后,要及時釋放。
JRTPLIB為RTP數(shù)據(jù)報定義了3種接收模塊,通過調(diào)用RTPSession類的SetReceiveMode()方法可以設(shè)置下列這些接收模式:
RECEIVEMODE_ALL:缺省的接收模式,所有到達的RTP數(shù)據(jù)報都將被接受;RECEIVEMODE_IGNORESOME:除了某些特定的發(fā)送者之外,所有到達的RTP數(shù)據(jù)報都將被接受,而被拒絕的發(fā)送者列表可以通過調(diào)用AddToIgnoreList(),DeleteFromIgnoreList()和ClearIgnoreList()方法來進行設(shè)置;RECEIVEMODE_ACCEPTSOME:除了某些特定的發(fā)送者之外,所有到達的RTP數(shù)據(jù)報都將被拒絕,而被接受的發(fā)送者列表可以通過調(diào)用AddToAcceptList(),DeleteFromAcceptList和ClearAcceptList()方法來進行設(shè)置。
2.4.4 控制信息 JRTPLIB是一個高度封裝后的RTP庫,只要PollData()或者SendPacket()方法被成功調(diào)用,JRTPLIB就能夠自動對達到的RTCP數(shù)據(jù)報進行處理,并且還會需在要的時候發(fā)送RTCP數(shù)據(jù)報,從而能夠確保整個RTP會話過程的正確性。
在本系統(tǒng)中,使用RTPSession JRTPLIB類庫提供的方法來實現(xiàn)底層的RTP/RTCP操作,并且把他封裝在CrtpTransmitter類中,該類從Media Sink類繼承而來,接收到相應(yīng)的媒體幀數(shù)據(jù),使用RTPSession類庫的操作把數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上。結(jié)語
本系統(tǒng)基于S3C2410平臺和Linux操作系統(tǒng),利用Video4Linux設(shè)計采集程序,使用MPEG-4壓縮編碼算法,通過實時流媒體傳輸技術(shù)實現(xiàn)了網(wǎng)絡(luò)傳輸,整個系統(tǒng)具有穩(wěn)定可靠、安裝簡便、成本低廉等特點,可擴展應(yīng)用在工業(yè)控制、視頻會議系統(tǒng)、可視電話、遠程監(jiān)控系統(tǒng)等諸多領(lǐng)域。
第三篇:嵌入式系統(tǒng)設(shè)計與應(yīng)用
第一章:
嵌入式系統(tǒng)定義:以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能,可靠性,成本,體積,功耗嚴(yán)格要求的專用計算機系統(tǒng)。(一切非PC計算機系統(tǒng))嵌入式系統(tǒng)特點:“專用”計算機系統(tǒng),運行環(huán)境差異很大,比通用PC系統(tǒng)資源少,功耗低,體積小,集成度高,成本低,具有完整的系統(tǒng)測試和可靠性評估體系,具有較長的生命周期,需要專用開發(fā)工具和方法進行設(shè)計,包含專用調(diào)試電路,多學(xué)科知識集成系統(tǒng)。嵌入式系統(tǒng)應(yīng)用范圍:汽車,工業(yè)控制,通信設(shè)備,消費電子,商業(yè)終端,航空航天,軍事需求。
嵌入式系統(tǒng)的基本開發(fā)流程:系統(tǒng)定義與需求分析階段,方案設(shè)計階段,詳細設(shè)計階段,軟、硬件集成測試階段,系統(tǒng)功能性測試及可靠性測試階段。
系統(tǒng)定義與需求分析階段:對系統(tǒng)需求進行分析,制定系統(tǒng)的設(shè)計依據(jù)。方案設(shè)計階段:確定系統(tǒng)初步設(shè)計方案并形成設(shè)計描述文檔。詳細設(shè)計階段:完善初步方案,對方案實施詳細設(shè)計。
軟硬件集成測試階段:對系統(tǒng)軟硬件進行綜合測試,驗證系統(tǒng)設(shè)計功能。
系統(tǒng)功能性能測試及可靠性測試測試:對系統(tǒng)功能,性能,可靠性進行綜合測評。
對于使用操作系統(tǒng)的嵌入式系統(tǒng)來說,嵌入式系統(tǒng)軟件結(jié)構(gòu)一般包含4個層面:板級支持包層,實時操作系統(tǒng)(RTOS)層,應(yīng)用程序接口(API)層,應(yīng)用程序?qū)?。有些資料將應(yīng)用程序接口API歸屬于OS層,按3層劃分的應(yīng)用程序控制系統(tǒng)的運作和行為;操作系統(tǒng)與硬件無關(guān),不同的嵌入式操作系統(tǒng)其組成結(jié)構(gòu)也不盡相同 嵌入式操作系統(tǒng)種類繁多,大體分為兩種:商用型和免費型
商用型:VxWorks,Windows CE,pSoS,Palm OS,OS-9,LynxOS,QNX和LYNX 免費型:Linux和uC/OS—II uC/OS—II具有執(zhí)行效率高,占用空間小,可移植性及擴展性強,實施性能優(yōu)良,穩(wěn)定性和可靠性良好等特點。其內(nèi)核采用微內(nèi)核結(jié)構(gòu),將基本功能(如進程管理,存儲管理,中斷處理)放在內(nèi)核中,留給用戶一個標(biāo)準(zhǔn)API函數(shù),并根據(jù)各個任務(wù)的優(yōu)先級分配CPU時間。交叉開發(fā)環(huán)境:交叉開發(fā)是指一個通用計算機上進行軟件的編輯編譯,然后下載到嵌入式設(shè)備中進行調(diào)試的開發(fā)方式,它通常采用宿主機/目標(biāo)機模式。
第二章:
RISC是精簡指令集
精簡指令集體系結(jié)構(gòu)的優(yōu)點:硬連線的指令譯碼邏輯,便于流水線執(zhí)行,大多數(shù)RISC指令為單周期執(zhí)行。
精簡指令集處理器的優(yōu)點:處理器關(guān)心面積小,開發(fā)時間縮短,開發(fā)成本降低,容易實現(xiàn)高性能,低成本的處理器。
精簡指令集體系結(jié)構(gòu)缺點:與CISC相比,通常RISC的代碼密度低;RISC不能執(zhí)行x86代碼;RISC給優(yōu)化編譯程序帶來了困難
ARM設(shè)計采用的RISC技術(shù)特征主要有:Load/Store體系結(jié)構(gòu),固定的32位指令,3地址指令格式。
ARM7TDM名稱具體含義:ARM7:32位ARM體系結(jié)構(gòu)4T版本;T:Thumb16位壓縮指令集;D:支持片上Debug,使處理器能夠停止以響應(yīng)調(diào)試請求;M:增強型Multiplier,與前代相比具有較高的性能且產(chǎn)生64位的結(jié)果。I:EmbeddedICE硬件以支持片上斷點和觀察點。ARM7 3級流水線:(取指級,譯碼級,執(zhí)行級)ARM9TDMI 流水線操作:(取指,譯碼,執(zhí)行,緩沖/數(shù)據(jù),回寫)5級 ARM處理器核可工作兩種狀態(tài):ARM狀態(tài)和Thumb狀態(tài)
從ARM進入Thumb狀態(tài),當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit[0]為1時,執(zhí)行“BX Rm”指令進入Thumb狀態(tài)
從Thumb進入ARM狀態(tài),當(dāng)操作數(shù)寄存器Rm的狀態(tài)位bit[0]為0時,執(zhí)行“BX Rm”指令進入ARM狀態(tài)
ARM處理器工作模式(共7種):除用戶模式外的其他六種模式稱為特權(quán)模式。特權(quán)模式:主要處理異常和監(jiān)控調(diào)用(有時也稱為軟件中斷),他們可以自由地訪問系統(tǒng)資源和切換模式
ARM處理器總共有37個寄存器,均為32位 ARM狀態(tài)下的通用寄存器分為3類: 未分組寄存器:R0~~R7(為公用寄存器)
分組寄存器:R8~~R14
R13通常用于堆棧指針SP
R14用做子程序鏈接寄存器
程序計數(shù)器:R15(PC)
用做程序計數(shù)器
ARM程序狀態(tài)寄存器中
條件碼標(biāo)志(N Z C V)
N——在結(jié)果是帶符號的二進制補碼的情況下,結(jié)果為負,N=1 否則為0 Z——結(jié)果為0 Z=1 否則為0 C——針對加法:產(chǎn)生進位
C=1 否則為0
針對減法:產(chǎn)生借位
C=0 否則為1
針對有移位操作的非加減法指令
C為移位操作中最后移出位的值
對于其他指令
C通常不變
V——對于加減法指令
操作數(shù)和結(jié)果為帶符號的整數(shù)時,產(chǎn)生溢出
V=1 否則為0
對于其他指令
V通常不發(fā)生變化 ARM的異常中斷響應(yīng)過程: 一:將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對應(yīng)的SPSR中,以實現(xiàn)對處理器當(dāng)前狀態(tài),中斷屏蔽字以及各條件標(biāo)志位的保存。二:設(shè)置當(dāng)前狀態(tài)寄存CPSR中的相應(yīng)位:
設(shè)置CPSR模式控制位CPSR[4:0],使處理器進入相應(yīng)的執(zhí)行模式
當(dāng)進入Reset或FIQ模式時,還要設(shè)置中斷標(biāo)志位(CPSR[6]=1)禁止FIQ中斷,否則其值不變
設(shè)置中斷標(biāo)志位(CPSR[7]=1),禁止IRQ中斷
三:將寄存器LR-
四:給程序計數(shù)器PC強制賦值,使程序從相應(yīng)的向量地址開始執(zhí)行中斷處理程序。
非向量中斷和中斷向量的區(qū)別和聯(lián)系
異常中斷的優(yōu)先級:復(fù)位(最高),數(shù)據(jù)異常中斷,F(xiàn)IQ,IRQ,取值指異常中止,SWI未定義指令
ARM支持的數(shù)據(jù)類型(6種):8位有符號和無符號字節(jié)
16位有符號和無符號半字,以2字節(jié)的邊界定位
32位有符號和無符號半字,以4字節(jié)的邊界定位
ARM存儲器組織:以字節(jié)為單位尋址的存儲器中有“小端”和“大端”兩種方式存儲字 小端格式:較高的有效字節(jié)存放在較高的存儲器地址,較低的有效字節(jié)存放在較低的存儲器地址
大端格式:較高的有效字節(jié)存放在較低的存儲器地址,較低的有效字節(jié)存放在較高的存儲器地址
ARM處理器能方便地配置為其中任何一種存儲器方式,但他們的缺省設(shè)置為小端格式(71頁有題)
ARM7TDM內(nèi)核的重要特性:53頁最上面
第三章:
指令分類中基本指令格式
S
可選后綴,若指定S,則根據(jù)指令執(zhí)行結(jié)果更新CPSR中的條件碼 ARM尋址方式
立即尋址有選擇題
寄存器間接尋址:ARM的數(shù)據(jù)傳送指令都是基于寄存器間接尋址,即通過Load/Store完成對數(shù)據(jù)的傳送操作
103頁舉例
可能為考題
偽操作
是ARM匯編語言程序里的一些特殊指令助記符,它的作用主要是為完成匯編程序做各種準(zhǔn)備,在源程序進行匯編時由匯編程序處理,而不是在計算機運行期間由機器執(zhí)行 ARM嵌入式系統(tǒng)程序設(shè)計可以分為ARM匯編語言程序設(shè)計、嵌入式C語言程序設(shè)計以及C語言與匯編語言的混合編程。
ARM匯編程序中
AREA指示符定義本程序段位代碼段
即申請一個定義段 161頁程序
可能考
嵌入式C語言程序設(shè)計中修飾符:interrupt、near、far、huge Interrupt在函數(shù)修飾為中斷函數(shù),沒有輸入和輸出參數(shù) 第三章課后習(xí)題見李向妮筆記
第四章
DMA
I2C
I2S 基于S3C44B0X的最小系統(tǒng)設(shè)計:
嵌入式最小系統(tǒng)是指保證嵌入式微處理器可靠工作所必需的基本電路組成的系統(tǒng),通常包括處理器單元、時鐘單元、復(fù)位單元、、存儲器單元、供電電源和調(diào)試接口。
基于ARM的嵌入式最小系統(tǒng)基本組成包括:基于ARM核的微處理器、電源電路、復(fù)位電路、時鐘電路、存儲器電路(FLASH和SDRAM)、UART接口電路和JTAG調(diào)試接口
第五章:
uC/OS—II采用的搶占式內(nèi)核是一個真正的實時操作系統(tǒng)
uC/OS—II基本特點:源碼開放;可移植性;可裁剪;搶占式內(nèi)核;可擴展的多任務(wù);可確定的執(zhí)行時間;中斷管理;穩(wěn)定性和可靠性
uC/OS—II的文件結(jié)構(gòu)(與內(nèi)核功能相關(guān)的文件):任務(wù)管理;同步通信;內(nèi)存管理;時間管理
uC/OS—II任務(wù)及其運行狀態(tài):
任務(wù)是一個簡單的程序,對應(yīng)于實際應(yīng)用中的一個邏輯功能。對uC/OS—II來說,任務(wù)是系統(tǒng)運行的基本單元,系統(tǒng)以任務(wù)為單元分配內(nèi)存資源和處理時間,每個任務(wù)都有自己獨立的寄存器和??臻g。
任務(wù)看起來就像一個無限循環(huán)永不返回的函數(shù),但是不同于函數(shù)的是,它有一套自己的內(nèi)存空間,運行時完全占用處理器資源,在任意確定的時刻都處于休眠、就緒、運行、掛起以及中斷服務(wù)這五種狀態(tài)之一 圖見書上337
第六章
uCLinux與標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理。標(biāo)準(zhǔn)Linux是針對有MMU的處理器設(shè)計的
uCLinux不使用虛擬內(nèi)存管理技術(shù),采用的是實存儲器管理策略,也就是說uCLinux系統(tǒng)對內(nèi)存的訪問是直接的
uCLinux與標(biāo)準(zhǔn)Linux系統(tǒng)在進程的創(chuàng)建
進程的執(zhí)行
進程的終止
上有著顯著不同 基于uCLinux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件開發(fā)板和宿主PC機所構(gòu)成。目標(biāo)硬件開發(fā)板用于運行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)板所用到的操作系統(tǒng)的內(nèi)核編譯、電子詞典應(yīng)用程序的開發(fā)和調(diào)試則需要通過宿主PC機來完成。目標(biāo)板用來進行內(nèi)核編譯
PC機用來進行調(diào)試
移植就是使一個實時操作系統(tǒng)能夠在某個微處理器平臺上或者微控制器上運行。uCLinux移植包括3個層次的移植: 處理器結(jié)構(gòu)層次移植、芯片層次移植、板級移植。
移植思路:開發(fā)環(huán)境確定以后,首先,要為uCLinux設(shè)計一個BootLoader,通過BootLoader來初始化硬件,引導(dǎo)uCLinux運行。BootLoader的設(shè)計可以在ads中或者Linux中實現(xiàn)。其次,針對硬件環(huán)境和設(shè)計的BootLoader修改uClinux內(nèi)核。最后,在交叉編譯環(huán)境下配置、編譯、鏈接uClinux,下載編譯得到的印象文件到FLASH,通過BootLoader來啟動uCLinux。如果參數(shù)默認(rèn)或者無參數(shù),則先執(zhí)行BootLoader,否則BootLoader第二位,參數(shù)執(zhí)行為第一位。
第四篇:ARM9嵌入式系統(tǒng)設(shè)計基于S3C2410與Linux
ARM9嵌入式系統(tǒng)設(shè)計:基于S3C2410與Linux》針對在嵌入式市場上頗具競爭力的ARM9處理器——S3C2410和開放源碼的Linux操作系統(tǒng),講述嵌入式系統(tǒng)的概念、軟硬件的開發(fā)和調(diào)試手段、嵌入式Linux驅(qū)動程序和應(yīng)用程序的開發(fā)以及圖形用戶界面MiniGUI的移植和應(yīng)用。《ARM9嵌入式系統(tǒng)設(shè)計:基于S3C2410與Linux》的特點是集嵌入式系統(tǒng)開發(fā)的理論知識和實驗教學(xué)于一體,并結(jié)合北京精儀達盛科技有限公司的開發(fā)板,給出了大量實例。
編輯推薦
《ARM9嵌入式系統(tǒng)設(shè)計:基于S3C2410與Linux》可作為高等院校嵌入式系統(tǒng)課程的教材,也可作為對嵌入式系統(tǒng)開發(fā)感興趣的讀者的入門教材,同時還可以作為從事ARM嵌入式系統(tǒng)應(yīng)用開發(fā)工程師的參考書。
當(dāng)前,嵌入式技術(shù)的應(yīng)用越來越廣泛,從航天科技到民用產(chǎn)品,嵌入式產(chǎn)品的身影無處不在,而這些嵌入式產(chǎn)品的核心——處理器決定了產(chǎn)品的市場和性能。在32位嵌入式處理器市場中,ARM處理器占有很大的份額。ARM不僅是一個公司、一種技術(shù),也是一種經(jīng)營理念,即由ARM公司提供核心技術(shù),只出售芯片中的IP授權(quán),采取了別具一格的“Chipless模式”(無芯片的芯片企業(yè)),不參與生產(chǎn),而是由合作廠商去生產(chǎn)具體的芯片和產(chǎn)品。
現(xiàn)在由于存儲空間等原因,在嵌入式芯片上編程有較大的困難,選取合適的平臺就顯得很重要。Linux自出現(xiàn)以來,得到了迅猛的發(fā)展。Linux是開放源碼的操作系統(tǒng),吸引著全世界的程序員參與到發(fā)展和完善的工作中來,所以Linux保持了穩(wěn)定而且卓越的性能。Linux在服務(wù)器領(lǐng)域已經(jīng)占有很大的份額,在圖形界面方面也不輸于Windows。由于源碼可以修改、移植,Linux在嵌入式領(lǐng)域中的應(yīng)用也越來越廣。選用Linux作為平臺,可以根據(jù)具體需要自由地裁減源碼,打造適合目標(biāo)平臺的環(huán)境,編寫最有效率的應(yīng)用程序。查看所有商品描述
第五篇:嵌入式視頻采集系統(tǒng)的設(shè)計與實現(xiàn)_韓相軍
嵌入式視頻采集系統(tǒng)的設(shè)計與實現(xiàn)
首都師范大學(xué)% 韓相軍關(guān)永王萬森王雪立
Han,Xiangjun Guan,Yong Wang,Wansen Wang,Xueli 摘要!較為理想的嵌入式視頻采集系統(tǒng)是基于!“# 的視頻采集系統(tǒng) & 本文重點闡述了嵌入式視頻采集系統(tǒng)的硬 ’
軟件設(shè)計
環(huán)節(jié)以及開發(fā)中的一些關(guān)鍵技術(shù)問題(首先以
$%”&’()%*+’
構(gòu)建視頻采集的硬件系統(tǒng) & 詳細介紹了 $,#-.-(’“//0.’.以
及所設(shè)計的視頻采集系統(tǒng)原理 & 該系統(tǒng)在 12’3&((控制下能實時將視頻像進行采集 ’
編碼和傳輸)最后提出嵌入式系統(tǒng)的開
發(fā)流程并分析嵌入式系統(tǒng)開發(fā)中的一些問題 * 關(guān)鍵詞!視頻采集)嵌入式系統(tǒng))”#$%&’(#)*& 中圖分類號 +“,%-./* 文獻標(biāo)識碼!0 01234563!45678 69:65565;<56= 27>?@A6 3B3?69 <3 ?C6;<56= 27>?@A6 3B3?69 :7365 =D!”EF ?C6 >7>6A
+.’’FG’HI’J&’’)K’.G&G’’&)G’% 引言
視頻采集系統(tǒng)是數(shù)字圖像獲取的最基本手段 & 是
進行數(shù)字圖像處理 + 多媒體和網(wǎng)絡(luò)傳輸?shù)那疤?& 它可
為各種圖像處理算法提供待處理的原始數(shù)字圖像和 算法驗證平臺 & 隨著人們對視頻圖像需求的激增和各 種圖像和視頻新的壓縮標(biāo)準(zhǔn)相繼提出 & 如
QP’*&’QP
’*+’REST’’REST+ 和
UEST’(((等 & 對高性能視頻
采集系統(tǒng)的研究將成為一個熱點 * 按系統(tǒng)的處理器不 同嵌入式視頻采集系統(tǒng)大致可分為三類 VW.X 基于專用
視頻圖像芯片的視頻采集系統(tǒng))W’X 基于 EY 的視頻采 集系統(tǒng))W&X 基于)”E 的視頻采集系統(tǒng) * 基于專用視頻圖像芯片的視頻采集系統(tǒng)其核心 處理單元為專用圖像芯片 & 該圖像芯片決定系統(tǒng)的功 能 & 其應(yīng)用主要針對某一類產(chǎn)品 $ 如數(shù)碼攝像機 %& 所
以具有一定的局限性 * 而基于 EY 機的視頻采集系統(tǒng)
最為普遍的就是基于視頻采集卡獲取數(shù)字化視頻信 息 & 通過運行相應(yīng)的 EY 程序?qū)崿F(xiàn)視頻的采集 ’ 顯示與 存儲 & 但是目前基于 EY 的算法程序通常處理時間較 長 & 很難實現(xiàn)實時的圖像處理應(yīng)用 * 相比基于專用視頻圖像芯片和基于 EY 的視頻采 集系統(tǒng)而言 & 嵌入式視頻采集系統(tǒng)可完成視頻的實時 采集 ’
傳輸以及各種視頻壓縮算法和圖像處理算法的 實現(xiàn) & 根據(jù)不同的應(yīng)用 & 可以編制不同的圖像處理程 序 & 所以具有更大的靈活性 & 并且設(shè)計與實現(xiàn)簡單 & 硬
件設(shè)計一般采用基于)“E 的視頻采集系統(tǒng) F 即 ,YY)Z 視頻信號處理芯片 ZYE[)]E^/SE_)Z)”E-的模式 實現(xiàn) * 其中 & 視頻信號處理芯片進行信號的 /)轉(zhuǎn)換 & YE_)或 SE_)或 ]E^/ 用于視頻采樣控制 &)“E 對采
集的數(shù)據(jù)進行處理 * 嵌入式視頻圖像采集系統(tǒng)主要包 括硬件設(shè)計 ’
軟件設(shè)計和操作系統(tǒng) & 個部分 *.嵌
入式視頻采集系統(tǒng)的硬件設(shè)計.P.視頻采集系統(tǒng)的基本構(gòu)成 基于)”E 的視頻采集系統(tǒng)要求對視頻信號具備 采集 ’
實時顯示 & 對圖像的處理和分析功能 * 因此 & 一
個視頻采集系統(tǒng)通??捎扇缦挛宀糠謽?gòu)成 V 視頻圖像 的采集 ’
視頻圖像的顯示輸出 ’
各種同步邏輯控制 ’ 視
頻圖像的分析和處理 ’
視頻數(shù)據(jù)的存儲 * 因此 & 對于視
頻采集系統(tǒng)的基本構(gòu)成可用圖.所示框圖描述 * 圖.視頻采集系統(tǒng)的基本框圖
韓相軍 # 碩士研究生
北京市自然科學(xué)基金資助項目 $*’)&’’-%)北京市教委
科技發(fā)展計劃面上項目 $7E&’’).’’&F’.%%)北京市高 等學(xué)校 &’’H
教育教學(xué)改革立項項目 $&’’H’IH% 嵌入式系統(tǒng)應(yīng)用 中文核心期刊!微計算機信息 “(嵌入式與 SOC)2006 年第 22 卷第 1-2 期 360元 / 年郵局訂閱號 # 82-946?。 ? 格式輸出 $ 數(shù)據(jù)輸出格式是通過 $%& 總線編程來 選擇的 $’()*+,-的內(nèi)部寄存器初始化也通過 $.& 串
行接口來完成 % 對于不同的輸入制式 & 不同的采集要
求和不同的處理要求 $ 其幀緩存要求是不相同的 $ 如 對于)/012 制
$’314 5’67-+ 視頻輸入 $ 采樣后按 89.9.格式輸出 $ 一幀數(shù)據(jù)為
:.-!*:7!.“-6;<=>?@A$ 若
緩存三幀圖像 $ 則需要 <=>?@A 空間的采集幀緩存 $ 若 按 89+9+ 格式輸出 $ 則只需.=>?@A 的幀緩存 % 系統(tǒng)可選 擇
;=!<.1>B@ 的 C24/= 在系統(tǒng)中即作為采集幀緩存 和處理后的數(shù)據(jù)幀緩存 $ 也可作下載程序的存儲器使 用 % 系統(tǒng)提供串行接口 $ 可與外部設(shè)備進行通信和傳 輸圖像數(shù)據(jù) % 其中
DBEBFG DH.I<--J)K/ 實現(xiàn)以下四 點功能 # L+M 完成系統(tǒng)中視頻采集和輸出部分的同步信號 和消隱信號的控制 $ 其中主要包括 ’(),+,-和
C//:+%+ 的行同步信號 & 場同步信號 & 消隱信號 ’ L%N 將部分邏輯單元設(shè)計為 J$JO 作數(shù)據(jù)緩存 $ 完 成外接 J$JO 的同步讀寫控制 $ 承擔(dān) ’#),+,-與 2C)的數(shù)據(jù)傳送工作 ’ P ’=C<.-2=78.與計 算機的數(shù)據(jù)通信工作以及從計算機加載各種圖像處 理算法 ’ L8N 對 ’#)*+*-輸出的數(shù)字圖像進行預(yù)處理 $ 其中 主要包括圖像數(shù)據(jù)的色度空間轉(zhuǎn)換如!3# 到 4K5 的 轉(zhuǎn)換 $ 數(shù)據(jù)格式轉(zhuǎn)換如將 89.9.轉(zhuǎn)換為 89.9-’ L*N 作數(shù)據(jù)總線接口 $ 實現(xiàn)數(shù)據(jù)的驅(qū)動傳輸?shù)裙δ?% ’=C<.-2=78.在系統(tǒng)中是各類算法實現(xiàn)的核心 器件 $ 根據(jù)不同的應(yīng)用場合 $ 可以編制不同的算法處 理程序 $ 使得該系統(tǒng)具有了很強的靈活性與通用性 % 值得強調(diào)的一點是為了便于操作系統(tǒng)中的其它外設(shè) $ 在該系統(tǒng)中 $’=C<.-2=78.的外部存儲器接口控制 寄存器必須配置為優(yōu)先使用外部存儲器模式 %!嵌 入式視頻圖像采集系統(tǒng)的軟件 設(shè)計 一個完整的嵌入式系統(tǒng)由圖 < 所示的 8 部分來 組成 % 圖 < 嵌入式系統(tǒng)組成 圖 < 中的底層是硬件系統(tǒng) $ 核心是嵌入式處理器(嵌入芯片)$ 通常這樣構(gòu)成的系統(tǒng)又被稱為是 CO& LC?I@AQ RF &SBTN 系統(tǒng) % 在硬件系統(tǒng)的上面是 5C)L 板級 支持包 N$ 包括各種必要的對底層硬件系統(tǒng)的屏蔽 $ 引 導(dǎo)上層操作系統(tǒng)在硬件系統(tǒng)上的正確運行 % 操作系統(tǒng) 正確運行之后還需要開發(fā)各種設(shè)備驅(qū)動程序 $ 目的是 給用戶的應(yīng)用程序開發(fā)提供對底層設(shè)備的屏蔽 $ 提供 一個統(tǒng)一的用戶開發(fā)接口 L/)$N% 5C)是指系統(tǒng)內(nèi)核在特定的硬件系統(tǒng)上面運行所 需要的初始化代碼和各種設(shè)備驅(qū)動程序 % 它主要包 括 # 系統(tǒng)初始化 $ 初始化 &)3 寄存器和測試 &)3 的型 號版本等 $ 它和 5RR@ERUVAW 中的初始化部分共同完成 所有的系統(tǒng)準(zhǔn)備工作 $ 使得系統(tǒng)處于預(yù)期的穩(wěn)定工作 狀態(tài) ’ 內(nèi)存管理 $ 在沒有 ==”L 內(nèi)存管理單元 N 的系統(tǒng) 里面主要是數(shù)據(jù) HUHSA 和程序 HUHSA 的管理 $ 在具有 ==“ 單元的系統(tǒng)中還要包括 ==” 的各種表的管理 $ 它主要用來實現(xiàn)內(nèi)存的映射 ’ 中斷控制器管理 $ 對于 一個 4’OC 來說 $ 中斷是不可缺少的部分 % 嵌入式操作系統(tǒng)相關(guān)技術(shù)已經(jīng)成熟 $ 由于 0BFXG 具有源碼開放 & 開發(fā)工具豐富 & 技術(shù)支持廣泛等特點 $ 視頻圖像采集系統(tǒng)選用嵌入式 0BFXG 操作系統(tǒng) LYQ# >AVVAV 0BFXG OTAWU@BRF C?I@AQN% 0BFXG 中的中斷管理 包括中斷號的申請和釋放 & 中斷屏蔽和中斷服務(wù) & 中 斷向量分配等 $ 時鐘和設(shè)備驅(qū)動程序 % 驅(qū)動程序是利用操作系統(tǒng)提供的接口 $ 完成對底 層硬件的操作 % 驅(qū)動程序的開發(fā) $ 是在操作系統(tǒng)提供 的接口基礎(chǔ)上編寫對底層硬件的操作和控制程序 $ 然 后加入到操作系統(tǒng)的內(nèi)核 % 用戶對某一個設(shè)備的訪 問 $ 首先是將用戶的各種操作傳遞給操作系統(tǒng) $ 然后 由操作系統(tǒng)調(diào)用設(shè)備的驅(qū)動程序 $ 完成對硬件的各種 數(shù)據(jù)傳輸 $ 所以驅(qū)動程序必須要告訴操作系統(tǒng)該硬件 的各種操作程序的入口地址 % 特別對于 0BFXG 下的驅(qū) 動程序開發(fā) $ 經(jīng)過調(diào)試通過的驅(qū)動程序可以編譯為一 個模塊動態(tài)地裝載入操作系統(tǒng)內(nèi)核或者從操作系統(tǒng) 內(nèi)核中刪除 Z 因此驅(qū)動程序在 0BFXG 中是可以作為內(nèi) 核的一部分來編寫 % 對于用戶程序開發(fā) $ 與通用)& 上面開發(fā)應(yīng)用程 序類似 % 但是在嵌入式應(yīng)用中 $ 應(yīng)用程序一般是作為 文件系統(tǒng)的一部分加入到操作系統(tǒng)的內(nèi)核 $ 然后重新 編譯內(nèi)核 $ 最后生成一個可以執(zhí)行的二進制壓縮映像 文件加載到系統(tǒng)的存儲空間 % 加載的加入了用戶應(yīng)用 程序的操作系統(tǒng)一般還必須固化 $ 燒到系統(tǒng)的 JEUIS 中 % 在系統(tǒng)運行時 $ 根據(jù)操作系統(tǒng)的 $*$’ 函數(shù)轉(zhuǎn)到用 戶程序執(zhí)行 % “結(jié) 論 基于 2C)的視頻采集系統(tǒng) $ 由于可以靈活的修改 其圖像處理算法 $ 它的應(yīng)用主要面向用戶的特定需求 和對實時性有較高要求的場合 % 隨著技術(shù)的 L 見 +8;頁 N BSP 嵌入式系統(tǒng)應(yīng)用!現(xiàn)場總線技術(shù)應(yīng)用 200 例.;”!“# 基于 $%& 的視頻采集系統(tǒng) 圖 # 給出了基于 ’(%)#*$(+,# 與 ’-&.!./ 構(gòu) 成的視頻采集系統(tǒng) ”’(%)#/$(+,# 可以直接和視頻 編解碼器接口 “ 該系統(tǒng)可同時完成四路視頻圖像的實 時采集 # 傳輸以及各種視頻壓縮算法和圖像處理算法 的實現(xiàn) ” 根據(jù)不同的應(yīng)用 “ 可以編制不同的圖像處理 程序 $ ’(%)#/$(+,# 有自己的圖像處理庫函數(shù) ” 可以 實現(xiàn)各類圖像處理算法 $ 因此 “ 該系統(tǒng)具有更大的靈 活性與通用性 $ 圖 # 基于 ’-&.!./ 與 $%& 的視頻采集系統(tǒng)!”#“!’(%)#/$(+,# 簡介 ’(%)#/$(+,# 是 ’0 推出的一款面向數(shù)字多媒體 應(yīng)用的 $%&” 它在 ’0 的 1+,2 $%& 內(nèi)核基礎(chǔ)上進一步 集成了完備的視頻 3 音頻輸入 3 輸出接口 % 以太網(wǎng)接口 # &104++ 總線等片上外設(shè) “ 不僅能使用戶很方便地對音 頻 5 視頻等各種復(fù)雜的運算進行高速處理 ” 還能為方 便 # 無縫地接口視頻 3 音頻編解碼器件和以太網(wǎng) 3&10 總 線等數(shù)據(jù)傳輸接口 & 因此 “ 它非常適用于-60&% 數(shù)字視 頻服務(wù)器 % 多通道數(shù)字視頻錄像機 7$-89% 多通道數(shù)字 視頻監(jiān)控等應(yīng)用 & $(+,# 的程序 3 數(shù)據(jù)空間以字節(jié)為單位進行統(tǒng)一 編址 ” 整個尋址空間為 ,:8& 其片上存儲器 % 片上外 設(shè) % 及外部存儲器接口 7;(0<9 均映射到此 ,:8 的空間 中 & $(+,# 通過外部存貯器接口 7;(0<9 訪問片外存儲 器 7<=>?@%%$AB(%CBA’%B’B9“ 如圖 # 所示 ”$(+,# 共有三個視頻口 “ 分別為-&/%-&!和 -&-&/ 與-&!則與 (D8%&%(DB%& 復(fù)用引腳的 ” 其功能選擇由 $(+,# 上的外設(shè)配置寄存器 7&;A1<:9 進行配置的 & $(+,# 支持多種外部接口!&10 接口 %E&0 接口和以太 網(wǎng)(B1 接口 “ 這些接口信號復(fù)用相同的引腳 ” 它們的 功能選擇和配置是在上電復(fù)位時通過檢測 $(+,# 上 的特殊引腳 7&10F;G%(B1F;G%E$.%&10F;;B09 的狀 態(tài)來實現(xiàn)的 &!H#“# 視頻 B3$ 采樣電路!’-&.!./ 在圖 # 系統(tǒng)中 ”’-&.!./ 是由 ’0 公司推出的一款 高性能視頻解碼器 “ 可將 G’%1%&BI 視頻信號轉(zhuǎn)換成 數(shù)字色差信號 7JC-,K#K#9” 支持兩個復(fù)合視頻或一個 % 端子輸入 & 輸出格式為 0’C 4A 8’L+.+“ 并支持 (>DM6NO?O6P ’(復(fù)制保護以及高級的-80 功能 & 不僅如 此 ”’-&.!./ 還具備了封裝小 7)# 腳的 ’Q<&9% 功耗小 的特點 7R!./ST9& 因此 “ 它非常適用于便攜 % 批量大 % 高質(zhì)量和高性能的視頻產(chǎn)品 & ’-&.!./ 可接受 # 路復(fù) 合視頻信號 71-8%9 輸入和!路超級視頻信號 7%U-OVW6 即 %XYWMU-OVW6”J319 輸入 & 該芯片包含一個擴展端口 ’ZU 端口(用于數(shù)字視頻 ’ 雙向半雙工(“ 它可直接連接 倒(&;: 或視頻電話進行編解碼 $ ’-&.!./ 的圖像端 口 ’0U 端口(支持 [ 位或!+ 位的輸出數(shù)據(jù)并帶輔助參 考數(shù)據(jù)可直接與-:B 控制器接口 $ ’-&.!./ 提供 0 # 1 總線接口 ” 其最高傳輸速率為 ,//]O^?_?“ 通過它可以 完成芯片的初始化以及設(shè)置修改等操作 $ ’-&.!./ 作 為 0 # 1 總線的從設(shè)備 ” 最多可配置為 # 個不同的從設(shè) 備地址 “ 一條 0 # 1 總線只能同時訪問 # 個 ’-&.!./ 配 置口 ” 所以 $(+,# 可以連接 , 個 ’-&.!./“ 進行 , 路 視頻輸入 $!H#H)視頻 $_B 電路!%BB‘!#!圖 # 系統(tǒng)中視頻 $_B 由視頻編碼器 %BB‘!#!完 成 $ %BB‘!#!支持 &BI 與 G’%1 格式的視頻編碼 ” 其 輸入支持 8’H+.+ 格式的數(shù)字視頻 $ %BB‘!#!有!路 復(fù)合視頻 71-8%9 輸出和!路超級視頻 7%U-OVW6“J_19 輸 出 ” 其系統(tǒng)像素時鐘頻率為!)H.(Ea“ 它可以直接接收(&;: 解碼數(shù)據(jù)和采用 ,K#K# 格式每行 ‘#/ 有效像素 的 110A 兼容 JC-數(shù)據(jù) ” 其內(nèi)部包含同步 _ 時鐘產(chǎn)生 器和數(shù)模轉(zhuǎn)換器兩部分電路 $ %BB‘!#! 同樣需要通過 0 # 1 總線進行初始化和設(shè)置修改等操作 $ 從圖 # 中可看出 “-&/ 既要做視頻輸入口 ” 也要支 持視頻輸出口 “ 即-&/ 可以工作在 1>Y^XMW 與 $O?Y=>b 兩種作模式 $ 但這兩種工作模式不能同時使用作模式 不能同時使用 $ 當(dāng)-&/ 作為 [U 位的 8’H+.+ 視頻采集 口時 ” 僅需視頻數(shù)據(jù)流串行時鐘和采集使能控制信 號 “ 串行數(shù)據(jù)流串行時鐘由 ’-&.!./ 的 %1Ic” 采集使 能控制信號則由 ’-&.!./ 的 0G’A;Q_:&1I_-8Ic 引 腳配置為通用輸出引腳來控制 “ 此時 %BB‘!#!E 不起 作用 $ 當(dāng)-&/ 作為 [U 位的 8’H+.+ 顯示口時 ”%BB‘!#!需要 E%JG17 行同步信號 9%-%JG17 場同步信號 9%II1 7#‘(Ea 的行鎖存號 9 控制 $!H#H, 系統(tǒng)原理 圖 # 系統(tǒng)其主要功能是完成視頻圖像的采集 % 處 理 % 存儲和傳輸 $ 系統(tǒng)的視頻輸入可以是 G’%1%&BI 和 %;1B(制式的任何一種 “ 或者采用 % 端子輸入 $ ’-&.!./ 完成視頻信號的 B_$ 轉(zhuǎn)換 ” 為后續(xù)處理提供 數(shù)字視頻數(shù)據(jù) “ 同時它還分離出行 % 場同步信號并輸 出系統(tǒng)時鐘供視頻 $_B 芯片和 <0 EMAC/MDIO TVP5150 EMIF64 HPI16/HPI32 TMS320DM642 (600MHz 4800MIPS) EDMA 64 Channels L1P Cache 16KB L1D Cache 16KB L2 Cache 256KB Parallel executive Units 32 bit Timers 66MHZ PCI32 20/10b VP0 20/10b VP1 20/10b VP2A TVP5150 TVP5150 TVP5150 20/10b VP2B Xilinx XC2S300 FPGA SAA7121 嵌入式系統(tǒng)應(yīng)用)變頻器與軟啟動器應(yīng)用 200 例 * #‘中文核心期刊!微計算機信息 ”(嵌入式與 SOC)2006 年第 22 卷第 1-2 期 360元 / 年郵局訂閱號 # 82-946!!模糊量 $ 可歸納一系列控制規(guī)則 $ 例如規(guī)則!“ #$ %&!’(!)* +,-.&/!’ +!0* 1234 5!’ 6!7 %!8)909%%9:* : 為規(guī)則數(shù) $+!)&+;0&% 及 6!為語言變量 $ 則由第;條規(guī)則構(gòu)成的模糊關(guān)系為 # 6!* >.+!0 > 6!* 而對于一定 &? 和 &/?$ 相應(yīng)的輸出為 # 5!8@&?>.+!= >6!*A > @&/?>.+!B > 6!*A 則 #585!.!8)$0$%$:* 圖 C 模糊控制框圖 根據(jù)控制經(jīng)驗 $ 將其中將語言變量分成七級 # 正 大.D6*$ 正中.DE*$ 正小.DFG$ 零.H*$ 負小.,F*$ 負中.,E*$ 負大.,6*’ 在實際控制中 $ 由于被控對象只能接受一個 確定的控制信號 $ 而模糊推理是一個模糊集合 $ 因此 $ 必須建立精確量和模糊量之間的轉(zhuǎn)換關(guān)系 9 即從輸出 的模糊集合中 $ 判決出一個精確量(在此采用固定量 化因子 & 比例因子及隸屬度最大原則 $ 進行離散推理 $ 求出各相應(yīng)的控制表 $ 并將數(shù)據(jù)存入-FD 內(nèi)存 $ 以便 在線使用 $ 實施實時控制(圖 I 1J 中斷采樣子程序 軟件采用定時器 1J 中斷方式 9 中斷服務(wù)子程序如 圖 I 所示(系統(tǒng)每隔一個時間段進行一次中斷 9 啟動!K ” 轉(zhuǎn)換 9 同時完成數(shù)據(jù)采集 & 數(shù)字 #$“ 控制 & 控制量輸 出 & 溫度顯示及數(shù)據(jù)保存等功能(定時器 1)中斷 $ 為-FD 處理器和計算機通訊 $ 發(fā)送數(shù)據(jù) $ 便于計算機繪制 溫度跟蹤曲線 $ 鍵盤中斷 $ 完成鍵盤掃描和獲取鍵值(此外 9 為了減小系統(tǒng)在平衡位置的振蕩 9 在軟件上采取 了數(shù)據(jù)濾波 & 設(shè)定死區(qū)等措施(!結(jié) 語 基于-FD0LJM 模糊 N 數(shù)字 D;O 差熱天平采用計算 機控制技術(shù) $ 能夠?qū)崿F(xiàn)溫度發(fā)控制 $ 并在液晶屏和計 算機上實時顯示溫度及溫度跟蹤曲線(實驗中對控制 算法進行多次實驗和調(diào)整 9 取得了很好的控制效果 $ 達 到了預(yù)期的設(shè)計目的(參考文獻 @)A 安穎 9 劉麗娜 P 基于-FD 的高速信號采集與處理系統(tǒng)的設(shè)計)Q*% 微計 算機信息 $0JJC9)RCMNCS @0A 孫增圻 $ 等 P 智能控制理論與技術(shù) @EAP 北京 # 清華大學(xué)出版社 $)SSMP @TA 于海生 $ 等 P 微型計算機控制技術(shù) @EAP 北京 # 清華大學(xué)出版社 $)SSSP @LA 張念淮 $ 等 P 5F6 總線接口開發(fā)指南 @EAP 北京 # 國防工業(yè)出版社 $0JJ)作者簡介 # 李智強 $ 男 $)SMI&$ 河南工業(yè)大學(xué)電氣工程 學(xué)院 $ 碩士(籍貫 # 山東 + 郭廣靈 $ 女 $)SM)&$ 河南工業(yè) 大學(xué)電氣工程學(xué)院 $ 高級實驗師(,!”###$ 河南鄭州河南工業(yè)大學(xué)電氣工程學(xué)院韓相軍 關(guān)永王萬森王雪立 %<166’7’ 12 F(21-G)/+1(H(7+(’’-+(78 <)I+/)6 J1-!G)6 *(+,’-.+/08K’+L+(78D###E$= &)(8M+)(7L;(@;)(8 N1(7 O)(78O)(.’(O)(78M;’6+ U 投稿日期 R0JJCPIP)IG U 修稿日期 R0JJCPIP0VG e α dt d ec E EC e c α U u D/A y D/A u α T0 A/D ADC FIFO 《 #’(技術(shù)應(yīng)用)** 例》 DSP 開發(fā)與應(yīng)用)LV