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

正文內(nèi)容

嵌入式linux下pcie數(shù)據(jù)采集卡驅(qū)動開發(fā)-資料下載頁

2025-06-28 13:51本頁面
  

【正文】 v lib sys tmp var opt3.將_install文件夾下所有目錄拷貝到nfsroot中,_install文件包含了配置、編譯并安裝Busybox生成的根文件系統(tǒng)的/bin、/sbin等重要的、目標板系統(tǒng)支持的命令,其命令如下:$ cd _install$ cp –a /home/bobo/nfsboot,系統(tǒng)啟動的初始化腳本及其重要$ls –l /home/bobo/nfsboot/linuxrclinuxrc是指向busybox的一個符號鏈接,刪除之,并編譯項目需要的linuxrc文件。將交叉編譯工具ltib中的lib庫文件拷貝到nfsroot中$ cp –a /opt/freescale/ltib/usr/lib/* ./lib/6.、rcS、inittab、profile、fstab等腳本文件,可以添加這些腳本,并在腳本中編輯相應的腳本語句。Inittab是創(chuàng)建Linux操作系統(tǒng)執(zhí)行初始化進程的腳本。rcS是用來執(zhí)行用戶進程的腳本文件。rcS的配置如下:!/bin/sh minimal startup script, will work with msh (this is best available in MMUless format). load the configuration information/etc/mode=${1:start}if[$mode =start]then services=$cfg_serviceselse services=$cfg_services_rficfg_services=${2:$services}run the configured sequencefor i in $cfg_servicesdo if [ x /etc/$i ] then /etc/$i $mode fidoneif [ $ ge 2 ]then exit 0fi show all kernel log messagesecho 8 /proc/sys/kernel/printk run if present and executableif [ x /etc/]then /etc/$modefiinittab的配置如下: see ::sysinit:/etc/::respawn:/sbin/getty L ttyS0 115200 vt100::ctrlaltdel:/sbin/reboot::shutdown:/etc/::restart:/sbin/init(7)創(chuàng)建設備文件MPC85xx支持很多設備,如SD、網(wǎng)卡、串口、USB等等,在根文件系統(tǒng)的/dev目錄下,應當根據(jù)設備的設備類型和主次設備號建立相應的設備文件,用以提供對設備進行操作的接口。我們已經(jīng)建立起了根文件系統(tǒng)的所有目錄中最基本內(nèi)容。可以將nfsboot文件鏈接到linux主機的/tftpboot目錄下,開啟nfs服務,就可以在目標板上啟動整個linux系統(tǒng)了。nfs啟動的Uboot設置如下:$ setenv ipaddr $ setenv serverip $ setenv gatewayip $ setenv bootargs root=/dev/nfs rw nfsroot=:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:MPC8536RDK:eth0:off console=ttyS0,115200$ saveenv$ run nfsboot: Linux系統(tǒng)啟動的根文件目錄 本章小結(jié)本章主要介紹了目標板嵌入式Linux操作系統(tǒng)的安裝。首先,文章對系統(tǒng)引導Uboot做了簡要的敘述,并結(jié)合目標板實際,詳盡的講解了Uboot的移植步驟和過程;其次、論文對Linux操作系統(tǒng)及其內(nèi)核做了講解,結(jié)合其優(yōu)點分析了項目選取它們的依據(jù),并根據(jù)項目詳盡的講解了Linux內(nèi)核的移植過程。最后,論文對根文件系統(tǒng)做了簡介,并詳述了運用Busybox制作根文件系統(tǒng)的配置、編譯、設置方法。29第五章 Linux驅(qū)動程序第五章 Linux驅(qū)動程序 設備驅(qū)動概述一個計算機系統(tǒng)的運行需要軟硬件的通力合作,二者缺一不可。硬件是下層基礎,是軟件得以運行的平臺;軟件是實現(xiàn)具體的應用,他按照客戶的不同需求而編寫。計算機系統(tǒng)中的應用軟件與硬件運行在兩個不想交叉的平行世界,那么這兩個平行的世界怎樣產(chǎn)生聯(lián)系的呢——設備驅(qū)動。設備驅(qū)動在內(nèi)核中充當了一個特殊的角色,是一個獨立的模塊。它將硬件設備工作的細節(jié)完全隱藏,同時提供了用戶操作設備的接口,設備用戶不知道也不需要關(guān)心設備是怎樣具體工作。在linux系統(tǒng)中,由于所有的設備都以設備文件的方式呈現(xiàn)。所以,只需要讀、寫虛擬文件系統(tǒng)中的設備文件就可以操作設備。就像調(diào)用API函數(shù)一樣。這樣設備驅(qū)動驅(qū)動既起到隔離同時又起到連接應用程序和硬件的作用,這樣使得應用的開發(fā)大大簡化。 Linux設備的種類和特點一般而言Linux中的設備可以分為三類:字符設備、塊設備和網(wǎng)絡設備[[] [M].北京:人民郵電出版社,]。 字符設備字符設備是Linux最簡單的設備,它可以概括為那些必須以串行順序依次進行訪問的設備。字符驅(qū)動很好地展現(xiàn)了流的抽象,它通過文件系統(tǒng)結(jié)點來存取,也就是說,字符設備被當作普通文件來訪問。一般來講,鼠標、串口、鍵盤等設備都屬于字符設備。塊設備 塊設備以任意順序訪問,以塊為單位操作。塊設備一次可以傳輸在設備長度范圍內(nèi)的任意長度,比如一個字節(jié)或多個字節(jié)。在上邊說道到字符設備是一個字節(jié)傳輸,那么在這一點上它和塊設備有著共通的地方。塊設備一般都是速度慢、容量大的設備,像Flash、硬盤等存儲設備一般都是塊設備。網(wǎng)絡設備網(wǎng)絡設備是面向數(shù)據(jù)包的接收和發(fā)送而設計的,它與字符設備和塊設備不同。在文件系統(tǒng)中不像字符設備和塊設備那樣都是對應設備文件節(jié)點。網(wǎng)絡設備通過接口實現(xiàn)與其它設備進行數(shù)據(jù)交換。除了上述三大基本設備類之外,還有一些諸如TTY、LCD、USB、PCI等設備驅(qū)動大體可納入這3個基礎大類,但是由于這些設備本身具有的復雜性,Linux系統(tǒng)還為這些設備定義了獨特的驅(qū)動體系結(jié)構(gòu)。 Linux設備驅(qū)動與計算機軟硬件系統(tǒng)的關(guān)系從整個計算機的軟硬件構(gòu)成來看,它由上到下可分為:應用程序、庫、內(nèi)核、驅(qū)動程序和硬件四個層級。它們可以劃分為四層軟件和硬件[[] 魏永明,耿岳,:中國電力出版社,]。在四層軟件的協(xié)助下最后作用于硬件,使硬件完成設定的功能。 計算機系統(tǒng)軟硬件分層及關(guān)系,字符設備、塊設備在文件系統(tǒng)中建立了設備文件,對設備的操作只需要根據(jù)驅(qū)動提供的接口對對應的設備文件操作即可,而網(wǎng)絡設備則是通過套接字由TCP/IP協(xié)議實現(xiàn)。塊設備相較字符設備復雜,在它上邊要建立一個諸如FAT、EXTJFSS等的磁盤/FLASH文件系統(tǒng)。驅(qū)動程序不會主動運行,它根據(jù)應用程序的要求初始化及讀寫,驅(qū)動程序加載到內(nèi)核時,只告訴內(nèi)核驅(qū)動已被加載并可以完成哪些工作,至于開始完成相應工作的時間有驅(qū)動程序決定。在Linux系統(tǒng)中,應用程序在用戶空間運行,通過內(nèi)存管理應用程序不進入內(nèi)核空間,即使應用程序出錯,系統(tǒng)也會安全運行。驅(qū)動在內(nèi)核空間運行,屬于系統(tǒng)的組成部分,如果驅(qū)動出現(xiàn)錯誤,系統(tǒng)可能不能正常運行。應當指出,驅(qū)動屬于內(nèi)核的一部分,它并不是獨立于內(nèi)核,無論采用動態(tài)還是靜態(tài)的加載方式,驅(qū)動都將被編進內(nèi)核作為內(nèi)核的一部分。本文中所用到的數(shù)據(jù)采集卡本身是一個字符設備,那么本文著重分析的是與字符設備相關(guān)的驅(qū)動結(jié)構(gòu)及其主要組成部分的程序編寫[[] 宋寶華,何昭然,史海濱,[M].北京:人民郵電出版社,]。在了解字符設備驅(qū)動的編寫方法之前,應當先對字符設備的一些基本的數(shù)據(jù)結(jié)構(gòu)作了解。 字符設備結(jié)構(gòu)cdev cdev是Linux內(nèi)核中字符設備的結(jié)構(gòu),它包含了諸多與字符設備有關(guān)的成員,如模塊的擁有者、文件操作、設備號等。其中設備號dev_t由主次設備號組成,它們共同唯一的對應某一設備。文件操作為應用提供了接口。設備號的高12位即主設備號,指明了是哪一個設備。如串口的主設備號為2,表明主設備號為2的都是串口。次設備是設備號的低20位,用來區(qū)分具體設備的實例(instance)。比如有兩個串口ttys0和ttys1,從主設備號我們并不能區(qū)分這兩個串口,只能通過對每個串口給一個不同次設備號來區(qū)別。Linux中如下函數(shù)完成cdev結(jié)構(gòu)的初始化極其操作:初始化dev_t的函數(shù):cdev_init();添加字符設備到系統(tǒng),注冊字符設備:dev_add();從系統(tǒng)刪除字符設備,注銷字符設備:cedv_del();調(diào)用register_chardev_region()函數(shù)向內(nèi)核申請字符設備的設備號之后,才能添加字符設備到系統(tǒng),即調(diào)用cdev_add()函數(shù)。相反的,在調(diào)用cdev_del后應當使用unregister_chardev_region函數(shù)釋放先前申請的設備號。file_operations結(jié)構(gòu)file_operation結(jié)構(gòu)在字符設備驅(qū)動程序占有很重要的地位,它的成員函數(shù)提供了驅(qū)動程序與操作系統(tǒng)內(nèi)核的接口。File_operation的成員函數(shù)很多,其主要成員有讀、寫文件的read()、write()函數(shù),修改當前讀寫位置的llseek()函數(shù),設備控制的ioctl()函數(shù)等。Linux系統(tǒng)中,字符設備驅(qū)動由以下兩個部分組成[[] Sreekrishnan Linux Device Drivers[M].Bei Jing:POSTS amp。 TELECOM PRESS,]。加載、卸載字符設備在加載中應申請設備號、注冊字符設備。在前面已經(jīng)提到了相關(guān)的函數(shù)。文件操作應當對文件的讀、寫、控制等函數(shù)具體實現(xiàn)。 字符設備驅(qū)動 Linux設備驅(qū)動的阻塞在上一節(jié)的字符設備驅(qū)動中,我們忽略了一個問題:我們進行read的調(diào)用時,而此時沒有數(shù)據(jù)到來;或者一個進程正在寫時, 但是由于輸出緩沖滿而致使設備沒有準備好接受數(shù)據(jù),這時我們應當考慮阻塞執(zhí)行。阻塞就是進程對設備操作的時候,資源無法滿足條件,那么對設備操作就不能進行,該進程就要掛起、等待,資源滿足條件后,該進程恢復、進而操作設備編。由于阻塞的進程會進入休眠狀態(tài),所以必須確保在某個地方能夠?qū)⑿菝叩倪M程喚醒。喚醒進程一般在中斷中實現(xiàn),因為硬件資源可獲得恰恰伴隨著一個中斷。在linux設備驅(qū)動程序中,阻塞進程可以使用等待隊列來實現(xiàn)。在內(nèi)核中,等待隊列是有很多用處的,尤其是在中斷處理,進程同步,定時等場合,可以使用等待隊列實現(xiàn)阻塞進程的喚醒。 中斷中斷是指在CPU正常運行期間,由于內(nèi)外部事件或由程序預先安排的事件引起的CPU暫時停止正在運行的程序,轉(zhuǎn)而為該內(nèi)部或外部事件或預先安排的事件服務的程序中去,服務完畢后再返回去繼續(xù)運行被暫時中斷的程序。Linux中通常分為外部中斷(又叫硬件中斷)和內(nèi)部中斷(又叫異常)。 Linux中斷處理架構(gòu)中斷的到來一般意味著由緊急且大數(shù)據(jù)量的傳輸,當中斷到來時中斷程序會打斷CPU的正常運行來處理中斷。如果長時間處理該中斷,會導致系統(tǒng)的性能下降。為了實現(xiàn)即達到滿足中斷緊急性的要求、又保證大數(shù)據(jù)量傳輸?shù)哪芰ΑT贚inux中提出了一種中斷的處理機制,這種機制將中斷分成:頂半部和底半部[[] [R].飛行器測控學報,]。 Linux中斷機制頂半部完成的是少量而緊急的任務,他只是讀寄存器中的中斷狀態(tài)標志并清除該標志,登記中斷。該中斷被登記完成后,而底半部不忙處理,它將被加入到底半部的執(zhí)行隊列中。這樣保證了中斷的頂半部的緊急性要求,更多的中斷得到響應、登記。頂半部不可以被打斷。頂半部完成登記后,大部分的中斷處理工作落實到了底半部,底半部完成的是中斷處理中的大量的而不緊急的任務,因此他可以新的中斷打斷。底半部的實現(xiàn)機制有tasklet、工作隊列和軟中斷。 Linux中斷編程當外部設備需要操作系統(tǒng)做相關(guān)的事情的時候,會產(chǎn)生相應的中斷。設備通過相應的中斷線向中斷控制器中斷信號,而操作系統(tǒng)則會從中斷控制器的狀態(tài)位取得相應的中斷。由于現(xiàn)在的外設越來越多,中斷線又是很寶貴的資源不可能被一一對應。因此在使用中斷線前,就得對相應的中斷線進行申請。而在使用完成后應當釋放中斷號。驅(qū)動中的中斷編程應該在模塊加載中申請中斷號,在模塊卸載中釋放中斷號,當本中斷到來時,在中斷處理函數(shù)中完成中斷處理。在linux設備驅(qū)動中,設備驅(qū)動應當先用request_irq()函數(shù)申請中斷;在使用完成中斷后應當使用free_irq()函數(shù)釋放中斷號。 本章小結(jié)本章主要介紹了Linux驅(qū)動程序的編寫方法。首先,論文簡單介紹了Linux驅(qū)動程序及其特點。其次,文章詳盡介紹了字符設備驅(qū)動的組成結(jié)構(gòu),對于如何編寫字符設備驅(qū)動,給出了詳盡的方法。第三,本章還對Linux設備驅(qū)動的阻塞、中斷架構(gòu)以及中斷編程的詳細方法做了說明。35第六章 PCIE高速數(shù)據(jù)采集卡驅(qū)動程序開發(fā)第六章 PCIE高速數(shù)據(jù)采集卡驅(qū)動程序開發(fā) PCI EXPRESS的配置空間在第一章的硬件中我們已經(jīng)知道,數(shù)據(jù)采集卡將A/D采集到的數(shù)據(jù)發(fā)送到主機,或者主機上的數(shù)據(jù)通過數(shù)據(jù)采集卡傳輸出去,是采用的自行設計的運用可編程邏輯控制器FPGA配置和控制PCIE接口實現(xiàn)的。數(shù)據(jù)采集卡一旦插入PCIE插槽,主控制器將發(fā)起配置事物讀、寫某些配置寄存器。對配置寄存器的訪問可以知道相應功能的存在性,而對配置寄存器的配置則可以實現(xiàn)相應的功能。對于驅(qū)動的編寫,配置寄存器意義重大。PCIE的配置寄存器大小為4K,它包含與PCI總線兼容的256字節(jié)的配置空間和3840個字節(jié)的PCIE擴展配置空間[[] [D].長沙:國防科技大學電子科學與
點擊復制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1