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

正文內(nèi)容

北郵電子院嵌入式實驗報告大四上(參考版)

2024-10-23 04:10本頁面
  

【正文】 ifdef OURS_HELLO_D。在此基礎(chǔ)上,要求試寫一個實現(xiàn)輸出三角波的測試程序。endif ret=HW_AD_CTL_init()。adctl_ops, NULL)。return 0。if(ret 0){} else { } adctl_dev_handle = devfs_register(NULL, “ad_ctl”, DEVFS_FL_DEFAULT, printk(“adctl driver register success!n”)。showversion()。ret = devfs_register_chrdev(ADCTL_MAJOR, “adctl”, amp。}補(bǔ)充代碼8 staticint __init pxa270_AD_CTL_init(void){ int ret =ENODEV。} 補(bǔ)充代碼6 staticstructfile_operationsadctl_ops = {}。ifdef OURS_HELLO_DEBUG printk(“readn”)。return 0。endif}補(bǔ)充代碼5 //RELEASE/CLOSEssize_tadctl_release(structinode *inode ,struct file * file){ifdef OURS_HELLO_DEBUG printk(“releasen”)。補(bǔ)充代碼2 //READstaticssize_tadctl_read(struct file * file ,char *buf, size_t count, loff_t *offset){} 補(bǔ)充代碼3 //WRITEssize_tadctl_write(struct file * file ,const char *buf, size_t count, loff_t *offset){ifdef OURS_HELLO_DEBUG printk(“writen”)。補(bǔ)充代碼1 voidshowversion(void){ printk(“%sn”,VERSION)。// column結(jié)果顯示 AD驅(qū)動實驗通過本實驗的操作,我們將 AD 轉(zhuǎn)換器驅(qū)動起來并通過編寫測試程序,使其能夠?qū)⒛M信號量按照我們的要求轉(zhuǎn)換成數(shù)字信號量。usleep(200000)。c = cwrite(fd,buf,2)。// row for(j=1。ibuf[0]=c。// sleep second r=rbuf[1]=~r。printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1])。j} r = 1。buf[1]=~r。for(i=1。outw(0x0000,ioremap_addr)。②要求您再編寫一個測試程序,實現(xiàn)按豎的方向順序掃描 LED 點陣數(shù)碼管。ifdef OURS_LED_DEBUG return 0。ifdef OURS_LED_DEBUG return 0。endifret = HW_LED_CTL_init()。補(bǔ)充代碼5 staticint __init pxa270_LED_CTL_init(void){ int ret =ENODEV。printk(“SIMPLE_LED_read [kernel]n”)。printk(“*********************************************nn”)。要求您還編寫更多的測試程序補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。通過更改顯數(shù)的順序,很容易實現(xiàn)實驗作業(yè)里要求的功能。ret=write(fd,data,1)。實現(xiàn)功能②: while(1){ for(count=0。devfs_unregister_chrdev(SERIAL_LED_MAJOR, “serial_led”)。ret=write(fd,data,1)。count=0。②要求您再編寫一個測試程序,實現(xiàn) PXA270EP 目標(biāo)板上的 LED 數(shù)碼管循環(huán)顯示的數(shù)字02468。使用測試程序看到的測試結(jié)果是數(shù)碼管按09顯示輸出。module_init(pxa270_SERIAL_LED_init)。MODULE_AUTHOR(“l(fā)iduo”)。return 0。endifret = HW_SERIAL_LED_init()。補(bǔ)充代碼9 staticint __init pxa270_SERIAL_LED_init(void){ int ret =ENODEV。printk(“ pxa270 init_module failed with %dn [kernel]”, ret)。if(ret 0)“serial_led_ctl”,} {} else { } return ret。SERIAL_LED_ops)。補(bǔ)充代碼8 staticint __initHW_SERIAL_LED_init(void){ int ret =ENODEV。return 0。補(bǔ)充代碼6 //RELEASE/CLOSEssize_tSERIAL_LED_release(structinode *inode ,struct file * file){ ifdef OURS_HELLO_DEBUGprintk(“SERIAL_LED_release [kernel]n”)。endif write_byte(* buf)。printk(“SERIAL_LED_ioctl [kernel]n”)。printk(“SERIAL_LED_open [kernel]n”)。endif { ifdef OURS_HELLO_DEBUG} 補(bǔ)充代碼4 //IOCTLssize_tSERIAL_LED_ioctl(structinode * inode ,struct file * file, unsigned intcmd, long data){ ifdef OURS_HELLO_DEBUGendif} 補(bǔ)充代碼5 //OPENssize_tSERIAL_LED_open(structinode * inode ,struct file * file){ ifdef OURS_HELLO_DEBUGendifreturn 0。} 補(bǔ)充代碼2 //READssize_tSERIAL_LED_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ ifdef OURS_HELLO_DEBUG} 補(bǔ)充代碼3 //WRITEssize_tSERIAL_LED_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops)return count。printk(“t %s tn”, VERSION)。數(shù)碼管顯示實驗在此實驗中,我們要編寫針對 74LV164 的驅(qū)動程序,并用其串并轉(zhuǎn)換功能來控制八段LED數(shù)碼管的顯示。write:SIMPLE_INT_write, ioctl:SIMPLE_INT_ioctl, release:SIMPLE_INT_release, }。} 補(bǔ)充代碼3 //WRITEssize_tSIMPLE_INT_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){ifdef OURS_INT_DEBUG} 補(bǔ)充代碼4 //structfile_operationsINT_ctl_ops ={ open: SIMPLE_INT_open, read: SIMPLE_INT_read, endif return count。補(bǔ)充代碼2 //READssize_tSIMPLE_INT_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ifdef OURS_INT_DEBUGendif return count。printk(“*********************************************nn”)。補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。只需將上面的代碼改為如下代碼即可:在理論課中,我們學(xué)習(xí)了許多中斷方面的知識,包括中斷向量、中斷優(yōu)先級、中斷過程等。} 中斷實驗// 滅2秒 // 亮7秒 ioctl(fd,LED_ON)。sleep(2)。sleep(1)。實驗作業(yè)要求在目標(biāo)板上LED閃爍產(chǎn)生亮7秒,滅2秒的效果 在測試程序中有這樣一段代碼: while(1){ ioctl(fd,LED_OFF)。return 0。}補(bǔ)充代碼(2)//OPENssize_tSIMPLE_GPIO_LED_open(structinode * inode ,struct file * file){ ifdef OURS_GPIO_LED_DEBUG printk(“SIMPLE_GPIO_LED_open [kernel]n”)。補(bǔ)充代碼(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”)。本實驗涉及的外部硬件只有電阻和發(fā)光二極管。 CPU GPIO驅(qū)動程序設(shè)計在本實驗中,我們要編寫第一個針對實際硬件的驅(qū)動程序。雖然這樣一個字符型設(shè)備驅(qū)動程序并沒有任何實際作用,但是它讓我們輕松掌握了嵌入式驅(qū)動的編寫過程,因為復(fù)雜繁瑣的驅(qū)動,其骨架都是相同的。 簡單設(shè)備驅(qū)動程序本次實驗的任務(wù)是編寫一個字符型設(shè)備驅(qū)動程序,并學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動。五、基本接口實驗在完成了基本實驗后,我們開始著手基本接口實驗。(7)編譯該驅(qū)動程序到內(nèi)核中,或者用insmod命令加載模塊。(5)實現(xiàn)所需的文件操作調(diào)用,如read、write等。在驅(qū)動程序中實現(xiàn)驅(qū)動的注冊和卸載。次設(shè)備號僅由設(shè)備驅(qū)動程序解釋,區(qū)分被一個設(shè)備驅(qū)動控制下的某個獨立的設(shè)備。設(shè)備由一個主設(shè)備號和一個次設(shè)備號來標(biāo)識。一般嵌入式處理器的生產(chǎn)商提供參考電路,也可以根據(jù)需要自行設(shè)計。實現(xiàn)一個嵌入式Linux設(shè)備驅(qū)動的大致流程如下。嵌入式Linux系統(tǒng)驅(qū)動程序開發(fā)與普通Linux開發(fā)沒有區(qū)別。所以進(jìn)行嵌入式Linux系統(tǒng)的開發(fā),很大的工作量是為各種設(shè)備編寫驅(qū)動程序。當(dāng)驅(qū)動程序是以模塊的形式編寫時,則要按照如下方式聲明: intinit_module(void)當(dāng)運行后面介紹的insmod命令插入模塊時,會調(diào)用init_module函數(shù)完成初始化工作。若驅(qū)動程序是內(nèi)核的一部分,初始化函數(shù)則要按如下方式聲明: int __initchr_driver_init(void)。初始化部分一般還負(fù)責(zé)給設(shè)備驅(qū)動程序申請包括內(nèi)存、時鐘、I/O端口等在內(nèi)的系統(tǒng)資源,這些資源也可以在open子程序或者其他地方申請。如果設(shè)備需要IRQ支持,則要使用request_irq()函數(shù)注冊中斷。調(diào)用register_chrdev()函數(shù)來注冊設(shè)備。在這一步驟里對設(shè)備變量中的項進(jìn)行初始化。(2)初始化設(shè)備驅(qū)動相關(guān)的參數(shù)。對硬件寄存器進(jìn)行設(shè)置。包括設(shè)備注冊在內(nèi),設(shè)備驅(qū)動的初始化函數(shù)主要完成的功能是有以下5項。字符設(shè)備在cleanup_ module()函數(shù)中調(diào)用unregister_chrdev()來完成設(shè)備的注銷。當(dāng)有對此設(shè)備名的訪問時,Linux通過請求訪問的設(shè)備名得到主、次設(shè)備號,然后把此訪問分發(fā)到對應(yīng)的設(shè)備驅(qū)動,設(shè)備驅(qū)動再根據(jù)次設(shè)備號調(diào)用不同的函數(shù)。Linux在/dev目錄中為每個設(shè)備建立一個文件,用ls–l命令列出函數(shù)返回值,若小于0,則表示注冊失敗;返回0或者大于0的值表示注冊成功。如果動態(tài)分配主設(shè)備號成功,此函數(shù)將返回所分配的主設(shè)備號。name是設(shè)備名,fops是對各個調(diào)用的入口點說明。register_chrdev的定義為:intregister_chrdev(unsigned int major, const char *name, struct f
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1