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

正文內(nèi)容

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

2024-07-19 00:15 上一頁面

下一頁面
 

【正文】 ,進(jìn)入系統(tǒng)的根目錄,執(zhí)行命令:cp /mnt/cdrom/Vmware /tmp(4)進(jìn)入系統(tǒng)的/tmp目錄,執(zhí)行命令:cd /tmptar –zxvf Vmware 解壓時(shí)間約為15s,解壓后,在/tmp/生成vmwaretoolsdistrib文件。解壓/mnt/hgfs/mag/linux/ 的linux開發(fā)包:tar –xvzf /mnt/hgfs/mag/linux/ –C /另外,也可以把linux 開發(fā)包放在移動(dòng)存儲(chǔ)設(shè)備中,在linux系統(tǒng)下掛載移動(dòng)存儲(chǔ)設(shè)備后在解壓開發(fā)包。(2)在根目錄下,選擇/etc/profile,再右鍵點(diǎn)擊打開形式→gredit,則進(jìn)入編輯狀態(tài)鍵入有下劃線一行即可。但這些專用操作系統(tǒng)都是商業(yè)化產(chǎn)品,其高昂的價(jià)格使許多低端產(chǎn)品的小公司望而卻步;而且,源代碼封閉性也大大限制了開發(fā)者的積極性。因?yàn)長(zhǎng)inux的開放性,許多人認(rèn)為L(zhǎng)inux非常適合多數(shù)Internet設(shè)備。 嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃?個(gè)層次:(1)引導(dǎo)加載程序。(3)文件系統(tǒng)。(4)用戶應(yīng)用程序。嵌入式系統(tǒng)的啟動(dòng)代碼是和處理器體系結(jié)構(gòu)緊密相關(guān)的,而且通常是C語言和匯編語言聯(lián)合使用。當(dāng)我們使用單片機(jī)或者像UCOS這樣的操作系統(tǒng)時(shí),一般只需要在初始化CPU和其它硬件設(shè)備后,直接加載程序即可,不需要單獨(dú)構(gòu)建一個(gè)引導(dǎo)加載程序。引導(dǎo)加載程序的主要運(yùn)行任務(wù)就是將內(nèi)核映像從硬盤讀到RAM中,然后跳到內(nèi)核的入口點(diǎn)去運(yùn)行,即開始啟動(dòng)操作系統(tǒng)。Bootloader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的。所以需要針對(duì)自己的嵌入式硬件系統(tǒng),移植自己的Bootloader程序。用戶進(jìn)程可以并行運(yùn)行、公平地占用系統(tǒng)資源而互不干擾。Linux是一個(gè)移植性非常好的操作系統(tǒng),它廣泛支持許多不同體系結(jié)構(gòu)的CPU。在這里,點(diǎn)擊load an alternate configuration file,輸入config_ac2410_tp_nec35,保存后退出。make dep該命令用于尋找各文件的依存關(guān)系。 文件系統(tǒng)在系統(tǒng)啟動(dòng)后,操作系統(tǒng)要完成的最后一步操作是掛載根文件系統(tǒng)。Ramdisk通常使用磁盤文件系統(tǒng)的壓縮鏡像存放在Flash中,在系統(tǒng)初始化時(shí),解壓到SDRAM并掛載為根文件系統(tǒng)。用戶可用連接到FTP服務(wù)器上下載文件,也可以將自己的文件上傳到FTP服務(wù)器中。在該系統(tǒng)中我們采用常見的vsPtfd軟件。(2) 真實(shí)帳號(hào)登錄:就是以本地的真實(shí)用戶名和密碼進(jìn)行登錄,前提條件就是在FTP服務(wù)器上擁有該賬號(hào)。本設(shè)計(jì)用的是windows下的燒寫。[3] 查看并口驅(qū)動(dòng)是否成功安裝右鍵點(diǎn)擊“我的電腦”,屬性→硬件→設(shè)備管理器→端口,看到giveio(COM3)。(3) 燒寫vivi按照以下步驟進(jìn)行:[1]打開主機(jī)開始→運(yùn)行→cmd,[2]進(jìn)入sjc2410目錄,輸入燒寫命令開始燒寫。查看并卸載虛擬機(jī)的串口方法如下:打開虛擬機(jī)的主界面,先不進(jìn)入linux,點(diǎn)擊VM→Setting,在hardware窗口下,查看是否有Serial Using port COM1,若有則選中該項(xiàng)后,點(diǎn)擊Remove,OK即可完成虛擬機(jī)串口的卸載。(2)分區(qū)格式化Flashdnw下進(jìn)入vivi連上串口線后,點(diǎn)擊首行條Serial Port→Connect,打開ARM板電源或者按一下板上的復(fù)位鍵,如果vivi燒寫成功,會(huì)出現(xiàn)一個(gè)界面,如果不是這個(gè)界面,說明燒寫是失敗的,需要使用jflash2410燒寫軟件和JTAG電纜重新燒寫。同時(shí)在windows可以看到分區(qū)顯示。下載完畢,vivi被自動(dòng)燒寫到Nand Flash中。下一步應(yīng)下載文件系統(tǒng),重要提示:此時(shí)不能給ARM板斷電后上電或復(fù)位,不能拔下USB電纜,否則主機(jī)會(huì)出現(xiàn)錯(cuò)誤,重新插上USB電纜時(shí),主機(jī)將無法識(shí)別USB,也無法正常安裝,需要重新燒寫vivi及kernel。點(diǎn)擊“打開”開始下載,此下載過程大學(xué)需要2~3分鐘。第五章 溫度監(jiān)測(cè)系統(tǒng)的軟件編程 編寫Linux下的ADC驅(qū)動(dòng)程序嵌入式應(yīng)用對(duì)成本和實(shí)時(shí)性比較敏感,而對(duì)linux的應(yīng)用要求主要體現(xiàn)在對(duì)硬件的驅(qū)動(dòng)程序的編寫和上層應(yīng)用程序的開發(fā)。系統(tǒng)調(diào)用是linux系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是linux系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。但對(duì)嵌入式linux系統(tǒng)而言,一般不能夠像桌面linux那樣靈活地使用insmod/rmmod加載卸載設(shè)備驅(qū)動(dòng)程序,因?yàn)槌⒃O(shè)備驅(qū)動(dòng)程序靜態(tài)編譯進(jìn)內(nèi)核。(1)linux設(shè)備類型linux系統(tǒng)支持3種類型的硬件設(shè)備:字符設(shè)備(Char Device)、塊設(shè)備(Block Device)、網(wǎng)絡(luò)設(shè)備(Network Socket Device)。某些字符設(shè)備可以每次傳遞一個(gè)字節(jié),傳完每個(gè)字節(jié)后產(chǎn)生一個(gè)中斷;另外一些字符設(shè)備可以在內(nèi)部緩存數(shù)據(jù),因此可以每次傳遞多個(gè)字節(jié)。塊設(shè)備塊設(shè)備的介質(zhì)必須是存儲(chǔ)介質(zhì),存儲(chǔ)的是定長(zhǎng)且可以隨機(jī)訪問的數(shù)據(jù)塊,對(duì)塊設(shè)備的I/O操作只能以塊為單位進(jìn)行。網(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ù)包,是成塊的。網(wǎng)絡(luò)協(xié)議(如TCP/IP)就是建立在網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序之上的應(yīng)用。對(duì)應(yīng)著設(shè)備的3種類型,設(shè)備文件也分為字符型設(shè)備文件(Character)、塊型設(shè)備文件(Block)和網(wǎng)絡(luò)插件型設(shè)備文件(Socket)。設(shè)備節(jié)點(diǎn)是通過mknod命令建立的,其中指定了主設(shè)備號(hào)和次設(shè)備號(hào)。對(duì)于Block型和Character型設(shè)備。驅(qū)動(dòng)程序和主設(shè)備號(hào)是一一對(duì)應(yīng)的,當(dāng)打開一個(gè)設(shè)備文件時(shí),操作系統(tǒng)就已經(jīng)知道這個(gè)設(shè)備設(shè)備所對(duì)應(yīng)的驅(qū)動(dòng)程序。例如:創(chuàng)建設(shè)備文件和設(shè)備號(hào)并顯示。用命令ls –l也可以顯示出設(shè)備文件[21]。在linux操作系統(tǒng)寫有字符設(shè)備和塊設(shè)備兩類主要的設(shè)備文件類型。而file_operations 結(jié)構(gòu)的每一個(gè)成員的名稱都對(duì)應(yīng)一個(gè)系統(tǒng)調(diào)用。struct file_operations{ struct module *owner。 int (*readdir) (struct file *,void *,filldir_t)。 int(*open) (struct inode*, struct file *)。 int(*fasync) (int ,struct file*, int)。ssize_t(*sendpage) (struct file*, struct page*,int,size_t ,loff_t *,int)。open主要完成以下操作:檢查設(shè)備錯(cuò)誤(諸如設(shè)備未就緒或相似的硬件問題);如果是首次打開,初始化設(shè)備;標(biāo)別此設(shè)備號(hào);分配和填寫放在file~private_data內(nèi)的數(shù)據(jù)結(jié)構(gòu);增加使用計(jì)數(shù)。(3) write向外部設(shè)備發(fā)送數(shù)據(jù)。release的作用正好與open相反。(6) readdir一般用于文件系統(tǒng)的操作。 驅(qū)動(dòng)程序編寫的具體內(nèi)容通過了解驅(qū)動(dòng)程序的file_operation結(jié)構(gòu),用戶可以編寫出相關(guān)外部設(shè)備的驅(qū)動(dòng)程序。(2)對(duì)初始化設(shè)備相關(guān)的參數(shù)。每個(gè)設(shè)備有且僅有一個(gè)主設(shè)備號(hào)。注冊(cè)終端使用的函數(shù)。hangler中斷處理函數(shù)。(5)其它的一些初始化工作,比如給設(shè)備分配I/O,事情DMA通道等。module_init(device _init)。其框圖如下: ADC驅(qū)動(dòng)程序框圖驅(qū)動(dòng)程序依靠注冊(cè)在file_operations 結(jié)構(gòu)中的函數(shù)實(shí)現(xiàn)設(shè)備的功能,這些函數(shù)被稱為“方法”。在對(duì)這個(gè)結(jié)構(gòu)進(jìn)行一些初始化工作后,open 方法一般將這個(gè)結(jié)構(gòu)存放于file結(jié)構(gòu)中的private_data域中,以便在其他方法中調(diào)用。第一種情況是該硬件驅(qū)動(dòng)程序被多個(gè)應(yīng)用程序調(diào)用,造成在內(nèi)核中有多個(gè)file 類型的結(jié)構(gòu)實(shí)例。這些硬件總是在內(nèi)核中,總是處于就緒狀態(tài),隨時(shí)準(zhǔn)備被調(diào)用,因而總是占用一部分系統(tǒng)資源。返回的ssize_t類型是有符號(hào)整型變量。const void *addr是要檢驗(yàn)的地址空間的首地址,unsigned int size 是需要檢驗(yàn)的空間大小,單位為字節(jié)。它們?cè)趶?fù)制不對(duì)ptr做任何檢查,因此在調(diào)用它們之前需要使用access_ok()函數(shù)對(duì)ptr進(jìn)行檢查。(4)write方法write方法可以看做是read方法的逆向執(zhí)行,read方法從內(nèi)核空間向用戶空間中傳遞數(shù)據(jù),而write方法則將用戶空間中的數(shù)據(jù)寫到內(nèi)核空間中。下面將分別介紹這兩種加載的方法。(2)在kernel/drivers/char目錄下的Makefile文件中填加如下代碼:ifeq($(CONFIG_DEVICE_DRIVER),y)L_OBJS+= endif或 obj$(CONFIG_S3C2410_ADC)= (3)如果在配置linux內(nèi)核的時(shí)候,選擇了支持我們定義的設(shè)備,則在編譯內(nèi)核的時(shí)候。在文件系統(tǒng)中cramfs中加上設(shè)備驅(qū)動(dòng)程序?qū)?yīng)的設(shè)備文件。用mknod命令來創(chuàng)建一個(gè)設(shè)備文件:mknod device_driver c 120 0,device_driver為設(shè)備文件名,c指的是字。設(shè)備文件都包含在/dev目錄下,linux使用的根文件系統(tǒng)是cramfs文件系統(tǒng)。在ment ’Character devices’下面填加: bool ‘support for S3C2410_ADC’CONFIG_ S3C2410_ADC這樣在編譯內(nèi)核時(shí),運(yùn)make menuconfig 時(shí),在配置字符設(shè)備時(shí)就會(huì)出現(xiàn)support for S3C2410_ADC的字樣。(1)將ADC設(shè)備驅(qū)動(dòng)文件復(fù)制到kernel/drivers/char目錄下,該目錄保存了linux的字符型設(shè)備的設(shè)備的驅(qū)動(dòng)程序。copy_from_user的原型如下:unsigned long copy_from_user(void *to, const void_user *from,unsigned long count)write方法的各種情況與read相似[21]。 get_user(data,ptr)。傳送的數(shù)據(jù)量較大時(shí),一般都不需要顯式調(diào)用access_ok()函數(shù),因?yàn)閏opy_to_user和copy_from_user 方法中已經(jīng)包含了對(duì)access_ok函數(shù)的調(diào)用。copy_to_user將“from”地址處的“count”個(gè)字節(jié)傳遞到用戶空間中以“to”開頭的地址空間中。對(duì)于這些設(shè)備,在調(diào)用結(jié)束時(shí)release 方法只是將其狀態(tài)變量設(shè)為待機(jī),并不真正釋放資源。只用在計(jì)數(shù)器為0值時(shí)調(diào)用release方法,內(nèi)核才會(huì)真正釋放由open 分配的資源。release方法由系統(tǒng)調(diào)用close() 喚醒的,其原型如下:int (*release) (struct inode *inode, struct file *filp)需要說明的是,release方法不一定是真正釋放由open 方法分配的資源。下面將對(duì)進(jìn)行分析。當(dāng)然,也可以編進(jìn)內(nèi)核[10]。int _init device_init (void)。device設(shè)備的名稱。其中,irq是中斷向量。int register_chrdev(unsigned int,const char *,struct file_operations*),其中的三個(gè)函數(shù)代表主設(shè)備號(hào),設(shè)備名,file_operatons的結(jié)構(gòu)地址。(3)注冊(cè)設(shè)備。如果操作函數(shù)使用NULL,系統(tǒng)操作就進(jìn)行默認(rèn)的處理。(8) ioctl 執(zhí)行設(shè)備專有的命令。它應(yīng)該完成以下操作:使用計(jì)數(shù)減一;釋放open分配在file~private_data中的內(nèi)存,在最后一次關(guān)閉操作時(shí)關(guān)閉設(shè)備。如果返回值非負(fù),就表示成功地寫入的字節(jié)數(shù)。當(dāng)其為NULL指針時(shí),將引起read系統(tǒng)調(diào)用放回EINVAL(“非法參數(shù)”)。ifdef MAGIC_ROM_PTR int (*roptr) (struct file*,struct vm_area_struct *)。ssize_t(*readv) (struct file*,const struct iovec*,unsigned long ,loff_t *)。 int(*release) (struct inode*, struct file *)。 int (*ioctl) (struct inode*,struct file*,unsigned int ,unsigned long)。 ssize_t (*read) (struct file *,char *,size_t,loff_t *)。在操作系統(tǒng)內(nèi)部,外部設(shè)備的存取是通過一組固定入口點(diǎn)進(jìn)行的,這些入口點(diǎn)由每個(gè)外設(shè)的驅(qū)動(dòng)程序提供,由函數(shù)file_operations結(jié)構(gòu)向系統(tǒng)進(jìn)行說明,因此,便攜設(shè)備的驅(qū)動(dòng)程序的主要工作是編寫子函數(shù),并填寫file_operations 的各個(gè)域。塊設(shè)備是主要對(duì)針對(duì)磁盤等慢速設(shè)備設(shè)計(jì)的,一面耗費(fèi)過多的CPU時(shí)間來等待。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件那樣對(duì)硬件設(shè)備進(jìn)行操作。如上例中,在當(dāng)前位置創(chuàng)建出一個(gè)與 /dev/had 一樣的、可以訪問的第一個(gè)IDE設(shè)備主硬盤的文件(塊設(shè)備,主設(shè)備號(hào) 3,輔設(shè)備號(hào) 0),文件名叫做harddisk。若不同串口使用同一個(gè)驅(qū)動(dòng)程序,其主設(shè)備號(hào)一樣、輔設(shè)備號(hào)不同,輔設(shè)備號(hào)標(biāo)識(shí)這是第幾個(gè)串口設(shè)備。其中,設(shè)備類型和主設(shè)備號(hào)結(jié)合在一起就唯一地確定了設(shè)備的驅(qū)動(dòng)程序及界面,因而一般對(duì)應(yīng)確切的驅(qū)動(dòng)程序。才有折本節(jié)點(diǎn)在目錄中。設(shè)備文件都放在/dev目錄下,也就是說,對(duì)于一個(gè)設(shè)備,它可以在/dev下面存在一個(gè)對(duì)應(yīng)的邏輯設(shè)備節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)以文件的形式存在單并不是普通意義上的文件,而是設(shè)備文件,更確切地說是設(shè)備節(jié)點(diǎn)。用戶進(jìn)程也是通過一種特殊的文件來與實(shí)際的硬件打交道的,這種特殊的文件就是
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1