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

正文內(nèi)容

北郵電子院嵌入式實(shí)驗(yàn)報(bào)告大四上(文件)

 

【正文】 要對(duì)相應(yīng)代碼做些修改即可。不然在掛載時(shí)會(huì)出現(xiàn)無(wú)法掛載的現(xiàn)象。學(xué)習(xí)LINUX開(kāi)發(fā)環(huán)境的搭建,通訊配置等。由于后面的實(shí)驗(yàn)都要依靠前面實(shí)驗(yàn)的配置,故本段只著重?cái)⑹鰧?shí)驗(yàn)七的具體實(shí)現(xiàn)。實(shí)驗(yàn)六為宿主PC機(jī)配置了NFS服務(wù)。實(shí)驗(yàn)七通過(guò)用c語(yǔ)言編寫的簡(jiǎn)單程序HelloWorld,測(cè)試前面幾個(gè)實(shí)驗(yàn)是否成功配置好環(huán)境,從超級(jí)終端可以看到HelloWorld程序的運(yùn)行結(jié)果。進(jìn)入RedHat 圖形界面后,打開(kāi)一個(gè)終端窗(Terminal)。就像在 Windows系統(tǒng)下面使用寫字板等一樣道理。8)在上面同一個(gè)終端窗口中,輸入下列 2 , 目標(biāo)文件,如圖 710,圖711: ①armlinuxgcc– ②ls 等到再次出現(xiàn)提示符,代表程序已經(jīng)正確編譯。驅(qū)動(dòng)程序是內(nèi)核的一部分,是操作系統(tǒng)內(nèi)核與硬件設(shè)備的直接接口,驅(qū)動(dòng)程序屏蔽了硬件的細(xì)節(jié),完成以下功能:?對(duì)設(shè)備初始化和釋放;?對(duì)設(shè)備進(jìn)行管理,包括實(shí)時(shí)參數(shù)設(shè)置,以及提供對(duì)設(shè)備的操作接口; ?讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)或者回送應(yīng)用程序請(qǐng)求的數(shù)據(jù); ?檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。?應(yīng)用程序通常可以通過(guò)系統(tǒng)調(diào)用open()打開(kāi)設(shè)備文件,建立起與目標(biāo)設(shè)備的連接。由于Linux 中將設(shè)備當(dāng)做文件處理,所以對(duì)設(shè)備進(jìn)行操作的調(diào)用格式與對(duì)文件的操作類似,主要包括open()、read()、write()、ioctl()、close()等。打開(kāi)設(shè)備準(zhǔn)備I/O操作。?close入口點(diǎn)。?read入口點(diǎn)。?write入口點(diǎn)。?ioctl入口點(diǎn)。select系統(tǒng)調(diào)用在檢查與設(shè)備文件相關(guān)的文件描述符時(shí)使用select入口點(diǎn)。name是設(shè)備名,fops是對(duì)各個(gè)調(diào)用的入口點(diǎn)說(shuō)明。Linux在/dev目錄中為每個(gè)設(shè)備建立一個(gè)文件,用ls–l命令列出函數(shù)返回值,若小于0,則表示注冊(cè)失??;返回0或者大于0的值表示注冊(cè)成功。字符設(shè)備在cleanup_ module()函數(shù)中調(diào)用unregister_chrdev()來(lái)完成設(shè)備的注銷。對(duì)硬件寄存器進(jìn)行設(shè)置。在這一步驟里對(duì)設(shè)備變量中的項(xiàng)進(jìn)行初始化。如果設(shè)備需要IRQ支持,則要使用request_irq()函數(shù)注冊(cè)中斷。若驅(qū)動(dòng)程序是內(nèi)核的一部分,初始化函數(shù)則要按如下方式聲明: int __initchr_driver_init(void)。所以進(jìn)行嵌入式Linux系統(tǒng)的開(kāi)發(fā),很大的工作量是為各種設(shè)備編寫驅(qū)動(dòng)程序。實(shí)現(xiàn)一個(gè)嵌入式Linux設(shè)備驅(qū)動(dòng)的大致流程如下。設(shè)備由一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)來(lái)標(biāo)識(shí)。在驅(qū)動(dòng)程序中實(shí)現(xiàn)驅(qū)動(dòng)的注冊(cè)和卸載。(7)編譯該驅(qū)動(dòng)程序到內(nèi)核中,或者用insmod命令加載模塊。 簡(jiǎn)單設(shè)備驅(qū)動(dòng)程序本次實(shí)驗(yàn)的任務(wù)是編寫一個(gè)字符型設(shè)備驅(qū)動(dòng)程序,并學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動(dòng)。 CPU GPIO驅(qū)動(dòng)程序設(shè)計(jì)在本實(shí)驗(yàn)中,我們要編寫第一個(gè)針對(duì)實(shí)際硬件的驅(qū)動(dòng)程序。補(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”)。return 0。sleep(1)。} 中斷實(shí)驗(yàn)// 滅2秒 // 亮7秒 ioctl(fd,LED_ON)。補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。補(bǔ)充代碼2 //READssize_tSIMPLE_INT_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ifdef OURS_INT_DEBUGendif return count。write:SIMPLE_INT_write, ioctl:SIMPLE_INT_ioctl, release:SIMPLE_INT_release, }。printk(“t %s tn”, VERSION)。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。printk(“SERIAL_LED_ioctl [kernel]n”)。補(bǔ)充代碼6 //RELEASE/CLOSEssize_tSERIAL_LED_release(structinode *inode ,struct file * file){ ifdef OURS_HELLO_DEBUGprintk(“SERIAL_LED_release [kernel]n”)。補(bǔ)充代碼8 staticint __initHW_SERIAL_LED_init(void){ int ret =ENODEV。if(ret 0)“serial_led_ctl”,} {} else { } return ret。補(bǔ)充代碼9 staticint __init pxa270_SERIAL_LED_init(void){ int ret =ENODEV。return 0。module_init(pxa270_SERIAL_LED_init)。②要求您再編寫一個(gè)測(cè)試程序,實(shí)現(xiàn) PXA270EP 目標(biāo)板上的 LED 數(shù)碼管循環(huán)顯示的數(shù)字02468。ret=write(fd,data,1)。實(shí)現(xiàn)功能②: while(1){ for(count=0。通過(guò)更改顯數(shù)的順序,很容易實(shí)現(xiàn)實(shí)驗(yàn)作業(yè)里要求的功能。printk(“*********************************************nn”)。補(bǔ)充代碼5 staticint __init pxa270_LED_CTL_init(void){ int ret =ENODEV。ifdef OURS_LED_DEBUG return 0。②要求您再編寫一個(gè)測(cè)試程序,實(shí)現(xiàn)按豎的方向順序掃描 LED 點(diǎn)陣數(shù)碼管。for(i=1。j} r = 1。// sleep second r=rbuf[1]=~r。// row for(j=1。usleep(200000)。補(bǔ)充代碼1 voidshowversion(void){ printk(“%sn”,VERSION)。endif}補(bǔ)充代碼5 //RELEASE/CLOSEssize_tadctl_release(structinode *inode ,struct file * file){ifdef OURS_HELLO_DEBUG printk(“releasen”)。ifdef OURS_HELLO_DEBUG printk(“readn”)。}補(bǔ)充代碼8 staticint __init pxa270_AD_CTL_init(void){ int ret =ENODEV。showversion()。return 0。endif ret=HW_AD_CTL_init()。ifdef OURS_HELLO_D。在此基礎(chǔ)上,要求試寫一個(gè)實(shí)現(xiàn)輸出三角波的測(cè)試程序。adctl_ops, NULL)。if(ret 0){} else { } adctl_dev_handle = devfs_register(NULL, “ad_ctl”, DEVFS_FL_DEFAULT, printk(“adctl driver register success!n”)。ret = devfs_register_chrdev(ADCTL_MAJOR, “adctl”, amp。} 補(bǔ)充代碼6 staticstructfile_operationsadctl_ops = {}。return 0。補(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”)。// column結(jié)果顯示 AD驅(qū)動(dòng)實(shí)驗(yàn)通過(guò)本實(shí)驗(yàn)的操作,我們將 AD 轉(zhuǎn)換器驅(qū)動(dòng)起來(lái)并通過(guò)編寫測(cè)試程序,使其能夠?qū)⒛M信號(hào)量按照我們的要求轉(zhuǎn)換成數(shù)字信號(hào)量。c = cwrite(fd,buf,2)。ibuf[0]=c。printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1])。buf[1]=~r。outw(0x0000,ioremap_addr)。ifdef OURS_LED_DEBUG return 0。endifret = HW_LED_CTL_init()。printk(“SIMPLE_LED_read [kernel]n”)。要求您還編寫更多的測(cè)試程序補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。ret=write(fd,data,1)。devfs_unregister_chrdev(SERIAL_LED_MAJOR, “serial_led”)。count=0。使用測(cè)試程序看到的測(cè)試結(jié)果是數(shù)碼管按09顯示輸出。MODULE_AUTHOR(“l(fā)iduo”)。endifret = HW_SERIAL_LED_init()。printk(“ pxa270 init_module failed with %dn [kernel]”, ret)。SERIAL_LED_ops)。return 0。endif write_byte(* buf)。printk(“SERIAL_LED_open [kernel]n”)。} 補(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。數(shù)碼管顯示實(shí)驗(yàn)在此實(shí)驗(yàn)中,我們要編寫針對(duì) 74LV164 的驅(qū)動(dòng)程序,并用其串并轉(zhuǎn)換功能來(lái)控制八段LED數(shù)碼管的顯示。} 補(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。printk(“*********************************************nn”)。只需將上面的代碼改為如下代碼即可:在理論課中,我們學(xué)習(xí)了許多中斷方面的知識(shí),包括中斷向量、中斷優(yōu)先級(jí)、中斷過(guò)程等。sleep(2)。實(shí)驗(yàn)作業(yè)要求在目標(biāo)板上LED閃爍產(chǎn)生亮7秒,滅2秒的效果 在測(cè)試程序中有這樣一段代碼: while(1){ ioctl(fd,LED_OFF)。}補(bǔ)充代碼(2)//OPENssize_tSIMPLE_GPIO_LED_open(structinode * inode ,struct file * file){ ifdef OURS_GPIO_LED_DEBUG printk(“SIMPL
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1