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

正文內(nèi)容

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

2025-10-21 04:10 上一頁面

下一頁面
  

【正文】 E_GPIO_LED_open [kernel]n”)。本實驗涉及的外部硬件只有電阻和發(fā)光二極管。雖然這樣一個字符型設備驅(qū)動程序并沒有任何實際作用,但是它讓我們輕松掌握了嵌入式驅(qū)動的編寫過程,因為復雜繁瑣的驅(qū)動,其骨架都是相同的。五、基本接口實驗在完成了基本實驗后,我們開始著手基本接口實驗。(5)實現(xiàn)所需的文件操作調(diào)用,如read、write等。次設備號僅由設備驅(qū)動程序解釋,區(qū)分被一個設備驅(qū)動控制下的某個獨立的設備。一般嵌入式處理器的生產(chǎn)商提供參考電路,也可以根據(jù)需要自行設計。嵌入式Linux系統(tǒng)驅(qū)動程序開發(fā)與普通Linux開發(fā)沒有區(qū)別。當驅(qū)動程序是以模塊的形式編寫時,則要按照如下方式聲明: intinit_module(void)當運行后面介紹的insmod命令插入模塊時,會調(diào)用init_module函數(shù)完成初始化工作。初始化部分一般還負責給設備驅(qū)動程序申請包括內(nèi)存、時鐘、I/O端口等在內(nèi)的系統(tǒng)資源,這些資源也可以在open子程序或者其他地方申請。調(diào)用register_chrdev()函數(shù)來注冊設備。(2)初始化設備驅(qū)動相關的參數(shù)。包括設備注冊在內(nèi),設備驅(qū)動的初始化函數(shù)主要完成的功能是有以下5項。當有對此設備名的訪問時,Linux通過請求訪問的設備名得到主、次設備號,然后把此訪問分發(fā)到對應的設備驅(qū)動,設備驅(qū)動再根據(jù)次設備號調(diào)用不同的函數(shù)。如果動態(tài)分配主設備號成功,此函數(shù)將返回所分配的主設備號。register_chrdev的定義為:intregister_chrdev(unsigned int major, const char *name, struct file_ operations *fops)。select入口點。對于有緩沖區(qū)的I/O操作,一般是把數(shù)據(jù)寫入緩沖區(qū)里。對于有緩沖區(qū)的I/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。當最后一次使用設備完成后,調(diào)用close子程序。open子程序必須對將要進行的I/O操作做好必要的準備工作,如清除緩沖區(qū)等。一個設備驅(qū)動程序模塊的基本框架在系統(tǒng)內(nèi)部,I/O設備的存取通過一組固定的入口點來進行,入口點也可以理解為設備的句柄,就是對設備進行操作的基本函數(shù)。設備文件的屬性由三部分信息組成:第一部分是文件的類型,第二部分是一個主設備號,第三部分是一個次設備號。對用戶程序而言,設備驅(qū)動程序隱藏了設備的具體細節(jié),對各種不同設備提供了一致的接口,一般來說,是把設備映射為一個特殊的設備文件,用戶程序可以像對其他文件一樣對此設備文件進行操作。直到正確編譯。輸入程序的時候和其他編輯器是一樣的,如下圖。5)打開PXA270_RP目標板電源,按目標板上的BOOT鍵,在mini中應該會看到如下圖:6)在mini終端窗口中,如圖,輸入下列四條命令 root ifconfig eth up mounto nolock :/ /mnt cd /mnt 此時,先將該窗口最小化,在后面的第 10 操作步驟中還將會回到該窗口中進行操作。2)打開宿主PC 機電源,進入 Linux操作系統(tǒng)。當我們想用遠端檔案時,只需調(diào)用“mount”就可以遠端系統(tǒng)掛接在自己的檔案系統(tǒng)之下。TFTP(Trivial File Transfer Protocol)是簡單文件傳輸協(xié)議,由于特定開發(fā)環(huán)境的制約,這一服務是必須的。對嵌入式系統(tǒng)有進一步的了解。感謝黃惠英老師的細心指導。否則,在需要一次一次編譯一次次查看錯誤一次次改正錯誤,這會是個費時費力的工作。所以完成下來難度不是很大。總的來說,實驗的難度不大。不然也會出現(xiàn)無法呼叫現(xiàn)象。這些實驗內(nèi)容只要按照實驗指導書上的步驟一步一步做即可,不會出現(xiàn)難以解決的問題,一般都會做的很順利。j四、測試顯示:(以下為三角波)(以下為sin)三、實驗總結(jié):在本次嵌入式實驗中,我們首先在老師的指導下了解了嵌入式系統(tǒng),初步接觸了Linux環(huán)境。endif } printf(“create sin waven”)。jx=(j/POINT)*(5*M_PI)。unsigned long I。二、Makefile文件可以繼續(xù)用前面程序Mekefile的代碼,只需要將相應部分的代碼修改即可。MODULE_AUTHOR(“l(fā)iduo”)。return 0。If(ret補充代碼9:int ret =ENODEV。補充代碼7:open: SIMPLE_DA_open, read: SIMPLE_DA_read, write: SIMPLE_DA_write, ioctl: SIMPLE_DA_ioctl, release: SIMPLE_DA_release補充代碼8:int ret =ENODEV。endif return 0。endif return count。驅(qū)動程序代碼:一、補充代碼補充代碼1:include“../AD/” /引用AD驅(qū)動程序的頭文件/補充代碼2:printk(“*****************************************n”)。printf(“val0 = %dtval1 = %dn”,val0,val1。代碼:for(i=0。return 0。If(ret補充代碼8:int ret =ENODEV。int ret =ENODEV。補充代碼5:ifdef OURS_HELLO_DEBUG printk(“SIMPLE_HELLO_release [kernel]n”)。endif return count。printk(“************************************************nn”)。usleep(200000)。buf[1]=~r。// column}c = 1。jwrite(fd,buf,2)。代碼:for(i=1。補充代碼6:ifdef OURS_LED_DEBUG printk(“cleanup_LED_ctl [kernel]n”)。ifdef OURS_LED_DEBUG printk(“pxa270_LED_CTL_init [kernel]n”)。endif return count。驅(qū)動程序代碼:一、補充代碼補充代碼1:printk(“*****************************************n”)。ret=write(fd,data,1)。} 修改之處:將顯示的數(shù)有buf[count]改為buf[9count],實現(xiàn)反向循環(huán)顯示。for(count=0。MODULE_LICENSE(“GPL”)。補充代碼10: ifdef OURS_HELLO_DEBUG printk(“cleanup_SERIAL_LED [kernel]n”)。ifdef OURS_HELLO_DEBUG printk(“pxa270_SERIAL_LED_init [kernel]n”)。ret = devfs_register_chrdev(SERIAL_LED_MAJOR, “serial_led_ctl”, amp。補充代碼6: ifdef OURS_HELLO_DEBUG printk(“SERIAL_LED_release [kernel]n”)。endif return 0。endif return count。一、補充代碼補充代碼1:printk(“*****************************************n”)。補充代碼3:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_write [kernel]n”)。printk(“t %s tn”,VERSION)。//原來為sleep(1);ioctl(fd,LED_ON)。補充代碼2:ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_open [kernel]n”)。實現(xiàn)用CPU GPIO控制外部LED,利用PXA270核心板上的LED驗證我們的工作。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)all: $(TARGET): $(CC)c $(CFLAGS)$^o $clean: rmf *.o *~ Makefile文件的內(nèi)容用于執(zhí)行編譯工作,一個Makefile文件包括:① 由make工具創(chuàng)建的目標體(target),通常是目標文件或可執(zhí)行文件;② 要創(chuàng)建目標體所依賴的文件(dependency_file);③ 創(chuàng)建每個目標需要運行的命令(mand)。//驅(qū)動程序作者姓名 MODULE_LICENSE(“GPL”)。}/*模塊卸載函數(shù)devfs_unregister_chrdev(SIMPLE_HELLO_MAJOR,“hello _ctl”)最為主要 devfs_unregister_chrdev卸載設備驅(qū)動程序,包括主設備號、驅(qū)動程序名*/ static void __exit cleanup_ HELLO_ctl(void){ ifdef OURS_HELLO_DEBUGprintk(“cleanup_HELLO_ctl[kernel]n”)。ifdef OURS_HELLO_DEBUGprintk(“pxa270_ HELLO_init[kernel]n”)。if(ret{printk(“pxa270 init_module failed with %d n[kernel]”,ret)。 HELLO_ops)最為主要devfs_register_chrdev注冊設備驅(qū)動程序,包括主設備號、驅(qū)動程序名、結(jié)構(gòu)體指針*/ static int __init HW_ HELLO_init(void){ int ret =ENODEV。endif MOD_DEC_INC_USE_COUNT。}/*open:打開函數(shù)inode:打開文件所對應的i節(jié)點,獲取從設備號 flip:打開的一個文件open()方法最重要的是調(diào)用了宏MOD_INC_USE_COUNT,這個宏主要用來使驅(qū)動程序使用計數(shù)器,避免不正確卸載程序*/ ssize_t SIMPLE_HELLO_open(struct inode * inode ,struct file * file){ ifdef OURS_HELLO_DEBUGprintk(“SIMPLE_HELLO_open[kernel]n”)。}/*write:用于向打開的文件寫數(shù)據(jù) file:是文件指針 buf:寫入數(shù)據(jù)緩存區(qū) count:求傳輸?shù)淖止?jié)數(shù) f_ops:文件當前偏移量當讀取標識符OURS_HELLO_DEBUG時,打印信息,然后返回count*/ ssize_t SIMPLE_HELLO_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){ ifdef OURS_HELLO_DEBUGprintk(“SIMPLE_HELLO_write[kernel]n”)。printk(“t %s tn”,VERSION)。NFS是指網(wǎng)絡文件系統(tǒng),它實現(xiàn)了文件在不同的系統(tǒng)間使用。掛載虛擬機的代碼為:root ifconfig eth0 up mount –o nolock :/ /mnt 實驗五是配置宿主PC機的TFTP服務。實驗二是在宿主PC端安裝虛擬機,提供了實驗需要的Linux操作系統(tǒng)。配置宿主PC機端的NFS服務,并開通此服務。學會在宿主機上安裝Linux操作系統(tǒng)——。了解宿主PC機與PXA270目標版,能正確連接宿主PC機與PXA270目標版。配置宿主PC機端的TFTP服務,并開通此服務。其中實驗一是各個硬件的互聯(lián),搭建好了實驗的硬件環(huán)境。在每次重啟宿主PC機時,都需要重新將超級終端掛載到虛擬機上,掛載之前須通過ifconfig命令查看該機的IP地址,若其已經(jīng)復位,須用命令:ifconfig eth0 up重置宿主PC機的IP地址。實驗六是配置宿主PC機端NFS服務。驅(qū)動程序代碼及注釋為: // 頭文件include include include include include include include define SIMPLE_HELLO_MAJOR 96 // 定義主設備號HELLO DEVICE MAJOR define OURS_HELLO_DEBUG // 定義標識符define VERSION “” // 定義版本號 void showversion(void)//顯示版本的函數(shù) { printk(“*************************************
點擊復制文檔內(nèi)容
外語相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1