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

正文內容

北郵嵌入式實驗報告[五篇]-在線瀏覽

2024-10-19 20:21本頁面
  

【正文】 設備在cleanup_ module()函數(shù)中調用unregister_chrdev()來完成設備的注銷。包括設備注冊在內,設備驅動的初始化函數(shù)主要完成的功能是有以下5項。對硬件寄存器進行設置。(2)初始化設備驅動相關的參數(shù)。在這一步驟里對設備變量中的項進行初始化。調用register_chrdev()函數(shù)來注冊設備。如果設備需要IRQ支持,則要使用request_irq()函數(shù)注冊中斷。初始化部分一般還負責給設備驅動程序申請包括內存、時鐘、I/O端口等在內的系統(tǒng)資源,這些資源也可以在open子程序或者其他地方申請。若驅動程序是內核的一部分,初始化函數(shù)則要按如下方式聲明: int __init chr_driver_init(void)。當驅動程序是以模塊的形式編寫時,則要按照如下方式聲明: int init_module(void)當運行后面介紹的insmod命令插入模塊時,會調用init_module函數(shù)完成初始化工作。所以進行嵌入式Linux系統(tǒng)的開發(fā),很大的工作量是為各種設備編寫驅動程序。嵌入式Linux系統(tǒng)驅動程序開發(fā)與普通Linux開發(fā)沒有區(qū)別。實現(xiàn)一個嵌入式Linux設備驅動的大致流程如下。一般嵌入式處理器的生產(chǎn)商提供參考電路,也可以根據(jù)需要自行設計。設備由一個主設備號和一個次設備號來標識。次設備號僅由設備驅動程序解釋,區(qū)分被一個設備驅動控制下的某個獨立的設備。在驅動程序中實現(xiàn)驅動的注冊和卸載。(5)實現(xiàn)所需的文件操作調用,如read、write等。(7)編譯該驅動程序到內核中,或者用insmod命令加載模塊。五、基本接口實驗在完成了基本實驗后,我們開始著手基本接口實驗。 簡單設備驅動程序本次實驗的任務是編寫一個字符型設備驅動程序,并學習在應用程序中調用驅動。雖然這樣一個字符型設備驅動程序并沒有任何實際作用,但是它讓我們輕松掌握了嵌入式驅動的編寫過程,因為復雜繁瑣的驅動,其骨架都是相同的。 CPU GPIO驅動程序設計在本實驗中,我們要編寫第一個針對實際硬件的驅動程序。本實驗涉及的外部硬件只有電阻和發(fā)光二極管。實驗第一步是編寫 PXA270 GPIO 驅動程序。break。break。return(EINVAL)。//設置GPIO96輸出模式:開燈 GPSR3 |= 0x00000001。在測試程序中有這樣一段代碼: while(1){ ioctl(fd, LED_OFF)。// 休眠1秒ioctl(fd,LED_ON)。}實驗作業(yè)要求在目標板上LED閃爍產(chǎn)生亮7秒,滅5秒的效果,很容易實現(xiàn),只需將上面的代碼改為如下代碼即可:while(1){ ioctl(fd, LED_OFF)。sleep(7)。中斷實驗在理論課中,我們學習了許多中斷方面的知識,包括中斷向量、中斷優(yōu)先級、中斷過程等。在此實驗中,我們要編寫一個中斷程序,利用目標板上的按鍵SW2來產(chǎn)生中斷,使得當每次按下此按鍵時,在超級終端上打印出響應的信息。SIMPLE_INT_interrupt, SA_INTERRUPT, “int_ctl”, NULL)。通過此實驗,我了解了硬件中斷管腳與中斷號的對應關系,以及中斷號與中斷處理程序的對應關系,對于今后編寫更為復雜的中斷程序打下基礎。在編寫驅動程序時,主要有以下需要注意的: // 按位寫入void write_bit(int data){{ } else{GPCR2 |=(0x1 GPCR2 |=(0x1 }GPSR2 |=(0x1 void write_byte(int data){ { } } int i。實驗作業(yè)要求在上述基礎上,分別實現(xiàn)一下兩個功能:① 要求您再編寫一個測試程序,實現(xiàn) PXA270EP 目標板上的 LED 數(shù)碼管循環(huán)顯示的數(shù)字90。由于在測試程序中定義了數(shù)組buf[10]分別存儲了09是個數(shù),因此上述功能的實現(xiàn)方法是,分別對測試程序做如下修改:原測試程序:while(1){ { } } for(count=0。ret=write(fd,data,1)。實現(xiàn)功能①:while(1){ { } } for(count=9。count)// 倒序顯示數(shù)字data[0] = buf[count]。sleep(1)。countdata[0] = buf[count]。sleep(1)。 LED點陣驅動程序設計通過本實驗的操作,我們將 8X8 的點陣 LED 驅動起來并通過編寫測試程序,使其能夠按照您的意圖進行顯示。② 要求您再編寫一個測試程序,實現(xiàn)按豎的方向順序掃描 LED 點陣數(shù)碼管。ibuf[0]=c。// row for(j=1。c = c作業(yè)二,豎向掃描:for(i=1。buf[1]=~r。j} r = 1。為了更加清楚地理解 AD 轉換器的工作過程,請您再 編寫一個測試程序,將 UCB_ADC_INP_AD0 換成其他通道,來觀察其他 AD 通道情況。iusleep(100)。usleep(100)。在此基礎上,要求試寫一個實現(xiàn)輸出三角波的測試程序。// print select functions scanf(“%d”,amp。// user input select getchar()。break。printf(“Quit DA ”)。} case DA_TRI :{da_create_tri(fd)。} default : { printf(“input = %xn”,flag_select_func)。: {da_create_fang(fd)。} printf(“please input your select use 1 to 4n”)。解決方法:在超級終端下的掛載命令應該用”mount –o nolock :/ /mnt”,如果依然不能掛載需要重啟NFS服務,即在PC機終端中輸入命令”service nfs restart”兩遍后就可以掛載,當然有時候也可能是因為網(wǎng)線沒插好。七、實驗總結及心得本學期的所有實驗均在宿主PC機與PXA270EP目標板上進行。在實驗中,不難發(fā)現(xiàn),編譯驅動程序大體框架都是一樣的,比如里面的讀函數(shù)、寫函數(shù)、ioctl函數(shù)、打開、關閉以及函數(shù)模塊的初始化并且在超級終端上顯示出等。除此之外,我認為很多基礎知識對實驗的進行也起著非常大的作用,例如數(shù)碼管的顯示原理。之后,我們又進行了更加深入的應用試驗,如人機接口方面的鍵盤驅動實驗、LCD控制實驗和觸摸屏數(shù)據(jù)采集與控制實驗,應用方面的多線程應用實驗等。整個實驗讓我了解了一套完整的嵌入式系統(tǒng)驅動程序開發(fā)的全過程,學到的內容非常豐富,相信在學習了這些內容后,在今后的學習工作中接觸到類似內容,我不會感到無從下手,而是能夠有條不紊。學習LINUX開發(fā)環(huán)境的搭建,通訊配置等。對嵌入式系統(tǒng)有進一步的了解。由于后面的實驗都要依靠前面實驗的配置,故本段只著重敘述實驗七的具體實現(xiàn)。TFTP(Trivial File Transfer Protocol)是簡單文件傳輸協(xié)議,由于特定開發(fā)環(huán)境的制約,這一服務是必須的。實驗六為宿主PC機配置了NFS服務。當我們想用遠端檔案時,只需調用“mount”就可以遠端系統(tǒng)掛接在自己的檔案系統(tǒng)之下。實驗七通過用c語言編寫的簡單程序HelloWorld,測試前面幾個實驗是否成功配置好環(huán)境,從超級終端可以看到HelloWorld程序的運行結果。2)打開宿主PC 機電源,進入 Linux操作系統(tǒng)。進入RedHat 圖形界面后,打開一個終端窗(Terminal)。5)打開PXA270_RP目標板電源,按目標板上的BOOT鍵,在mini中應該會看到如下圖:6)在mini終端窗口中,如圖,輸入下列四條命令 root ifconfig eth up mounto nolock :/ /mnt cd /mnt 此時,先將該窗口最小化,在后面的第 10 操作步驟中還將會回到該窗口中進行操作。就像在 Windows系統(tǒng)下面使用寫字板等一樣道理。輸入程序的時候和其他編輯器是一樣的,如下圖。8)在上面同一個終端窗口中,輸入下列 2 , 目標文件,如圖 710,圖711: ①armlinuxgcc– ②ls 等到再次出現(xiàn)提示符,代表程序已經(jīng)正確編譯。直到正確編譯。驅動程序是內核的一部分,是操作系統(tǒng)內核與硬件設備的直接接口,驅動程序屏蔽了硬件的細節(jié),完成以下功能:?對設備初始化和釋放;?對設備進行管理,包括實時參數(shù)設置,以及提供對設備的操作接口; ?讀取應用程序傳送給設備文件的數(shù)據(jù)或者回送應用程序請求的數(shù)據(jù); ?檢測和處理設備出現(xiàn)的錯誤。對用戶程序而言,設備驅動程序隱藏了設備的具體細節(jié),對各種不同設備提供了一致的接口,一般來說,是把設備映射為一個特殊的設備文件,用戶程序可以像對其他文件一樣對此設備文件進行操作。?應用程序通??梢酝ㄟ^系統(tǒng)調用open()打開設備文件,建立起與目標設備的連接。設備文件的屬性由三部分信息組成:第一部分是文件的類型,第二部分是一個主設備號,第三部分是一個次設備號。由于Linux 中將設備當做文件處理,所以對設備進行操作的調用格式與對文件的操作類似,主要包括open()、read()、write()、ioctl()、close()等。一個設備驅動程序模塊的基本框架在系統(tǒng)內部,I/O設備的存取通過一組固定的入口點來進行,入口點也可以理解為設備的句柄,就是對設備進行操作的基本函數(shù)。打開設備準備I/O操作。open子程序必須對將要進行的I/O操作做好必要的準備工作,如清除緩沖區(qū)等。?close入口點。當最后一次使用設備完成后,調用close子程序。?read入口點。對于有緩沖區(qū)的I/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。?write入口點。對于有緩沖區(qū)的I/O操作,一般是把數(shù)據(jù)寫入緩沖區(qū)里。?ioctl入口點。select入口點。select系統(tǒng)調用在檢查與設備文件相關的文件描述符時使用select入口點。register_chrdev的定義為:intregister_chrdev(unsigned int major, const char *name, struct file_ operations *fops)。name是設備名,fops是對各個調用的入口點說明。如果動態(tài)分配主設備號成功,此函數(shù)將返回所分配的主設備號。Linux在/dev目錄中為每個設備建立一個文件,用ls–l命令列出函數(shù)返回值,若小于0,則表示注冊失??;返回0或者大于0的值表示注冊成功。當有對此設備名的訪問時,Linux通過請求訪問的設備名得到主、次設備號,然后把此訪問分發(fā)到對應的設備驅動,設備驅動再根據(jù)次設備號調用不同的函數(shù)。字符設備在cleanup_ module()函數(shù)中調用unregister_chrdev()來完成設備的注銷。包括設備注冊在內,設備驅動的初始化函數(shù)主要完成的功能是有以下5項。對硬件寄存器進行設置。(2)初始化設備驅動相關的參數(shù)。在這一步驟里對設備變量中的項進行初始化。調用register_chrdev()函數(shù)來注冊設備。如果設備需要IRQ支持,則要使用request_irq()函數(shù)注冊中斷。初始化部分一般還負責給設備驅動程序申請包括內存、時鐘、I/O端口等在內的系統(tǒng)資源,這些資源也可以在open子程序或者其他地方申請。若驅動程序是內核的一部分,初始化函數(shù)則要按如下方式聲明: int __initchr_driver_init(void)。當驅動程序是以模塊的形式編寫時,則要按照如下方式聲明: intinit_module(void)當運行后面介紹的insmod命令插入模塊時,會調用init_module函數(shù)完成初始化工作。所以進行嵌入式Linux系統(tǒng)的開發(fā),很大的工作量是為各種設備編寫驅動程序。嵌入式Linux系統(tǒng)驅動程序開發(fā)與普通Linux開發(fā)沒有區(qū)別。實現(xiàn)一個嵌入式Linux設備驅動的大致流程如下。一般嵌入式處理器的生產(chǎn)商提供參考電路,也可以根據(jù)需要自行設計。設備由一個主設備號和一個次設備號來標識。次設備號僅由設備驅動程序解釋,區(qū)分被一個設備驅動控制下的某個獨立的設備。在驅動程序中實現(xiàn)驅動的注冊和卸載。(5)實現(xiàn)所需的文件操作調用,如read、write等。(7)編譯該驅動程序到內核中,或者用insmod命令加載模塊。五、基本接口實驗在完成了基本實驗后,我們開始著手基本接口實驗。 簡單設備驅動程序本次實驗的任務是編寫一個字符型設備驅動程序,并學習在應用程序中調用驅動。雖然這樣一個字符型設備驅動程序并沒有任何實際作用,但是它讓我們輕松掌握了嵌入式驅動的編寫過程,因為復雜繁瑣的驅動,其骨架都是相同的。 CPU GPIO驅動程序設計在本實驗中,我們要編寫第一個針對實際硬件的驅動程序。本實驗涉及的外部硬件只有電阻和發(fā)光二極管。補充代碼(1)//WRITEssize_tSIMPLE_GPIO_LED_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){ ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_write [kernel]n”)。}補充代碼(2)//OPENssize_tSIMPLE_GPIO_LED_open(structinode * inode ,struct file * file){ ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_open [kernel]n”)。return 0。實驗作業(yè)要求在目標板上LED閃爍產(chǎn)生亮7秒,滅2秒的效果 在測試程序中有這樣一段代碼: while(1){ ioctl(fd,LED_OF
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1