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

正文內(nèi)容

基于arm的嵌入式溫度監(jiān)測系統(tǒng)畢業(yè)設(shè)計(jì)論文(已改無錯字)

2022-07-26 00:15:32 本頁面
  

【正文】 i(1) 為主機(jī)安裝Slave B型的USB驅(qū)動由于主機(jī)和虛擬機(jī)使用的是同一個物理串口COM1,所以在Windows下使用串口之前,應(yīng)先查看虛擬機(jī)下是否安裝串口。查看并卸載虛擬機(jī)的串口方法如下:打開虛擬機(jī)的主界面,先不進(jìn)入linux,點(diǎn)擊VM→Setting,在hardware窗口下,查看是否有Serial Using port COM1,若有則選中該項(xiàng)后,點(diǎn)擊Remove,OK即可完成虛擬機(jī)串口的卸載。用串口電纜線連接主機(jī)和ARM板的串口,從Nand Flash啟動系統(tǒng),點(diǎn)菜單Configuration,設(shè)置串口。安裝USB驅(qū)動使用ARM板上的USB Slave B接口,通過USB電纜下載驅(qū)動程序,所以需要為主機(jī)安裝Slave B型驅(qū)動。使用USB電纜連接主機(jī)的USB接口和ARM板的USB Slave B接口,打開ARM板電源,主機(jī)會彈出發(fā)現(xiàn)新硬件的指示,按照提示安裝USB驅(qū)動即可,安裝時(shí)使用的USB驅(qū)動程序是光盤中的Windows平臺工具/USB驅(qū)動/。(2)分區(qū)格式化Flashdnw下進(jìn)入vivi連上串口線后,點(diǎn)擊首行條Serial Port→Connect,打開ARM板電源或者按一下板上的復(fù)位鍵,如果vivi燒寫成功,會出現(xiàn)一個界面,如果不是這個界面,說明燒寫是失敗的,需要使用jflash2410燒寫軟件和JTAG電纜重新燒寫。進(jìn)入vivi模式的操作方法:先一直按住鍵盤上的空格鍵,再按住板子上的復(fù)位鍵一會,先松開復(fù)位鍵,再松開空格鍵,可進(jìn)入vivi模式,vivi模式的命令提示符為:FriendlyARM。在vivi模式下分區(qū)格式化Flash:在vivi模式下輸入命令: bon part 0 192K 1216K對板子進(jìn)行分區(qū)。說明:bon是分區(qū)命令,以上命令的意思是把Nand Flash從0開始分為三個區(qū): 0~192K:大小為192K 192K~1216K:大小為1M 1216K~64M: 分區(qū)后需要用ARM板連接USB電纜,但是只能選擇帶電連接,千萬不要關(guān)電或者掉電,因?yàn)榇藭r(shí)Nand Flash中已經(jīng)被清空,需要再重新下載一次BIOS,如果關(guān)電或掉電,并重新分區(qū)格式化Flash,此過程又需要花費(fèi)幾分鐘時(shí)間。同時(shí)在windows可以看到分區(qū)顯示。(3)重新下載vivi通過dnw下載vivi有兩種方法,本設(shè)計(jì)使用方法二。方法一:接上串口電纜,輸入命令:load flash vivi x,使用Serial Port→Transmit下載;方法二:接上串口電纜,接上USB電纜,輸入命令:load flash vivi u,進(jìn)入下載界面,板子提示等待用戶進(jìn)行USB下載傳輸。此時(shí)點(diǎn)擊USB PortTransmit,“打開”開始下載,下載過程一閃而過,因?yàn)槭褂肬SB接口下載的速度很快。下載完畢,vivi被自動燒寫到Nand Flash中。 燒寫linux內(nèi)核通過dnw下載kernel有兩種方法,本設(shè)計(jì)使用的方法二。方法一:接上串口電纜,輸入命令:load flash kernel x,使用Serial PortTransmit下載;方法二:接上串口電纜,接上USB電纜,輸入命令:load flash kernel u,回車,板子等待用戶進(jìn)行USB下載傳輸。此時(shí)點(diǎn)擊USB PortTransmit,在彈出的打開界面中找到zImage_tp,下載時(shí)間比sbc_vivi稍長,約為2s。下一步應(yīng)下載文件系統(tǒng),重要提示:此時(shí)不能給ARM板斷電后上電或復(fù)位,不能拔下USB電纜,否則主機(jī)會出現(xiàn)錯誤,重新插上USB電纜時(shí),主機(jī)將無法識別USB,也無法正常安裝,需要重新燒寫vivi及kernel。 下載文件系統(tǒng)輸入:loadyaffs –e root u,回車。板子等待用戶進(jìn)行USB下載傳輸。此時(shí)點(diǎn)擊USB PortTransmit,在彈出的“打開”。點(diǎn)擊“打開”開始下載,此下載過程大學(xué)需要2~3分鐘。下載完畢,linux文件系統(tǒng)將會被自動燒寫到Nand Flash中。至此,linux內(nèi)核需要燒寫的已經(jīng)完成。再重啟系統(tǒng),就可以用了。第五章 溫度監(jiān)測系統(tǒng)的軟件編程 編寫Linux下的ADC驅(qū)動程序嵌入式應(yīng)用對成本和實(shí)時(shí)性比較敏感,而對linux的應(yīng)用要求主要體現(xiàn)在對硬件的驅(qū)動程序的編寫和上層應(yīng)用程序的開發(fā)。嵌入式linux驅(qū)動程序的基本結(jié)構(gòu)和標(biāo)準(zhǔn)的linux的結(jié)構(gòu)基本一致,也支持模塊化模式,所以,大部分驅(qū)動程序編程模塊化形式,而且,要求可以在不同的體系結(jié)構(gòu)上安裝。linux是可以支持模塊化模式的,但由于嵌入式應(yīng)用針對具體的應(yīng)用,所以,一般不采用該模式,而是把驅(qū)動程序直接編譯進(jìn)內(nèi)核之中。但是這種模式是調(diào)試驅(qū)動程序的極佳方法。系統(tǒng)調(diào)用是linux系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動程序是linux系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文件,因而應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作。設(shè)備驅(qū)動程序是內(nèi)核的一部分。驅(qū)動程序的使用可以按照兩種方式編譯:一種是靜態(tài)編譯進(jìn)內(nèi)核;另一種是編譯成內(nèi)核模塊義工動態(tài)加載。但對嵌入式linux系統(tǒng)而言,一般不能夠像桌面linux那樣靈活地使用insmod/rmmod加載卸載設(shè)備驅(qū)動程序,因?yàn)槌⒃O(shè)備驅(qū)動程序靜態(tài)編譯進(jìn)內(nèi)核。基于設(shè)備驅(qū)動程序的功能和編譯特點(diǎn),應(yīng)具有的特性如下:(1)由一系列函數(shù)和數(shù)據(jù)構(gòu)成,它既要與硬件設(shè)備進(jìn)行通信又要遵循操作系統(tǒng)內(nèi)核提供的統(tǒng)一接口;(2)它要管理好用戶程序與外設(shè)之間的數(shù)據(jù)流和控制流;(3)是一個自包含組件,能夠動態(tài)地加入到操作系統(tǒng)或被內(nèi)核刪除;(4)屬于內(nèi)核的可定制部分,通過設(shè)備文件賴于用戶程序打交道。 Linux設(shè)備設(shè)備驅(qū)動程序可分為硬件驅(qū)動程序和軟件設(shè)備驅(qū)動程序兩大類。硬件設(shè)備驅(qū)動就是通常意義的驅(qū)動,其驅(qū)動程序和物理硬件設(shè)備相連,如UART設(shè)備或IDE設(shè)備;而軟件設(shè)備驅(qū)動程序則作為低級結(jié)構(gòu)間的接口,或者硬件設(shè)備驅(qū)動程序和高級數(shù)據(jù)結(jié)構(gòu)間的接口,如文件系統(tǒng)EXT3的驅(qū)動。(1)linux設(shè)備類型linux系統(tǒng)支持3種類型的硬件設(shè)備:字符設(shè)備(Char Device)、塊設(shè)備(Block Device)、網(wǎng)絡(luò)設(shè)備(Network Socket Device)。系統(tǒng)的串口、鍵盤、虛擬控制臺是字符設(shè)備,而RAMDISK、硬盤是塊設(shè)備,網(wǎng)絡(luò)設(shè)備則如網(wǎng)絡(luò)接口卡等。ADC驅(qū)動設(shè)備就是字符設(shè)備。字符設(shè)備字符設(shè)備能夠存儲或者傳輸不定長數(shù)據(jù)。某些字符設(shè)備可以每次傳遞一個字節(jié),傳完每個字節(jié)后產(chǎn)生一個中斷;另外一些字符設(shè)備可以在內(nèi)部緩存數(shù)據(jù),因此可以每次傳遞多個字節(jié)。內(nèi)核把字符設(shè)備看成是可順序訪問的連續(xù)字節(jié)流,它在單個字符的基礎(chǔ)上接收和發(fā)送數(shù)據(jù),數(shù)據(jù)緩沖系統(tǒng)。字符設(shè)備不能隨機(jī)訪問,只能一個一個字符地順序存取,也不能進(jìn)行查找操作。字符設(shè)備的介質(zhì)一般是傳輸介質(zhì),在對字符設(shè)備發(fā)出讀/寫請求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了。塊設(shè)備塊設(shè)備的介質(zhì)必須是存儲介質(zhì),存儲的是定長且可以隨機(jī)訪問的數(shù)據(jù)塊,對塊設(shè)備的I/O操作只能以塊為單位進(jìn)行。對塊設(shè)備的訪問通常需要經(jīng)過高速緩存做緩沖區(qū),若用戶進(jìn)程對設(shè)備的請求通過緩沖區(qū)能滿足用戶的要求,就從緩沖區(qū)返回請求的數(shù)據(jù),如果不能,才調(diào)用請求函數(shù)來進(jìn)行實(shí)際的I/O操作。塊設(shè)備的任何塊都可以隨機(jī)讀/寫,可以讀取任意位置上的整數(shù)倍塊長的數(shù)據(jù),不必考慮它在設(shè)備的什么地方。一個文件系統(tǒng)要安裝進(jìn)入操作系統(tǒng)必須在塊設(shè)備上。網(wǎng)絡(luò)設(shè)備網(wǎng)絡(luò)設(shè)備與字符設(shè)備和塊設(shè)備不同,通常不把網(wǎng)絡(luò)設(shè)備看成普通文件,因?yàn)槠胀ㄎ募膬?nèi)容是無結(jié)構(gòu)的,而網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)流是有結(jié)構(gòu)的數(shù)據(jù)包,是成塊的。但是它的塊又不是固定大小的,大到數(shù)百甚至數(shù)千字節(jié),小到幾個字節(jié)。對網(wǎng)絡(luò)設(shè)備的存儲的存取卻是流式的,通過BSD Socket接口的訪問。內(nèi)核和網(wǎng)絡(luò)設(shè)備驅(qū)動程序之間的通信,與字符設(shè)備和塊設(shè)備驅(qū)動程序與內(nèi)核的通信數(shù)完全不一樣的,不是通過read()、write(),而是采用sk_buff數(shù)據(jù)緩沖區(qū),調(diào)用與數(shù)據(jù)包相關(guān)的函數(shù)。網(wǎng)絡(luò)協(xié)議(如TCP/IP)就是建立在網(wǎng)絡(luò)設(shè)備驅(qū)動程序之上的應(yīng)用。(2)設(shè)備節(jié)點(diǎn)、文件節(jié)點(diǎn)、設(shè)備文件Linux是一種類UNIX系統(tǒng),UNIX的一個基本特點(diǎn)是“一切皆為文件”。用戶進(jìn)程也是通過一種特殊的文件來與實(shí)際的硬件打交道的,這種特殊的文件就是設(shè)備文件,系統(tǒng)中的設(shè)備都用一個設(shè)備文件代表。設(shè)備文件抽象了設(shè)備的處理,將所有的硬件設(shè)備都像普通文件一樣看待,也就是說硬件可以跟普通文件一樣來打開、關(guān)閉和讀/寫。對應(yīng)著設(shè)備的3種類型,設(shè)備文件也分為字符型設(shè)備文件(Character)、塊型設(shè)備文件(Block)和網(wǎng)絡(luò)插件型設(shè)備文件(Socket)。Character型設(shè)備文件常指直接讀/寫、沒有緩沖區(qū)的字符設(shè)備,而Block設(shè)備文件常常指那些需要以塊(如512B)的方式寫入的設(shè)備,Socket(網(wǎng)絡(luò)插件)型設(shè)備文件指的是網(wǎng)絡(luò)設(shè)備訪問的BSD Socket接口。設(shè)備文件都放在/dev目錄下,也就是說,對于一個設(shè)備,它可以在/dev下面存在一個對應(yīng)的邏輯設(shè)備節(jié)點(diǎn),這個節(jié)點(diǎn)以文件的形式存在單并不是普通意義上的文件,而是設(shè)備文件,更確切地說是設(shè)備節(jié)點(diǎn)。例如,硬盤就是用/dev/hd*來表示,/dev/had表示第一個IDE接口的主設(shè)備,/dev/hdal表示第一個硬盤上的第一個分區(qū);而/dev/hdc表示第二個IDE接口的主設(shè)備。設(shè)備節(jié)點(diǎn)是通過mknod命令建立的,其中指定了主設(shè)備號和次設(shè)備號。而這個設(shè)備號是從/proc/devices文件中獲得的,所以一般是先有設(shè)備驅(qū)動程序(模塊)在內(nèi)核中。才有折本節(jié)點(diǎn)在目錄中。 (3)主設(shè)備號和輔設(shè)備號Linux中的每個設(shè)備在文件系統(tǒng)中都至少對應(yīng)一個設(shè)備文件,這個設(shè)備文件節(jié)點(diǎn)中記載著與特定設(shè)備建立連接所需的信息。對于Block型和Character型設(shè)備。這種信息由三部分構(gòu)成:第一部分包括設(shè)備的類型,第二部分是一個“主設(shè)備號”(Major),第三部分是一個“輔(或者從)設(shè)備號”(Minor)。其中,設(shè)備類型和主設(shè)備號結(jié)合在一起就唯一地確定了設(shè)備的驅(qū)動程序及界面,因而一般對應(yīng)確切的驅(qū)動程序。主設(shè)備號的主要作用就是聲明設(shè)備所使用的驅(qū)動程序。驅(qū)動程序和主設(shè)備號是一一對應(yīng)的,當(dāng)打開一個設(shè)備文件時(shí),操作系統(tǒng)就已經(jīng)知道這個設(shè)備設(shè)備所對應(yīng)的驅(qū)動程序。輔設(shè)備號一般是區(qū)分驅(qū)動程序的不同屬性(如不同的使用方法、不同的位置、不同的操作),標(biāo)識驅(qū)動程序控制的設(shè)備實(shí)例。若不同串口使用同一個驅(qū)動程序,其主設(shè)備號一樣、輔設(shè)備號不同,輔設(shè)備號標(biāo)識這是第幾個串口設(shè)備。而對于塊設(shè)備(硬盤),如/dev/hdal(block3/1)、/dev/hda2(block3/2)和/dev/hda3(block3/3)都代表著同一塊硬盤的3個分區(qū),它們的主設(shè)備號都是3,輔設(shè)備號分別為3對于常用的設(shè)備,Linux有固定的編號。例如:創(chuàng)建設(shè)備文件和設(shè)備號并顯示。mknod harddiak b 3 0file /dev/had/dev/had: block special (3/0)用mknod 命令可以創(chuàng)建設(shè)備文件,創(chuàng)建時(shí)指定主設(shè)備號和輔設(shè)備號。如上例中,在當(dāng)前位置創(chuàng)建出一個與 /dev/had 一樣的、可以訪問的第一個IDE設(shè)備主硬盤的文件(塊設(shè)備,主設(shè)備號 3,輔設(shè)備號 0),文件名叫做harddisk。用file 命令可以顯示設(shè)備文件的設(shè)備號。用命令ls –l也可以顯示出設(shè)備文件[21]。 驅(qū)動程序的編寫說明設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文件,應(yīng)用程序可以像操作普通文件那樣對硬件設(shè)備進(jìn)行操作。同時(shí),設(shè)備驅(qū)動程序是內(nèi)核的一部分,它完成以下的功能:對設(shè)備初始化和釋放;把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和會送給應(yīng)用程序請求的數(shù)據(jù);檢測和處理設(shè)備出現(xiàn)的錯誤。在linux操作系統(tǒng)寫有字符設(shè)備和塊設(shè)備兩類主要的設(shè)備文件類型。字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對字符設(shè)備發(fā)出讀寫請求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了;塊設(shè)備利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶進(jìn)程對設(shè)備請求滿足用戶要求時(shí),就返回請求的數(shù)據(jù)。塊設(shè)備是主要對針對磁盤等慢速設(shè)備設(shè)計(jì)的,一面耗費(fèi)過多的CPU時(shí)間來等待。設(shè)備驅(qū)動程序的file_operations 結(jié)構(gòu):通常,一個設(shè)備驅(qū)動程序包括兩個基本的任務(wù):驅(qū)動設(shè)備的某些函數(shù)作為系統(tǒng)調(diào)用執(zhí)行;而某些函數(shù)則負(fù)責(zé)處理中斷(即中斷處理函數(shù))。而file_operations 結(jié)構(gòu)的每一個成員的名稱都對應(yīng)一個系統(tǒng)調(diào)用。用戶程序利用系統(tǒng)調(diào)用,比如在對一個設(shè)備文件進(jìn)行諸如read操作時(shí),這是對應(yīng)于該設(shè)備文件的驅(qū)動程序就會執(zhí)行相關(guān)的ssize_t(*read)(struct ,file* char *,size_t,loff_t*)函數(shù)。在操作系統(tǒng)內(nèi)部,外部設(shè)備的存取是通過一組固定入口點(diǎn)進(jìn)行的,這些入口點(diǎn)由每個外設(shè)的驅(qū)動程序提供,由函數(shù)file_operations結(jié)構(gòu)向系統(tǒng)進(jìn)行說明,因此,便攜設(shè)備的驅(qū)動程序的主要工作是編寫子函數(shù),并填寫file_operations 的各個域。file_operations 結(jié)構(gòu)在kernel/include/linux/。struct file_operations{ struct module *owner。 loff_t (* llseek) (struct file* , loff_t,int)。 ssize_t (*read) (struct file *,char *,size_t,loff_t *)。 ssize_t (*write) (struct file *,const char *,size_t,loff_t *)。 int (*readdir) (struct file *,void *,filldir_t)。 unsigned int(*poll) (struct file *,struct poll_table_struct *)。 in
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1