freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于arm平臺與嵌入式linux的圖像采集應用(編輯修改稿)

2024-12-13 08:42 本頁面
 

【文章內容簡介】 編譯器。手動添加 S3C2410X 處理器選項:移植后 ifeq($(CONFIG ARCH_ S3C241 0), y) TEXTADDR=0xC0008000 MACHD 咂 =s3e2410 Endif 計算機學院《嵌入式系統》課程設計報告 9 4. 3 根文件系統制作 4. 3. 1 文件系統介紹 文件系統是指在一個物理設備上的任何文件組織和目錄,它構成了操作系統上所有數據基礎,是系統中龐大復雜且又是最為基本和重要的資源。嵌入式Linux 下的文件系統結構如圖 11 所示 : 圖 3 4. 3. 2 構建嵌入式 Linux文件系統 1. busybox 簡介 Busybox 是用于制作可執(zhí)行命令工具集的工具,它被非常形象地稱為嵌入式Linux 系統中的 “瑞士軍刀”,因為它將許多常用的 UNIX 命令和工具結合到了一個單獨的可執(zhí)行程序中。雖然與相應的 GNU 工具比較起, busybox 所提供的功能和參數略少,但在嵌入式系統中已經足夠了。 2.建立 Linux 文件系統 在 busybox 的編譯過程中,可以非常方便地加減它的“插件”,最后的符號鏈接也可以由編譯系統自動生成。下面詳細介紹利用 busybox 建立一個全新的Linux 文件系統的方法。 4. 4 USB 攝像頭設備驅動移植 Linux 設備驅動程序概述 計算機學院《嵌入式系統》課程設計報告 10 系統調用是操作系統內核和應用程序之問的接口,沒備驅動程 序是操作系統內核和機器硬件之間的接口。設備驅動程序為應川程序屏蔽了硬件的細節(jié),這樣在應用程序看來,硬件設備只是個設備文件.應用程序可以像操作普通文件樣對硬件設備進行操作。設備驅動程序是內核的部分.它完成以下的功能: 1.對設備初始化和釋放。 2.把數據從內核傳送到硬件和從硬件讀取數據。 3.讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據。 4.檢測和處理設備出現的錯誤。 4. 4. 2 USB 攝像頭驅動程序的移植 目前市場流行的攝像頭型號主要是中星微的 ZC0301/ 02/ 03,占據了約90%的市場份額 ,而廣大嵌入式愛好者推崇的則是 OmniVision 公司的 OV51 l,主要是因為 2. 4 內核版本以后支持了 OV511 的驅動,以至各種研究學習資料較多,應用也非常方便。 4. 5 圖像采集程序設計 1. Vide04Linux 簡介 Vide04Linux 是 Linux 中關于視頻設備的內核驅動,他為針對視頻設備的應用程序編程提供一系列接口函數,配合適當的視頻采集設備和相應的驅動程序,可以實現影像采集、 AM/ FM 廣播、頻道切換等功能 i491,在遠程會議、可視電話、視頻監(jiān)控系統中有著廣泛的應用。 2.圖像采集程序設計 在 Linux 下,視頻采集設備的正常使用依賴于對 Vide04 Linux 標準的支持。如果使用 Vide04Linux,在編譯內核時,一定要選中 Multimedia Devices 下的Videofor Linux 選項,本文針對的設備文件是/ dev/ videoO,使用的器件是基于 ZC301 的 USB 攝像頭。 Vide04Linux 定義的數據結構及使用函數如下: struct__v41_struct { Int fd; struct video_capability capability; struct video_buffer buffer; struct video_window window; struct video_channel channel[8]; struct video_picture picture; struct video_mmap mmap; struet video_mbuf mbuf; unsigned char *map; }; typedef struct_v41_struet v41_deviee; extem int v41_open(char*, v41_deviee*); extem int v41_elose(v41__deviee*); extem int v41_get_eapability(v41_device*); 計算機學院《嵌入式系統》課程設計報告 11 extem int v41_set_norm(v41_device*, int); extem int v41_get_picture(v41_deviee*); extem int v41_grab_init(v41_deviee*, int,int); extem int v41_grab_frame(v41_device*, int); extem int v41_grab_sync(v41_device*); extem int v41_mmap_init(v41_deviee*); extem int v41_get_mbuf(v41__device*); extern int v41_get_picture(v41_deviee*); extern hat v41_grab_picture(v41_device*, unsigned int); extern int v41 set_buffer(v41_device*); extem int v41get_buffer(v41_device*); extem int v41_switch__ehannel(v41_device*, int); Vide04Linux 中截取圖象的方法有兩種: 1. mmap(內存映射 )方式 2. 直接讀設備方法 利用 mmap 方式截取視頻圖像的程序設計的主要過程如下: (1)打開視頻: intv41_pen(char *dev,v41 一 device *vd) { if(!dev) dev=” / dev/ videoO” ; if((vdfd=open(dev,O_RDWR))O){ pcrror(” v41_open:” ); return1; } if(v41_getcapability(vd)) return1; if(v41_get_picture(vd)) retun1; return 0; } (2)讀 videocapability 中信息 int v41_get_capability(v41_device *vd) { if(ioctl(vdfd, VIDIOCGCAP,amp。(vdcapability))0){ perror(” v41_get_capability:” ); return l; return 0。 } 關閉設備 : Int v41_close(v41_device *vd) { closc(vdfd); retun 0: } 計算機學院《嵌入式系統》課程設計報告 12 5 圖形用戶界面的實現 5. 1 MiniGLⅡ的特點 MiniGUI 原是由魏永明支持的遵循 GPL 條款發(fā)布的一個自由軟件項目,其目標是為實時嵌入式系統提供一個輕量級的圖形用戶界面支持系統。項目自 1998年底開始到現在已經非常成熟和穩(wěn)定,并且在許多實際產品和項目中得到應用。 MiniGUI 是一種針對嵌入式設備的、跨操作系統的圖形用戶界面支持系統,它 是嵌入式圖形中間層軟件。它主要運行于 Linux 控制臺,實際可以運行在任何一種具有 POSIX 線程支持的 POSIX 兼容系統上。它為用戶定義了一組輕量級的窗口和通信設備接口,利用這些接口,每個應用程序可以建立多個窗口,而且可以在這些窗口中繪制圖形,也可以利用 MiniGUI 建立菜單、按鈕、列表框等常見的GUI 元素。 與其他基于 Linux 的圖形界面支持系統相比, MiniGUI 系統在 API 完備性、系統規(guī)模、可移植性、資源消耗等各個方面都具有相對優(yōu)勢,符合嵌入式開發(fā)環(huán)境對 GUI 系統的輕型、占用資源少、高性能、高可靠性、可 配置等方面的要求,因此在嵌入式領域中有廣闊的應用前景。 圖 4 計算機學院《嵌入式系統》課程設計報告 13 5. 3 MiniGLⅡ程序開發(fā) 5. 3. 1 MiniGUI 體系結構 從整體結構上看, MiniGUl 是分層設計的,體系結構如下圖 : 圖 5 在最低層, GAL 和 IAL 提供底層圖形接口以及輸入設備的驅動;中間層是MiniGUl 的核心層,包括窗口系統必不可少的各個模塊;最頂層是 API,為用戶提供編程接口。 5. 4 應用程序的編寫 ????? //包含頭文件 static void my_notif_proc(HWND hwnd, int id, int nc, DWORDadd_data) //改變顏色子函數 { if(nc===BN_DBLCLK) SetWindowBkColor(hwnd, 3333); //3333 表示顏色值 InvalidateRect(hwnd, NULL, TRUE); } Static int StaticDemoWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM 1Param)//窗口過程函數 { HWND hwnd; switch(message){ case MSG_CREATE: hwnd=CreateWindow(CTRL_BUTTON,” Push me”, WS— VISIBLE| BP_PUSHBUTTON|BS NOTIFY,100, 50, 100, 200, 50, hWnd, 0); SetNotificationCallback(hwnd, my_notif_proc); 計算機學院《嵌入式系統》課程設計報告 14 return 0; case MS_DESTROY: DestroyAllControls(hWnd); rturnO; easeMSG_CLOSE: DestroyMainW39。mdow(hWnd); PostQuitMessage(hWnd); return 0; ) return DefaultMainWinProc(hWnd, message, wPamm, IParam); } int MiniGUIMain(int argc, cxmst char* argvf[])//主程序入口 { ......... //定義變量 ifdef LITE VERSION SetDesktopRect(0, 0, 1024, 768); endif Createlnfo. dwStyle= Ws_VISIBLE|WS— BORDER l ws cAPTION; hMainWnd=CreateMainWindow(amp。Createlnfo); //創(chuàng)建主窗口 if OaMainWnd===HWND_INVALID) return 1; ShowWindow(hMainWnd, SW_SHOWNORMAL);∥顯示主窗口 ??? } 6 網絡傳輸功能的實現 6. 1 socket 簡介 在網絡歷史的早期,由國際標準化組織 (ISO)和國際電報電話咨詢委員會(cCITT)共同出版了 開發(fā)系統互聯 (OSI)7 層參考模型,把網絡過程包括從應用請求到網絡介質按功能分成 7 個分立的層次,如下圖所示: 圖 6 計算機學院《嵌入式系統》課程設計報告 15 6. 2 網絡傳輸功能的實現 6. 2. 1 socket通信過程 一般在設計網絡程序時,會分為服務器端與客戶端兩部分,而一個網絡程序本身就具有 Client/ Server 結構,所以在說明 TCP 網絡程序的流程時,可以分為 TCP Client 端及 TCP Server 端。服務器首先啟動,通過調用 socket0,建立一個 socket,然后調用 bind0 將該 socket 和本地網絡地址綁定在一起,再調用listen0 使 socket 做好偵聽的準備,并規(guī)定它的請求隊列的長度,之后調用accept0 來接收連接??蛻舳嗽诮?socket 后,就可調用 connect0 和服務器建立連接。連接建立后,客戶機和服務器之間就可以通過調用 send0 和 recv0 來發(fā)送和接收數據。最后,數據傳送結束后,雙方調用 close0 關閉 socket。 6. 2. 2 socket通信的實現 為實現 PC 機和硬件平臺的網絡通信,首先在編譯內核時必須選中對網絡功能的支持,并在制作嵌入式文件系統時加入對網絡功能的支持。然后將新的內核和文件系統燒寫到目標板上 。 程序實現的流程圖如下圖所示: 圖 7 計算機學院《嵌入式系統》課程設計報告 16 6. 2. 3 運行結果 圖 8 可以看到 PC機與硬件平臺成功建直了連接,叮以進行通信,達到了預期目標。以后即
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1