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

正文內(nèi)容

北郵電子院嵌入式實驗報告大四上-文庫吧資料

2024-10-23 04:10本頁面
  

【正文】 ile_ operations *fops)。select系統(tǒng)調(diào)用在檢查與設(shè)備文件相關(guān)的文件描述符時使用select入口點。select入口點。?ioctl入口點。對于有緩沖區(qū)的I/O操作,一般是把數(shù)據(jù)寫入緩沖區(qū)里。?write入口點。對于有緩沖區(qū)的I/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。?read入口點。當(dāng)最后一次使用設(shè)備完成后,調(diào)用close子程序。?close入口點。open子程序必須對將要進(jìn)行的I/O操作做好必要的準(zhǔn)備工作,如清除緩沖區(qū)等。打開設(shè)備準(zhǔn)備I/O操作。一個設(shè)備驅(qū)動程序模塊的基本框架在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過一組固定的入口點來進(jìn)行,入口點也可以理解為設(shè)備的句柄,就是對設(shè)備進(jìn)行操作的基本函數(shù)。由于Linux 中將設(shè)備當(dāng)做文件處理,所以對設(shè)備進(jìn)行操作的調(diào)用格式與對文件的操作類似,主要包括open()、read()、write()、ioctl()、close()等。設(shè)備文件的屬性由三部分信息組成:第一部分是文件的類型,第二部分是一個主設(shè)備號,第三部分是一個次設(shè)備號。?應(yīng)用程序通??梢酝ㄟ^系統(tǒng)調(diào)用open()打開設(shè)備文件,建立起與目標(biāo)設(shè)備的連接。對用戶程序而言,設(shè)備驅(qū)動程序隱藏了設(shè)備的具體細(xì)節(jié),對各種不同設(shè)備提供了一致的接口,一般來說,是把設(shè)備映射為一個特殊的設(shè)備文件,用戶程序可以像對其他文件一樣對此設(shè)備文件進(jìn)行操作。驅(qū)動程序是內(nèi)核的一部分,是操作系統(tǒng)內(nèi)核與硬件設(shè)備的直接接口,驅(qū)動程序屏蔽了硬件的細(xì)節(jié),完成以下功能:?對設(shè)備初始化和釋放;?對設(shè)備進(jìn)行管理,包括實時參數(shù)設(shè)置,以及提供對設(shè)備的操作接口; ?讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)或者回送應(yīng)用程序請求的數(shù)據(jù); ?檢測和處理設(shè)備出現(xiàn)的錯誤。直到正確編譯。8)在上面同一個終端窗口中,輸入下列 2 , 目標(biāo)文件,如圖 710,圖711: ①armlinuxgcc– ②ls 等到再次出現(xiàn)提示符,代表程序已經(jīng)正確編譯。輸入程序的時候和其他編輯器是一樣的,如下圖。就像在 Windows系統(tǒng)下面使用寫字板等一樣道理。5)打開PXA270_RP目標(biāo)板電源,按目標(biāo)板上的BOOT鍵,在mini中應(yīng)該會看到如下圖:6)在mini終端窗口中,如圖,輸入下列四條命令 root ifconfig eth up mounto nolock :/ /mnt cd /mnt 此時,先將該窗口最小化,在后面的第 10 操作步驟中還將會回到該窗口中進(jìn)行操作。進(jìn)入RedHat 圖形界面后,打開一個終端窗(Terminal)。2)打開宿主PC 機(jī)電源,進(jìn)入 Linux操作系統(tǒng)。實驗七通過用c語言編寫的簡單程序HelloWorld,測試前面幾個實驗是否成功配置好環(huán)境,從超級終端可以看到HelloWorld程序的運(yùn)行結(jié)果。當(dāng)我們想用遠(yuǎn)端檔案時,只需調(diào)用“mount”就可以遠(yuǎn)端系統(tǒng)掛接在自己的檔案系統(tǒng)之下。實驗六為宿主PC機(jī)配置了NFS服務(wù)。TFTP(Trivial File Transfer Protocol)是簡單文件傳輸協(xié)議,由于特定開發(fā)環(huán)境的制約,這一服務(wù)是必須的。由于后面的實驗都要依靠前面實驗的配置,故本段只著重敘述實驗七的具體實現(xiàn)。對嵌入式系統(tǒng)有進(jìn)一步的了解。學(xué)習(xí)LINUX開發(fā)環(huán)境的搭建,通訊配置等。感謝黃惠英老師的細(xì)心指導(dǎo)。不然在掛載時會出現(xiàn)無法掛載的現(xiàn)象。否則,在需要一次一次編譯一次次查看錯誤一次次改正錯誤,這會是個費時費力的工作。在對c語言有一定的了解的前提下,可以很容易相應(yīng)代碼所實現(xiàn)的功能,僅需要對相應(yīng)代碼做些修改即可。所以完成下來難度不是很大。在實驗十二中,我們對實驗的接口代碼規(guī)則已經(jīng)有了一定的了解。總的來說,實驗的難度不大。在實驗時,由于有些電腦的網(wǎng)線接口有斷裂的現(xiàn)象,如果插口沒接好的話,將會出現(xiàn)nfs連接錯誤。不然也會出現(xiàn)無法呼叫現(xiàn)象。否則會出現(xiàn)無法建立呼叫的問題(其表現(xiàn)為超級終端接口內(nèi)沒有輸出內(nèi)容)。這些實驗內(nèi)容只要按照實驗指導(dǎo)書上的步驟一步一步做即可,不會出現(xiàn)難以解決的問題,一般都會做的很順利。這款設(shè)備主要包括核心板與底板兩個部分,核心板主要集成了高速的PXA270 CPU,配套的存儲器,網(wǎng)卡等設(shè)備;底板主要是各種類型的接口與擴(kuò)展口。j四、測試顯示:(以下為三角波)(以下為sin)三、實驗總結(jié):在本次嵌入式實驗中,我們首先在老師的指導(dǎo)下了解了嵌入式系統(tǒng),初步接觸了Linux環(huán)境。while(1){ c = buf。endif } printf(“create sin waven”)。endif buf[j] =(unsigned char)255*(x/2+1)/2。jx=(j/POINT)*(5*M_PI)。double x。unsigned long I。代碼:(需要修改部分)//printvoid da_create_sin(int fd){ unsigned char buf[(int)POINT]。二、Makefile文件可以繼續(xù)用前面程序Mekefile的代碼,只需要將相應(yīng)部分的代碼修改即可。module_init(pxa270_DA_CTL_init)。MODULE_AUTHOR(“l(fā)iduo”)。endif devfs_unregister_chrdev(SIMPLE_DA_MAJOR, “DA_ctl”)。return 0。endif ret = HW_DA_CTL_init()。If(ret補(bǔ)充代碼9:int ret =ENODEV。DA_ctl_ops)。補(bǔ)充代碼7:open: SIMPLE_DA_open, read: SIMPLE_DA_read, write: SIMPLE_DA_write, ioctl: SIMPLE_DA_ioctl, release: SIMPLE_DA_release補(bǔ)充代碼8:int ret =ENODEV。endif MOD_INC_USE_COUNT。endif return 0。endif return count。endif return count。printk(“************************************************nn”)。驅(qū)動程序代碼:一、補(bǔ)充代碼補(bǔ)充代碼1:include“../AD/” /引用AD驅(qū)動程序的頭文件/補(bǔ)充代碼2:printk(“*****************************************n”)。}修改之處:只需交換AD1和AD0即可實現(xiàn)輸出通道的改變。printf(“val0 = %dtval1 = %dn”,val0,val1。usleep(100)。代碼:for(i=0。endif devfs_unregister_chrdev(ADCTL_MAJOR, “ad_ctl”)。return 0。endif ret = HW_AD_CTL_init()。If(ret補(bǔ)充代碼8:int ret =ENODEV。adctl_ops)。int ret =ENODEV。return 0。補(bǔ)充代碼5:ifdef OURS_HELLO_DEBUG printk(“SIMPLE_HELLO_release [kernel]n”)。endif MOD_INC_USE_COUNT。endif return count。endif return count。printk(“************************************************nn”)。驅(qū)動程序代碼一、補(bǔ)充代碼補(bǔ)充代碼1:printk(“*****************************************n”)。usleep(200000)。jwrite(fd,buf,2)。buf[1]=~r。代碼:for(i=1。// column}c = 1。usleep(200000)。jwrite(fd,buf,2)。buf[1]=~r。代碼:for(i=1。二、Makefile程序仍然可以用前一個實驗的,只要把相關(guān)函數(shù)名改了就可以,此處不再贅述。補(bǔ)充代碼6:ifdef OURS_LED_DEBUG printk(“cleanup_LED_ctl [kernel]n”)。if(ret)return ret。ifdef OURS_LED_DEBUG printk(“pxa270_LED_CTL_init [kernel]n”)。endif return 0。endif return count。printk(“************************************************nn”)。驅(qū)動程序代碼:一、補(bǔ)充代碼補(bǔ)充代碼1:printk(“*****************************************n”)。}修改之處:修改count的變化方式,讓其每次增加2,而不是1,使0、8循環(huán)顯示,如要循環(huán)顯示0的話,只要在上述代碼中將buf[count]改為buf[8count]即可。ret=write(fd,data,1)。代碼: for(count=0。} 修改之處:將顯示的數(shù)有buf[count]改為buf[9count],實現(xiàn)反向循環(huán)顯示。//原來為data[0] = buf[count] ret=write(fd,data,1)。for(count=0。module_exit(cleanup_SERIAL_LED)。MODULE_LICENSE(“GPL”)。補(bǔ)充代碼11: MODULE_DESCRIPTION(“serial_led driver module”)。補(bǔ)充代碼10: ifdef OURS_HELLO_DEBUG printk(“cleanup_SERIAL_LED [kernel]n”)。if(ret)return ret。ifdef OURS_HELLO_DEBUG printk(“pxa270_SERIAL_LED_init [kernel]n”)。Showversion()。ret = devfs_register_chrdev(SERIAL_LED_MAJOR, “serial_led_ctl”, amp。return 0。補(bǔ)充代碼6: ifdef OURS_HELLO_DEBUG printk(“SERIAL_LED_release [kernel]n”)。endif MOD_INC_USE_COUNT。endif return 0。endif return count。endif return count。printk(“************************************************nn”)。一、補(bǔ)充代碼補(bǔ)充代碼1:printk(“*****************************************n”)。補(bǔ)充代碼4:open: SIMPLE_INT_open, read: SIMPLE_INT_read, write: SIMPLE_INT_write, ioctl: SIMPLE_INT_ioctl, release: SIMPLE_INT_release, 二、Makefile文件如實驗十三做相應(yīng)修改。補(bǔ)充代碼3:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_write [kernel]n”)。補(bǔ)充代碼2:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_read [kernel]n”)。printk(“t %s tn”,VERSION)。//原來為sleep(1); }不同之處:改變代碼中加粗位置括號數(shù)字,可以改變燈亮和熄滅的時間比四、測試顯示測試時,超級終端上的顯示如下:實驗十四 中斷實驗本實驗是讓我們學(xué)習(xí)中斷的相關(guān)概念,以及Linux系統(tǒng)是如何處理中斷的,并且學(xué)會編寫獲取和處理外中斷的驅(qū)動程序。//原來為sleep(1);ioctl(fd,LED_ON)。作業(yè)主要代碼:while(1){ ioctl(fd,LED_OFF)。補(bǔ)充代碼2:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_open [kernel]n”)。一、補(bǔ)充代碼補(bǔ)充代碼1:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_write [kernel]n”)。實現(xiàn)用CPU GPIO控制外部LED,利用PXA270核心板上的LED驗證我們的工作。成功生成測試文件后用超級終端開始掛載,加載驅(qū)動程序,使用命令./test測試,觀察測試結(jié)果,實驗完成。pwd)TOPDIR:=.KERNELDIR=/pxa270_linux/linux INCLUDEDIR=$(KERNELDIR)/include CROSS_COMPILE=armlinuxAS =$(CROSS_COMPILE)as LD =$(CROSS_COMPILE)ld CC =$(CROSS_COMPILE)gcc CPP =$(CC)E AR =$(CROSS_COMPILE)ar NM =$(CROSS_COMPILE)nm STRIP =$(CROSS_COMPILE)strip OBJCOPY=$(CROSS_COMPILE)objcopy OBJDUMP=$(CROSS_COMPILE)objdumpCFLAGS+=I..CFLAGS+=Wall –O –D_KERNEL_DMODULE –I$(INCLUDEDIR)TARGET = modules: $(TARGET)
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1