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

正文內(nèi)容

嵌入式linux操作系統(tǒng)畢業(yè)論文(編輯修改稿)

2024-11-13 09:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 倡導(dǎo)的自由軟件除了 Linux 操作系統(tǒng)外, GNU 的軟件還包括編譯器 (gcc, g+十 )、二進(jìn)制轉(zhuǎn)換工具 (objdump, objcopy)、調(diào)試工具 (gdb, gdbserver, kgdb)和基于不同硬件平臺(tái)的開(kāi)發(fā)庫(kù)。 3. 2. 1 GNU開(kāi)發(fā)工具集 交叉編譯環(huán)境的建立 最重要的就是要有一個(gè)交叉編譯器。本系統(tǒng)開(kāi)發(fā)用到的編譯器是 ~linuxgcc,它是 gcc 的 ~改版。編譯器的生成依賴于相應(yīng)的函數(shù)庫(kù)。配置一個(gè) gcc 的交叉編譯器一般包含如下幾個(gè)步驟 : (1)取得 binutils, gcc, glibc 的源碼 。 (2)配置并編譯 binutils,得到下一步要用到的匯編器和連接器 。 (3)配置并編譯 gcc 源代碼,生成 gcc 編譯器 。 (4)配置 glibc 編譯生成 glibc 的 C 函數(shù)庫(kù) 。 (5)再次配置并編譯 gcc 源代碼,生成其它語(yǔ)言的編譯器如 :c++等。 也可從網(wǎng)上直接下載相關(guān)的工具 鏈 (toolchain ) o armlinuxtoolchain 包括一系列的開(kāi)發(fā)調(diào)試工具 17]。工具集如表 所示。 表 3. 2 GNU 工具集 9 其中主要組件包括 : (1) armlinuxgcc: ARM 交叉編譯器,可以以交叉編譯的形式開(kāi)發(fā)目標(biāo)應(yīng)用程序,即在宿主機(jī)上開(kāi)發(fā)編譯可在目標(biāo)上運(yùn)行的二進(jìn)制文件。 armlinuxgcc 的使用方法同標(biāo)準(zhǔn) gcc 基本一樣,可以參考 GUN 的 gcc 文檔。 (2)輔助工具。包括 ~linuxobj dump(可以反編譯二進(jìn)制文件 ), armlinuxas(匯 編編譯器 ), armlinuxld(連接器 )。 (3) armlinuxgdb(交叉調(diào)試器 ),可使用多種交叉調(diào)試方式, gdbbdm(背景調(diào)試工具 ), gdbserver(使用以太網(wǎng)絡(luò)調(diào)試 )o ARMLinux 的打印終端通常情況下是串口,內(nèi)核在啟動(dòng)時(shí)所有的信息都打印到串口終端 (使用 printf 函數(shù)打印 ),同時(shí)也可以通過(guò)串口終端與系統(tǒng)交互。 建立宿主機(jī)交叉開(kāi)發(fā)環(huán)境 在進(jìn)行應(yīng)用程序開(kāi)發(fā)之前,要在宿主機(jī)上建立和配置好開(kāi)發(fā)應(yīng)用程序所需要的開(kāi)發(fā)環(huán)境。 (1)安裝 RedHat 。需要 選擇定制 (custom)安裝,并且在定制時(shí)選擇NFS(網(wǎng)絡(luò)文件系統(tǒng) )和 dialup workstation(撥號(hào)工作站 )。配置網(wǎng)絡(luò)時(shí),主機(jī) IP 要與開(kāi)發(fā)板的 IP 在同一子網(wǎng)內(nèi)。 (2)安裝工具鏈,即把 toolchain 壓縮包解壓到相應(yīng)的目錄下,默認(rèn)的路徑是/usr/local 下,把 ~linux 工具鏈目錄加入到環(huán)境變量 PATH 中,可實(shí)現(xiàn) ~linuxgcc編譯器直接調(diào)用。 (3)安裝 ARMLinux 操作系統(tǒng),即把 ARMLi~壓縮包解壓到相應(yīng)目錄下,采用下列命令安裝 到根目錄下。 tar zxvf C/ (4)配置 NFS ( Network File System )。配置 NFS 的目的是讓目標(biāo)板通過(guò)網(wǎng)絡(luò)映像宿主機(jī)硬盤(pán),從而使宿主機(jī)的硬盤(pán)成為目標(biāo)板的一個(gè)虛擬硬盤(pán),這時(shí)你宿主機(jī)硬盤(pán)上的文件映射為目標(biāo)板上某一目錄中的文件。 (5)配置 mini( mini 作為目標(biāo)板的顯示終端,以監(jiān)控目標(biāo)板上程序的運(yùn)行 )。運(yùn)行 minis 進(jìn)行配置,選擇 Serial port setup 項(xiàng),設(shè)置如下參數(shù) : Serial Device: /dev/ttySO Bps/ParBits: 115200 8N 1 Hardware Flow Control: no Software Flow Control: no 10 基于嵌入式 Linux的上層軟件開(kāi)發(fā)模式 3. 3. 1 應(yīng)用程序的開(kāi)發(fā) 本系統(tǒng)在軟件模塊開(kāi)發(fā)時(shí)采用了以下兩種嵌入式 Linux 應(yīng)用程序開(kāi)發(fā)模式 : (Intel CPU)上調(diào)試通過(guò)后,再移植到 PXA255 評(píng)估板上。這種HOST 方式下有 gdb 調(diào)試工具可用。移植的工作要解決一個(gè)函數(shù)庫(kù)的問(wèn)題。由于嵌入式 Linux 開(kāi)發(fā)平臺(tái)提供的工 ibc 庫(kù)同標(biāo)準(zhǔn)的 libc 庫(kù)有一些不同,在程序移植時(shí)可能會(huì)有函數(shù)未定義的問(wèn)題。對(duì)于這種問(wèn)題,就需要編制這些要用到卻又未定義的函數(shù)。同時(shí)也需要改動(dòng) Makefile 以適應(yīng)目標(biāo)板。 NFS 直接在目標(biāo)板上開(kāi)發(fā) 將宿主機(jī)和目標(biāo)板通過(guò)串口相連,在宿主 PC 機(jī)上運(yùn)行 mini 作為目標(biāo)板的顯示終端,利用 NFS 在目標(biāo)板端 mount 上宿主機(jī)硬盤(pán),這樣就可直接在目標(biāo)板上調(diào)試宿主機(jī)硬盤(pán)中交叉編譯好的應(yīng)用程序。下面給出這種直接開(kāi)發(fā)模式下的開(kāi)發(fā)流程 : (1)用串口和網(wǎng)線將宿主機(jī)和目標(biāo)板連接起來(lái)。要求宿主機(jī)安裝了 NFS (2)在宿主機(jī) 上編寫(xiě)應(yīng)用程序,并進(jìn)行交叉編譯,生成可執(zhí)行的文件。交叉編譯可以用命令行的方式,如果有多個(gè)源文件,則可以通過(guò)編寫(xiě) Makefile 來(lái)進(jìn)行編譯; (3)將編譯好的文件放到開(kāi)啟 NFS 服務(wù)的目錄下 (4)在宿主機(jī)上啟動(dòng) mini 作為目標(biāo)板的仿真終端 (5) mount 映射宿主機(jī)硬盤(pán)根目錄 /到板子的 /mnt 目錄下,例如 :mount 192. 168. 0. 2://mnt (6)在 mini 下即可運(yùn)行映射目錄下的可執(zhí)行文件 調(diào)試信息通過(guò)串口打印在宿主機(jī)的 mini 屏幕上或記錄在 syslog 文件中,這樣便可 進(jìn)行應(yīng)用程序的調(diào)試。假如程序運(yùn)行不對(duì),可方便切換到宿主機(jī)去編輯、編譯,只要不重啟開(kāi)發(fā)板就不必再作任何操作,因?yàn)?mount 的宿主機(jī)硬盤(pán)上的應(yīng)用程序會(huì)自動(dòng)覆蓋更新,再重新執(zhí)行的就是更改后的新版本。這樣反復(fù)調(diào)試、更改、編譯再調(diào)試,而不必反復(fù)燒寫(xiě)開(kāi)發(fā)板,直至程序工作正常,再將最終定版的映象文件燒寫(xiě)到開(kāi)發(fā)板上。 應(yīng)用程序的調(diào)試 直接在目標(biāo)板上調(diào)試應(yīng)用程序采用以下三種方法 : (1)打印串口。這是嵌入式系統(tǒng)中最常用的調(diào)試手段,雖然簡(jiǎn)單但卻有效實(shí)用。其實(shí)幾種方法相比之下,最有效便捷的方法還是 printf,尤其配合 mount 進(jìn) 11 行應(yīng)用程序的調(diào)試。 (2)使用 log 記錄文件。例如,使用 syslog 將應(yīng)用程序運(yùn)行過(guò)程中的中間信息全部 v 錄在 //var/log/syslog 下。 (3) gdb 調(diào)試。首先需要在板子上移植 gdbserver,才支持通過(guò)以太網(wǎng)或串口遠(yuǎn)程調(diào)試。下面介紹以太網(wǎng)調(diào)試步驟 : 先在目標(biāo)板端啟動(dòng) gdbserver cd /bin gdbserver :7070 test 這里 test 為用戶應(yīng)用程序可執(zhí)行文件名且已燒制在板子 /bin 目錄下, 7070 為T(mén)CP 端口號(hào),宿主機(jī) 通過(guò)這個(gè)端口與板子建立調(diào)試通道。端口號(hào)可任意選取,一般大于 20200 然后在宿主機(jī)側(cè)鍵入下列命令 : cd /home/test armlinuxgdb 則進(jìn)入 gdb 提示符 : (gdb) target remote :7070 該命令與板子建立 TCP 連接以進(jìn)行調(diào)試,下一步進(jìn)行調(diào)試時(shí)不要運(yùn)行 run,而應(yīng)該用 continue,即 c。 要實(shí)現(xiàn) gdb(或 ddd)的源代碼級(jí)調(diào)試,必須在編譯應(yīng)用程序時(shí)打開(kāi)一 g 參數(shù)。采用該選項(xiàng)進(jìn)行編譯, FLAT 格式的可執(zhí)行文件大小沒(méi)有變化,只是 .gdb 文件變大,這樣在 gdb 和 ddd 環(huán)境中就可以看到源代碼。 本章小結(jié) 本章首先介紹了嵌入式 Linux 的發(fā)展與特點(diǎn),給出了交叉開(kāi)發(fā)環(huán)境的建立方法,然后詳細(xì)分析了內(nèi)核的引導(dǎo)和啟動(dòng)過(guò)程以及內(nèi)核移植、文件系統(tǒng)移植和Bootloader 設(shè)計(jì)等嵌入式系統(tǒng)開(kāi)發(fā)所涉及的重要環(huán)節(jié),最后介紹了基于嵌入式Linux 的上層軟件開(kāi)發(fā)模式。 第四章視頻數(shù)據(jù)采集與處理 視頻數(shù)據(jù)的采集是監(jiān)控系統(tǒng)實(shí)現(xiàn)的第一步,也是圖像識(shí)別和視頻壓縮的基礎(chǔ)。本監(jiān)控系統(tǒng)由多個(gè)子系統(tǒng)構(gòu)成 ,在系統(tǒng)功能模塊劃分的基礎(chǔ)上設(shè)計(jì)一個(gè)良好的應(yīng)用程序結(jié)構(gòu)和一系列符合視頻數(shù)據(jù)特點(diǎn)的數(shù)據(jù)結(jié)構(gòu),并借助 Linux 多線程的程序設(shè)計(jì)方法和多種系統(tǒng)調(diào)用完成功能模塊的軟件設(shè)計(jì)是本章工作的重點(diǎn)。 嵌入式 Linux下的視頻采集模塊軟件設(shè)計(jì) 本系統(tǒng)運(yùn)行的平臺(tái)是基于 Xscale 的嵌入式 Linux 系統(tǒng)。系統(tǒng)在啟動(dòng)后,啟用了 MMU,系統(tǒng)進(jìn)入保護(hù)模式,所以應(yīng)用程序就不能直接讀寫(xiě)外設(shè)的 v0 區(qū)域 (包括 v0 端口和 vo 內(nèi)存 ),這時(shí)一般就要借助于該外設(shè)的驅(qū)動(dòng)來(lái)進(jìn)入內(nèi)核完成這個(gè)工作。所以系統(tǒng)中的視頻采集分為兩步實(shí)現(xiàn) :一是為 USB 接口的數(shù)碼 攝像頭在內(nèi)核中寫(xiě)入驅(qū)動(dòng),二是編寫(xiě)上層應(yīng)用程序獲取視頻數(shù)據(jù)。 12 4. 1. 1 USB 攝像頭驅(qū)動(dòng)程序加載 系統(tǒng)使用的是 USB 接口的外置數(shù)碼攝像頭, USB 設(shè)備和嵌入式硬件開(kāi)發(fā)平臺(tái)構(gòu)成了一個(gè) USB 通信系統(tǒng)。 Linux USB 主機(jī)驅(qū)動(dòng)由三部分組成 [[13]。主機(jī)控制器驅(qū)動(dòng)程序 ( HCD ) , USB 驅(qū)動(dòng) (USBD)、設(shè)備端驅(qū)動(dòng)程序 (Slave Device Driver),相互關(guān)系如圖 所示。 圖 4. 1 Linux USB 驅(qū)動(dòng)程序結(jié)構(gòu) HCD是 USB主機(jī)驅(qū)動(dòng)程序中直接與硬件交互的軟件模塊 。USBD部分 是整個(gè)USB 主機(jī)驅(qū)動(dòng)的核心,提供 USB 總線管理,帶寬管理等 。USB 設(shè)備端驅(qū)動(dòng)是最終與應(yīng)用程序交互的軟件模塊,向應(yīng)用程序屏蔽了硬件實(shí)現(xiàn)了的細(xì)節(jié),使得應(yīng)用程序可以像操作普通文件一樣來(lái)操作外部設(shè)備,即可以使用和操作文件中相同的、標(biāo)準(zhǔn)的系統(tǒng)調(diào)用接口函數(shù)來(lái)完成對(duì)硬件設(shè)備的打開(kāi)、關(guān)閉、讀寫(xiě)和 I/O 控制操作。為應(yīng)用程序提供訪問(wèn)接口。 對(duì)于 USB 攝像頭來(lái)說(shuō),其核心是感光芯片和數(shù)據(jù)處理 DSP 芯片。其中 DSP芯片是影響攝像頭視頻采集速度以及相關(guān)性能的主要因素。本系統(tǒng)選用的是中星微 zc301,用它將攝取的數(shù)字視頻圖像直接通過(guò) USB接口送入開(kāi)發(fā)板進(jìn)行處理。 這款芯片的特點(diǎn)是內(nèi)含數(shù)字?jǐn)z像 IC 接口, DRAM 接口、實(shí)時(shí)圖像壓縮引擎、USB 接口、 FIFO 等功能,通過(guò)采用影像光源自動(dòng)增益補(bǔ)強(qiáng)技術(shù),自動(dòng)亮度、白平衡控制技術(shù),色飽和度、對(duì)比度、邊緣增強(qiáng)以及伽馬矯正等先進(jìn)的影像控制技術(shù),搭配 COMS 感光芯片使各項(xiàng)技術(shù)指標(biāo)都能與 CCD 芯片相媲美,因此,完全可以滿足后面系統(tǒng)圖像識(shí)別報(bào)警處理以及實(shí)時(shí)監(jiān)控的需要。 在 Linux 下,對(duì)驅(qū)動(dòng)程序的編譯添加一般有兩種方式 [14]??梢造o態(tài)編譯進(jìn)內(nèi)核,再運(yùn)行新的內(nèi)核來(lái)測(cè)試 。也可以編譯成模塊在運(yùn)行時(shí)加載。第一種方法 效率較低,但在某些場(chǎng)合是唯一的方法。模塊方式調(diào)試效率很高,它使用 insmod工具將編譯的模塊直接插入內(nèi)核,如果出現(xiàn)故障,可以使用 ~od 從內(nèi)核中卸載模塊。不需要重新啟動(dòng)內(nèi)核。但嵌入式系統(tǒng)是針對(duì)具體應(yīng)用的,所以本系統(tǒng)將 linux下的 zc301 驅(qū)動(dòng)程序通過(guò) menuconfig 配置以及內(nèi)核重編譯將設(shè)備驅(qū)動(dòng)程序以靜 13 態(tài)的方法編譯進(jìn)內(nèi)核,再將帶有 zc301 驅(qū)動(dòng)的內(nèi)核,將其燒寫(xiě)到開(kāi)發(fā)板上即可使用。 USB 模塊的視頻數(shù)據(jù)流如圖 所示。 圖 4. 2 USB 模塊的視頻數(shù)據(jù)傳輸 4. 1. 2 基于 V4L 模塊的程序開(kāi)發(fā) Linux 下的 Video for Linux,簡(jiǎn)稱 V4L 為市場(chǎng)現(xiàn)在常見(jiàn)的電視采集卡和并口及 USB 口的攝像頭提供統(tǒng)一的編程接口【 }s}。同時(shí)也提供無(wú)線電通信、文字電視廣播解碼和垂直消隱的數(shù)據(jù)接口?,F(xiàn)在己經(jīng)有了 Video for Linux Two 驅(qū)動(dòng),即V4L2,它解決了 V4L 中存在的一些問(wèn)題,并提高了硬件性能。但是,目前 V4L2仍然沒(méi)有集成到 Linux 的內(nèi)核中,因此,本系統(tǒng)的視頻采集開(kāi)發(fā)仍然是基于 V4L的。 Linux 下與 V4L 相關(guān)的設(shè)備文件與其用途如表 所示。 表 4. 1 V4L 的設(shè)備文件與用途 USB 攝 像頭在 Linux 中和打印機(jī),鼠標(biāo)一樣,屬于字符設(shè)備。其主設(shè)備號(hào)是810 在嵌入式平臺(tái)上使用 USB 攝像頭時(shí),先用 mknod 命令創(chuàng)建一個(gè)設(shè)備結(jié)點(diǎn)/dev/video0 再用 In命令建立該結(jié)點(diǎn)與 /dev/v41/video0 的連接。訪問(wèn)時(shí),用 open()打開(kāi)設(shè)備 /dev/video0 即可。 利用 V4L 對(duì) USB 攝像頭的編程需要 Li~下兩個(gè)系統(tǒng)調(diào)用,分別是 ioctl()調(diào)用和 mmap()調(diào)用。 ioctl ( input/output control ) o ioctl 系統(tǒng)調(diào)用的功能是通過(guò)打開(kāi)的文件描述符對(duì)各種文件尤其是 字符設(shè)備文件進(jìn)行控制,完成特定的 I/O 操作。 V4L支持的 ioctl命令大概有二十幾個(gè) [[16],在應(yīng)用中主要用的是下面幾個(gè)命令 : 14 表 4. 2 V4L 的主要控制命令 mmap 調(diào)用的功能是實(shí)現(xiàn)內(nèi)存映射,即將指定文件或?qū)ο蟮囊徊糠钟成涞絻?nèi)存中去。這樣可以通過(guò)訪問(wèn)特定的內(nèi)存區(qū)域來(lái)直接對(duì)文件或?qū)ο筮M(jìn)行存取。與 :ead 和 write。調(diào)用相比,這種 I/O 方式效率更高。 mmap 調(diào)用同樣適用于設(shè)備文件,即可以用 mmap 調(diào)用將設(shè)備文件映射到內(nèi)存中去,對(duì)設(shè)備文件的讀寫(xiě)就轉(zhuǎn)化為對(duì)內(nèi)存的讀寫(xiě)。對(duì)持續(xù)采集大量圖像數(shù)據(jù)的攝像頭來(lái)說(shuō) ,用 mmap 的內(nèi)存映射方式來(lái)傳送數(shù)據(jù),更能體現(xiàn)效率。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1