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

正文內(nèi)容

北郵電子院嵌入式實驗報告大四上-預覽頁

2024-10-23 04:10 上一頁面

下一頁面
 

【正文】 **”)。endif return count。endif return 0。}/*released:關閉函數(shù)Inode:打開文件所對應的i節(jié)點,主要獲取從設備號 flip:打開的一個文件release()方法最重要的是調(diào)用了宏MOD_DEC_INC_USE_COUNT,這個宏主要用來減少驅(qū)動程序使用計數(shù)器*/ ssize_t SIMPLE_HELLO_release(struct inode * inode ,struct file * file){ ifdef OURS_HELLO_DEBUGprintk(“SIMPLE_HELLO_release[kernel]n”)。/*INIT:驅(qū)動程序初始化devfs_register_chrdev(SIMPLE_HELLO_MAJOR,“hello_serial_ctl”,amp。showversion()。}static int __init pxa270_ HELLO_init(void)//模塊初始化函數(shù),調(diào)用HW_ HELLO_init 函數(shù){ int ret =ENODEV。return 0。//描述信息 MODULE_AUTHOR(“l(fā)iduo”)。//指定驅(qū)動程序卸載函數(shù)Makefile文件代碼:TOPDIR:=$(shell cd..。實驗十三 CPU GPIO驅(qū)動程序設計本實驗是讓我們在linux系統(tǒng)中插入自己的驅(qū)動程序,調(diào)用它。endif return count。sleep(5)。一、補充代碼補充代碼1:printk(“*****************************************n”)。endif return count。三、測試時,超級終端上顯示如下:實驗十五 數(shù)碼管顯示驅(qū)動實驗本實驗中,我們要編驅(qū)動程序以實現(xiàn)在Linux系統(tǒng)下控制LED數(shù)碼管的顯示。補充代碼2: ifdef OURS_HELLO_DEBUG printk(“SERIAL_LED_read [kernel]n”)。補充代碼4: ifdef OURS_HELLO_DEBUG printk(“SERIAL_LED_ioctl [kernel]n”)。return 0。補充代碼7: open: SERIAL_LED_open, read: SERIAL_LED_read, write: SERIAL_LED_write, ioctl: SERIAL_LED_ioctl, release: SERIAL_LED_release補充代碼8: int ret =ENODEV。If(ret補充代碼9: int ret =ENODEV。return 0。MODULE_AUTHOR(“l(fā)iduo”)。二、Makefile文件與實驗十四相同,只需作相應修改即可三、作業(yè)代碼實現(xiàn)目標板上的LED數(shù)碼管循環(huán)顯示數(shù)字90。sleep(1)。count{data[0] = buf[count]。四、測試顯示:測試時,顯示如下:作業(yè)1: 作業(yè)2:實驗十六 LED點陣驅(qū)動程序設計本實驗要求我們學會編寫驅(qū)動程序,實現(xiàn)在Linux系統(tǒng)下控制LED點陣顯示,并在此基礎上稍加改進,實現(xiàn)對LED的控制。補充代碼2:ifdef OURS_LED_DEBUG printk(“SIMPLW_LED_read [kernel]n”)。補充代碼4:open: SIMPLE_LED_open, read: SIMPLE_LED_read, write: SIMPLE_LED_write, ioctl: SIMPLE_LED_ioctl, release: SIMPLE_LED_release補充代碼5:int ret =ENODEV。return 0。三、作業(yè)代碼按橫方向隔行掃描led點陣數(shù)碼管。// rowfor(j=1。// sleep secondc = cbuf[0]=c。ibuf[0]=c。printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1])。printk(“t %s tn”,VERSION)。補充代碼3:ifdef OURS_HELLO_DEBUG printk(“SIMPLE_HELLO_write [kernel]n”)。return 0。補充代碼6:open: SIMPLE_HELLO_open, read: SIMPLE_HELLO_read, write: SIMPLE_HELLO_write, ioctl: SIMPLE_HELLO_ioctl, release: SIMPLE_HELLO_release補充代碼7:ad_ucb = ucb1x00_get()。Showversion()。if(ret)return ret。二、Makefile文件可以用前一個程序的文件,只要將相應部分的代碼修改即可三、作業(yè)代碼要求:將UCB_ADC_INP_AD0換為其他通道并觀察。val1 = ioctl(fd,UCB_ADC_INP_AD0,0)。四、測試時顯示測試時、超級終端顯示如下:實驗十八 DA驅(qū)動程序本實驗要求我們編寫驅(qū)動程序,實現(xiàn)將數(shù)字信號轉(zhuǎn)換成模擬信號并在示波器上顯示出模擬信號波形,即實現(xiàn)DA轉(zhuǎn)換。補充代碼3:ifdef OURS_DA_DEBUG printk(“SIMPLE_DA_read [kernel]n”)。補充代碼5:ifdef OURS_DA_DEBUG printk(“SIMPLE_DA_ioctl [kernel]n”)。return 0。Showversion()。if(ret)return ret。補充代碼11:MODULE_DESCRIPTION(“serial_led driver module”)。module_exit(cleanup_DA_ctl)。unsigned char*c。for(j=0。ifdef OURS_DEBUG printf(“%xn”, buf[j])。for(j=0。了解了實驗的平臺后,在接下來的基本實驗中我們學會了嵌入式開發(fā)系統(tǒng)硬件環(huán)境的搭建、Linux操作系統(tǒng)RedHat9的安裝、軟件環(huán)境的搭建,以及配置超級終端,配置通訊服務。其次要確定虛擬機上網(wǎng)橋的設定是否正確。在基本實驗之后,進行的就是接口實驗。而之后的幾個實驗都是基于實驗十二進行相應的改動即可。不過,值得注意的還有兩點,第一:代碼的編寫一定要符合規(guī)則,同時,代碼的輸入要避免輸入錯誤。通過這次實驗,我對嵌入式編程有了更深層次的理解,加深了我對理論知識的認識,有助于今后的學習和工作。并熟練掌握LINUX驅(qū)動程序的編寫及開發(fā)流程。實驗五為宿主PC機配置了TFTP服務。NFS(Network File System)指網(wǎng)絡文件系統(tǒng),它實現(xiàn)了文件在不同的系統(tǒng)間使用。實驗步驟如下: 1)硬件連接:連接宿主 PC 機和一臺 PXA270RP目標板。4)輸入mini然后回車,minicim設置為115200 8NI無流控。在 vi 里面先單擊鍵盤 A 鍵,然后左下角會變成—INSER。如果此步出現(xiàn)錯誤信息,請查看錯誤信息,并且重新編輯原來的 C文件,修改錯誤。Linux操作系統(tǒng)將所有的設備全部看成文件,并通過文件的操作界面進行操作。?打開了代表著目標設備的文件,即建立起與設備的連接后,可以通過read()、write()、ioctl()等常規(guī)的文件操作對目標設備進行操作。應用程序發(fā)出系統(tǒng)調(diào)用命令后,會從用戶態(tài)轉(zhuǎn)到核心態(tài),通過內(nèi)核將open()這樣的系統(tǒng)調(diào)用轉(zhuǎn)換成對物理設備的操作。對字符設備文件進行打開操作,都會調(diào)用設備的open入口點。關閉一個設備。從設備上讀數(shù)據(jù)。往設備上寫數(shù)據(jù)。執(zhí)行讀、寫之外的操作。設備的驅(qū)動程序在加載的時候首先需要調(diào)用入口函數(shù)init_module(),該函數(shù)最重要的一個工作就是向內(nèi)核注冊該設備,對于字符設備調(diào)用register_chrdev()完成注冊。此函數(shù)返回0時表示成功;返回EINVAL,表示申請的主設備號非法,主要原因是主設備號大于系統(tǒng)所允許的最大設備號;返回EBUSY,表示所申請的主設備號正在被其他設備程序使用。注冊以后,Linux將設備名與主、次設備號聯(lián)系起來。unregister_chrdev()的定義為:intunregister_chrdev(unsigned int major, const char *name)。比如,設置中斷掩碼,設置串口的工作方式、并口的數(shù)據(jù)方向等。(3)在內(nèi)核注冊設備。(5)其他初始化工作。其中__init是必不可少的,在系統(tǒng)啟動時會由內(nèi)核調(diào)用chr_driver_init,完成驅(qū)動程序的初始化。除非系統(tǒng)不使用操作系統(tǒng),程序直接操縱硬件。(1)查看原理圖,理解設備的工作原理。主設備號惟一標識了設備類型,即設備驅(qū)動程序類型,它是塊設備表或字符設備表中設備表項的索引。(4)設計所要實現(xiàn)的文件操作,定義file_operations結(jié)構(gòu)。(8)測試該設備,編寫應用程序,對驅(qū)動程序進行測試??紤]到我們初次接觸驅(qū)動程序的編寫,對此還十分陌生,因此指導書中提供了本次實驗所要用到的程序源代碼。我們知道,凡是操作系統(tǒng)控制外部設備,即使是最簡單的硬件電路,也是需要驅(qū)動的。endifreturn count。}補充代碼(3)//structfile_operationsGPIO_LED_ctl_ops ={ open:SIMPLE_GPIO_LED_open, read:SIMPLE_GPIO_LED_read, write:SIMPLE_GPIO_LED_write, ioctl:SIMPLE_GPIO_LED_ioctl, release:SIMPLE_GPIO_LED_release, }。while(1){ ioctl(fd,LED_OFF)。}// 休眠1秒ioctl(fd,LED_ON)。printk(“t %s tn”, VERSION)。printk(“SIMPLE_INT_read [kernel]n”)。通過此實驗,我了解了硬件中斷管腳與中斷號的對應關系,以及中斷號與中斷處理程序的對應關系,對于今后編寫更為復雜的中斷程序打下基礎。printk(“*********************************************nn”)。} MOD_INC_USE_COUNT。return count。endif MOD_DEC_USE_COUNT。ret =devfs_register_chrdev(SERIAL_LED_MAJOR, amp。printk(“ pxa270 serial_led_driver register success!![kernel]n”)。printk(“pxa270_SERIAL_LED_init [kernel]n”)。} 補充代碼10 static void __exit cleanup_SERIAL_LED(void){ ifdef OURS_HELLO_DEBUG ifdef OURS_HELLO_DEBUGendif }補充代碼11 MODULE_DESCRIPTION(“serial_led driver module”)。module_exit(cleanup_SERIAL_LED)。由于在測試程序中定義了數(shù)組buf[10]分別存儲了09是個數(shù),因此上述功能的實現(xiàn)方法是,分別對測試程序做如下修改:原測試程序: while(1){ for(count=0。sleep(1)。count// 更改顯數(shù)順序{ data[0] = buf[count]。 LED點陣驅(qū)動程序設計通過本實驗的操作,我們將 8X8 的點陣 LED 驅(qū)動起來并通過編寫測試程序,使其能夠按照您的意圖進行顯示。} 補充代碼2 //READssize_tSIMPLE_LED_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ ifdef OURS_LED_DEBUGendif return count。printk(“pxa270_LED_CTL_init [kernel]n”)。printk(“SIMPLE_LED_ioctl [kernel]n”)。作業(yè)一,隔行掃描:printk(“cleanup_LED_ctl [kernel]n”)。ibuf[0]=c。c = cwrite(fd,buf,2)。// column結(jié)果顯示作業(yè)二,豎向掃描:for(i=1。j} r = 1。// sleep second r=rbuf[1]=~r。} struct ucb1x00 *ad_ucb。endif return 0。endif return count。ifdef OURS_HELLO_DEBUG int ret =ENODEV。ad_ucb=ucb1x00_get()。read: ioctl: adctl_read, adctl_ioctl, write: adctl_write, open: adctl_open, release:adctl_release,ADCTL_MAJOR, 0, S_IFCHR, amp。if(ret)}補充代碼9 static void __exit cleanup_AD_ctl(void){} DA驅(qū)動實驗通過本實驗的操作,我們使用示波器看到了通過DA轉(zhuǎn)換而輸出的波
點擊復制文檔內(nèi)容
外語相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1