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

正文內(nèi)容

基于嵌入式linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的研究學(xué)士學(xué)位畢業(yè)論文(編輯修改稿)

2024-07-24 20:22 本頁面
 

【文章內(nèi)容簡介】 放在Flash中,而且操作系統(tǒng)一般都需要在存儲器上建立文件系統(tǒng)才能對存儲器進(jìn)行操作,因此需要在Flash上建立文件系統(tǒng)以滿足嵌入式操作系統(tǒng)和實(shí)際的需要。 在Linux里,系統(tǒng)對獨(dú)立的文件系統(tǒng)不是用設(shè)備標(biāo)示符來存取(比如驅(qū)動器編號或驅(qū)動器名稱),而是連接成為一個(gè)樹型結(jié)構(gòu)。Linux在安裝新的文件系統(tǒng)時(shí),把它安裝到指定的安裝目錄,從而合并到這個(gè)單一的文件系統(tǒng)樹上。Linux的一個(gè)重要特征是它支持多種不同的文件系統(tǒng),文件系統(tǒng)將存放在系統(tǒng)硬盤上的文件和目錄用可以理解的統(tǒng)一形式提供給用戶,讓用戶不必考慮文件系統(tǒng)的類型或底層物理設(shè)備的特性。在嵌入式系統(tǒng)中,常用的文件系統(tǒng)有RAMFS、JFFSCRAMFS等。 ,也是壓縮和只讀格式的。它主要優(yōu)點(diǎn)是將文件數(shù)據(jù)以壓縮形式存儲,在需要運(yùn)行的時(shí)候進(jìn)行解壓縮。由于它存儲的文件形式是壓縮的格式,所以文件系統(tǒng)不能直接在Flash上運(yùn)行。雖然這樣可以節(jié)約很多Flash存儲空間,但是文件系統(tǒng)運(yùn)行需要將大量的數(shù)據(jù)拷貝進(jìn)RAM中,消耗了RAM空間。CRAMFS的移植過程如下:首先生成image:在kernel/script/cramfs有生成image程序的源代碼,編譯之后生成mkcramfs。建立一個(gè)目錄,將需要放到文件系統(tǒng)的文件復(fù)制到這個(gè)目錄。如果目錄名為/mnt,則命令語句為:./mkcramfs /mnt 然后,讓內(nèi)核支持CRAMFS:在kemel目錄執(zhí)行命令make menuconfig配置內(nèi)核需求,選中MTD(MemoryTechnologyDeviee)設(shè)備,選擇直接編譯到內(nèi)核中去,這樣就不用insmod了。選中其中的相關(guān)選項(xiàng),可以根據(jù)自己的使用情況定制,多選中一些只是使啟動變得慢一些,內(nèi)核大一點(diǎn),沒有什么其他壞處。如果CRAMFS文件系統(tǒng)不是作為系統(tǒng)的根文件系統(tǒng),要改mtdblock0的主設(shè)備號從31改為30,這個(gè)修改在文件kernel/include/linux/mtd/。然后重新編譯內(nèi)核,重新燒寫內(nèi)核和文件系統(tǒng)的映像。系統(tǒng)啟動以后,就可以移植CRAMFS文件系統(tǒng)了,燒寫如下:tftp flash root 至此本系統(tǒng)開發(fā)環(huán)境己經(jīng)建立起來。4設(shè)備驅(qū)動程序開發(fā)簡介 Linux的驅(qū)動程序?qū)哟谓Y(jié)構(gòu)在嵌入式系統(tǒng)中,操作系統(tǒng)是介于應(yīng)用程序與硬件之間的一個(gè)系統(tǒng)軟件,其作用是為用戶提供統(tǒng)一的API接口。操作系統(tǒng)所面對的硬件設(shè)備種類非常多,不同型號不同廠家的設(shè)備又具有各自不同的特點(diǎn),因此,要支持某種設(shè)備就必須提供這種設(shè)備的控制代碼,然后把它加載進(jìn)內(nèi)核,內(nèi)核才能使用該設(shè)備。從內(nèi)核的角度來看,驅(qū)動程序是一個(gè)設(shè)備的代表。當(dāng)內(nèi)核需要與某個(gè)設(shè)備交互時(shí),就找到該設(shè)備的驅(qū)動程序,而后通過標(biāo)準(zhǔn)的接口調(diào)用驅(qū)動程序的相應(yīng)函數(shù),控制設(shè)備,而內(nèi)核并不需要知道驅(qū)動程序如何工作,也不需要了解設(shè)備的細(xì)節(jié),設(shè)備的細(xì)節(jié)由驅(qū)動程序掌握。驅(qū)動程序可以動態(tài)地加載和卸載,內(nèi)核只包含必需設(shè)備的驅(qū)動程序。設(shè)備驅(qū)動程序一般需要完成以下功能:(1)對設(shè)備初始化和釋放;(2)把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);(3)讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序的請求數(shù)據(jù);(4)檢測和處理設(shè)備出現(xiàn)的錯(cuò)誤。在Linux操作系統(tǒng)下有三類主要設(shè)備文件類型:塊設(shè)備、字符設(shè)備和網(wǎng)絡(luò)設(shè)備。用戶進(jìn)程正是通過設(shè)備文件來與硬件打交道。每個(gè)設(shè)備文件都有其文件屬性(c/b),表示是字符設(shè)備還是塊設(shè)備。另外每個(gè)文件都有2個(gè)設(shè)備號,第一個(gè)是主設(shè)備號,標(biāo)識驅(qū)動程序;第二個(gè)是從設(shè)備號,標(biāo)識使用同一個(gè)設(shè)備驅(qū)動程序的不同硬件設(shè)備。設(shè)備文件的主設(shè)備號必須與設(shè)備驅(qū)動程序在登記時(shí)申請的設(shè)備號一致,否則用戶進(jìn)程將無法訪問驅(qū)動程序。Linux的設(shè)備驅(qū)動程序可分為三個(gè)主要部分:(1) 自動配置和仞始化子程序,負(fù)責(zé)檢測所要驅(qū)動的硬件設(shè)備是否存在和能否正常工作。如果該設(shè)備正常,則對這個(gè)設(shè)備及其他必需的條件(如中斷、DMA通道)進(jìn)行申請并初始化。這部分驅(qū)動程序僅在初始化時(shí)被調(diào)用一次。(2) 服務(wù)于I/O請求的子程序,又稱為驅(qū)動程序的上半部分。調(diào)用這部分程序是由于系統(tǒng)調(diào)用的結(jié)果。這部分程序在執(zhí)行時(shí),系統(tǒng)仍認(rèn)為是與進(jìn)行調(diào)用的進(jìn)程屬于同一個(gè)進(jìn)程,只是由用戶態(tài)變成了核心態(tài),但仍具有進(jìn)行此系統(tǒng)調(diào)用的用戶程序的運(yùn)行環(huán)境,因而可以在其中調(diào)用與進(jìn)程運(yùn)行環(huán)境相關(guān)的函數(shù)。(3) 中斷服務(wù)子程序,又稱為驅(qū)動程序的下半部分。在Linux操作系統(tǒng)中,并不是直接從中斷向量表中調(diào)用設(shè)備驅(qū)動程序的中斷服務(wù)子程序,而是由Linux系統(tǒng)束接收硬件中斷,再由系統(tǒng)調(diào)用中斷服務(wù)子程序。中斷可以在任何一個(gè)進(jìn)程運(yùn)行時(shí)產(chǎn)生,因而在中斷服務(wù)子程序被調(diào)用時(shí),不能依賴于任何進(jìn)程的狀態(tài),也就不能調(diào)用任何與進(jìn)程運(yùn)行環(huán)境有關(guān)的函數(shù)。因?yàn)樵O(shè)備驅(qū)動程序一般支持同一類型的若干設(shè)備,所以一般在系統(tǒng)調(diào)用中斷服務(wù)子程序時(shí),都帶有一個(gè)或多個(gè)參數(shù),以唯一標(biāo)識請求服務(wù)的設(shè)備。在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過設(shè)備驅(qū)動程序提供的一組固定的入口點(diǎn)來進(jìn)行,這組入口點(diǎn)在驅(qū)動程序初始化時(shí)向系統(tǒng)進(jìn)行登記,以便在系統(tǒng)適當(dāng)?shù)臅r(shí)候調(diào)用。一般來說,字符型設(shè)備驅(qū)動程序能夠提供如下幾個(gè)入口點(diǎn):(1) open入口點(diǎn):打開設(shè)備準(zhǔn)備I/O操作,對字符特別設(shè)備進(jìn)行打丌操作,都會調(diào)用設(shè)備的open入口點(diǎn)。open子程序必須對將要進(jìn)行的I/O操作做好必要的準(zhǔn)備工作,如清除緩沖區(qū)等。如果設(shè)備是獨(dú)占的,即同一時(shí)刻只能有一個(gè)程序訪問此設(shè)備,則open子程序必須設(shè)置一些標(biāo)志以表示設(shè)備的狀態(tài)。函數(shù)原型:int (*open)(struct innod*,struct file* ) (2)close入口點(diǎn):關(guān)閉一個(gè)設(shè)備,當(dāng)最后一次使用設(shè)備結(jié)束后,調(diào)用close子程序。獨(dú)占設(shè)備必須標(biāo)記設(shè)備可再次使用。函數(shù)原型:int (*release)(struct innod*,struct file* )(3)read入口點(diǎn):讀取設(shè)備,對于有緩沖區(qū)的I/O操作,一般從緩沖區(qū)罩讀取設(shè)備數(shù)據(jù)。函數(shù)原型:ssize_t(*read)(struet flle*,char*,size_st,loff_t*):(4)write入口點(diǎn):向設(shè)備寫數(shù)據(jù),對于有緩沖區(qū)的I/O操作,一般向緩沖區(qū)里寫入數(shù)據(jù)。函數(shù)原型:ssize_t(*write)(struet flle*,const char*,size_st,loff_t*):(5)ioctl入口點(diǎn):執(zhí)行讀寫之外的操作。函數(shù)原型:int (*ioctl)(struct inode*,struct file*,unsighed int,unsighed long)Linux對一個(gè)硬件設(shè)備的驅(qū)動有兩種方式:一種是直接加載到內(nèi)核代碼中,啟動內(nèi)核時(shí)就會驅(qū)動此硬件設(shè)備。另一種是以模塊方式。模塊(module)是在內(nèi)核空間運(yùn)行的程序,實(shí)際上是一種目標(biāo)對象文件,沒有鏈接,不能獨(dú)立運(yùn)行,但是可以裝載到系統(tǒng)中作為內(nèi)核的一部分運(yùn)行,從而可以動態(tài)擴(kuò)充內(nèi)核的功能。模塊最主要的用處就是用來實(shí)現(xiàn)設(shè)備驅(qū)動程序,當(dāng)應(yīng)用程序需要它時(shí)再加載進(jìn)內(nèi)核空間運(yùn)行。通常一個(gè)硬件的驅(qū)動程序就是指一個(gè)驅(qū)動模塊。對于任何一個(gè)硬件設(shè)備,它在/dev下面存在一個(gè)對應(yīng)的邏輯設(shè)備節(jié)點(diǎn),即通常所說的設(shè)備文件。這個(gè)節(jié)點(diǎn)是通過mknod命令建立的,其中指定了主設(shè)備號和次設(shè)備號。主設(shè)備號表明了某一類設(shè)備,一般對應(yīng)確定的驅(qū)動程序;次設(shè)備號一般用于區(qū)分不同屬性,例如不同的使用方法,不同的位置,不同的操作。這個(gè)設(shè)備號是從/proc/devices文件中獲得的,所以一般是先有驅(qū)動程序在內(nèi)核中,才有設(shè)備節(jié)點(diǎn)在目錄中。圖41表明了驅(qū)動程序與系統(tǒng)之間的關(guān)系。通過模塊的read writ操作Mknod通過主次設(shè)備號相連返回主設(shè)備號Insmod向系統(tǒng)注冊O(shè)pen read write操作應(yīng)用程序硬件設(shè)備文件驅(qū)動模塊/etc/內(nèi)核圖41 驅(qū)動程序與系統(tǒng)的關(guān)系目前比較流行的攝像頭是基于ov511芯片和zc301芯片的,已有很多關(guān)于zc301芯片的開發(fā)文檔之類,ov511可能比較陳舊,可參考的資料不是很多,我們攝像頭的選擇取決于實(shí)驗(yàn)室配置的開發(fā)板——三星s3c2410的開發(fā)板,選擇網(wǎng)眼的ov511攝像頭。攝像頭屬于視頻設(shè)備,在Linux內(nèi)核中,Video for Linux(簡稱V4L)是關(guān)于視頻設(shè)備的驅(qū)動標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)為應(yīng)用程序定義了一系列的接口函數(shù),內(nèi)核、驅(qū)動和應(yīng)用程序都是依靠這個(gè)標(biāo)準(zhǔn)來進(jìn)行交流。本系統(tǒng)所使用的USB攝像頭正是基于
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1