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

正文內(nèi)容

北郵嵌入式實驗報告[五篇](參考版)

2024-10-19 20:21本頁面
  

【正文】 整個實驗讓我了解了一套完整的嵌入式系統(tǒng)驅(qū)動程序開發(fā)的全過程,學(xué)到的內(nèi)容非常豐富,相信在學(xué)習(xí)了這些內(nèi)容后,在今后的學(xué)習(xí)工作中接觸到類似內(nèi)容,我不會感到無從下手,而是能夠有條不紊。在掌握了基礎(chǔ)知識之后,上機(jī)的過程會顯得相對簡單,尤其是代碼框架已經(jīng)給出,我們所以需要做的就是根據(jù)需要稍作改動來得到我們想要的結(jié)果。但所不同的是,要根據(jù)不同的實驗要求修改名稱,并且對其中必要的部分進(jìn)行修改。通過這學(xué)期的實驗,我逐步完成了建立實驗軟件開發(fā)平臺,搭建實驗編譯軟件環(huán)境,在PC上編輯、編譯一個應(yīng)用程序,并且在嵌入式系統(tǒng)上運(yùn)行和調(diào)試它的過程。所以,打基礎(chǔ)的工作一定要仔細(xì)謹(jǐn)慎。在實驗中,我們先建立硬件實驗平臺,又建立主機(jī)軟件開發(fā)環(huán)境,接著為實驗進(jìn)行各項配置,最后完成了各個實驗中的多種功能。在每次重啟機(jī)器之后都需要將PC機(jī)終端的IP地址和開發(fā)板中的系統(tǒng)的IP地址設(shè)定正確,不然也無法掛載。ifdef OURS_DA_DEBUG六、實驗中遇到的問題及解決方法每一次上課重新啟動后,當(dāng)需要將宿主PC機(jī)的根目錄掛在到PXA270EP目標(biāo)板的mnt目錄下(即在超級終端中輸入命令“mount –o soft,timeo=100,rsize=1024 :/ /mnt”)時,常顯示無法掛載。module_exit(cleanup_DA_ctl)。MODULE_LICENSE(“GPL”)。} 補(bǔ)充代碼10 static void __exit cleanup_DA_ctl(void){endif } 補(bǔ)充代碼11 MODULE_DESCRIPTION(“DA_ctl driver module”)。if(ret)return ret。DA_ctl_ops)。{ if(ret 0)showversion()。{ else } return ret。printk(“pxa270_DA_CTL_init [kernel]n”)。補(bǔ)充代碼8 release:SIMPLE_DA_release, ioctl:SIMPLE_DA_ioctl, write:SIMPLE_DA_write, //INITstaticint __initHW_DA_CTL_init(void){ int ret =ENODEV。return 0。} 補(bǔ)充代碼6 //OPENssize_tSIMPLE_DA_open(structinode * inode ,struct file * file){ifdef OURS_DA_DEBUG printk(“SIMPLE_DA_open [kernel]n”)。long data){ ifdef OURS_DA_DEBUGprintk(“SIMPLE_DA_ioctl[kernel]n”)。ifdef OURS_DA_DEBUG return count。endifreturn count。static long ioremap_addr。} printk(“t %st n”,VERSION)。return ret。endif devfs_unregister_chrdev(ADCTL_MAJOR,“ad_ctl”)。補(bǔ)充代碼1 include include include include include include include include 補(bǔ)充代碼2 voidshowversion(void){ printk(“*****************************n”)。if(ret)}補(bǔ)充代碼9 static void __exit cleanup_AD_ctl(void){} DA驅(qū)動實驗通過本實驗的操作,我們使用示波器看到了通過DA轉(zhuǎn)換而輸出的波形。printk(“initn”)。read: ioctl: adctl_read, adctl_ioctl, write: adctl_write, open: adctl_open, release:adctl_release,ADCTL_MAJOR, 0, S_IFCHR, amp。printk(“fail %dn”,ret)。ad_ucb=ucb1x00_get()。adctl_ops)。ifdef OURS_HELLO_DEBUG int ret =ENODEV。補(bǔ)充代碼7 //INITstaticint __initHW_AD_CTL_init(void){return ret。endif return count。return count。endif return 0。endif} 補(bǔ)充代碼4 //OPENssize_tadctl_open(structinode * inode ,struct file * file){ifdef OURS_HELLO_DEBUG printk(“openn”)。} struct ucb1x00 *ad_ucb。為了更加清楚地理解 AD 轉(zhuǎn)換器的工作過程,請您再編寫一個測試程序,將 UCB_ADC_INP_AD0 換成其他通道,來觀察其他 AD 通道情況。// sleep second r=rbuf[1]=~r。printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1])。j} r = 1。buf[1]=~r。// column結(jié)果顯示作業(yè)二,豎向掃描:for(i=1。usleep(200000)。c = cwrite(fd,buf,2)。// row for(j=1。ibuf[0]=c。devfs_unregister_chrdev(SIMPLE_LED_MAJOR, “l(fā)ed_ary_ctl”)。作業(yè)一,隔行掃描:printk(“cleanup_LED_ctl [kernel]n”)。} 補(bǔ)充代碼6 static void __exit cleanup_LED_ctl(void){ifdef OURS_LED_DEBUGendif} ①要求您再編寫一個測試程序,實現(xiàn)按橫的方向隔行順序掃描 LED 點陣數(shù)碼管。printk(“SIMPLE_LED_ioctl [kernel]n”)。if(ret)return ret。printk(“pxa270_LED_CTL_init [kernel]n”)。} 補(bǔ)充代碼3 //IOCTLssize_tSIMPLE_LED_ioctl(structinode * inode ,struct file * file, unsigned intcmd, long data){endif} 補(bǔ)充代碼4 //structfile_operationsLED_ctl_ops ={ open: SIMPLE_LED_open, read:SIMPLE_LED_read, write: SIMPLE_LED_write, ioctl: SIMPLE_LED_ioctl, release:SIMPLE_LED_release, }。} 補(bǔ)充代碼2 //READssize_tSIMPLE_LED_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ ifdef OURS_LED_DEBUGendif return count。printk(“t %s tn”, VERSION)。 LED點陣驅(qū)動程序設(shè)計通過本實驗的操作,我們將 8X8 的點陣 LED 驅(qū)動起來并通過編寫測試程序,使其能夠按照您的意圖進(jìn)行顯示。sleep(1)。count// 更改顯數(shù)順序{ data[0] = buf[count]。printk(“cleanup_SERIAL_LED [kernel]n”)。sleep(1)。count)} } 結(jié)果顯示// 倒序顯示數(shù)字{ data[0] = buf[count]。由于在測試程序中定義了數(shù)組buf[10]分別存儲了09是個數(shù),因此上述功能的實現(xiàn)方法是,分別對測試程序做如下修改:原測試程序: while(1){ for(count=0。實驗作業(yè)要求在上述基礎(chǔ)上,分別實現(xiàn)一下兩個功能:①要求您再編寫一個測試程序,實現(xiàn) PXA270EP 目標(biāo)板上的 LED 數(shù)碼管循環(huán)顯示的數(shù)字90。module_exit(cleanup_SERIAL_LED)。MODULE_LICENSE(“GPL”)。} 補(bǔ)充代碼10 static void __exit cleanup_SERIAL_LED(void){ ifdef OURS_HELLO_DEBUG ifdef OURS_HELLO_DEBUGendif }補(bǔ)充代碼11 MODULE_DESCRIPTION(“serial_led driver module”)。if(ret)return ret。printk(“pxa270_SERIAL_LED_init [kernel]n”)。return ret。printk(“ pxa270 serial_led_driver register success!![kernel]n”)。showversion()。ret =devfs_register_chrdev(SERIAL_LED_MAJOR, amp。} 補(bǔ)充代碼7 //structfile_operationsSERIAL_LED_ops ={ open: SERIAL_LED_open,read: SERIAL_LED_read,write:SERIAL_LED_write,ioctl:SERIAL_LED_ioctl,release:SERIAL_LED_release, }。endif MOD_DEC_USE_COUNT。printk(“SERIAL_LED_write [kernel]n”)。return count。return 0。} MOD_INC_USE_COUNT。printk(“SERIAL_LED_read [kernel]n”)。printk(“*********************************************nn”)。補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。通過此實驗,我了解了硬件中斷管腳與中斷號的對應(yīng)關(guān)系,以及中斷號與中斷處理程序的對應(yīng)關(guān)系,對于今后編寫更為復(fù)雜的中斷程序打下基礎(chǔ)。printk(“SIMPL_INT_write [kernel]n”)。printk(“SIMPLE_INT_read [kernel]n”)。} static intSimpleINT_temp_count = 0。printk(“t %s tn”, VERSION)。在PXA270系統(tǒng)里,中斷控制器分外部設(shè)備和 PXA270X 處理器設(shè)備產(chǎn)生的兩個層次的中斷,前者是初級的中斷源,后者是次級中斷源,大量的次級中斷源通常被映射為一個初級中斷源。}// 休眠1秒ioctl(fd,LED_ON)。sleep(7)。while(1){ ioctl(fd,LED_OFF)。sleep(1)。}補(bǔ)充代碼(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, }。endifMOD_INC_USE_COUNT。endifreturn count。我們使用自己編寫的驅(qū)動程序與應(yīng)用程序控制 GPIO96的電平,通過 LED 的亮滅來判斷,是否 CPU 做出了正確的響應(yīng)。我們知道,凡是操作系統(tǒng)控制外部設(shè)備,即使是最簡單的硬件電路,也是需要驅(qū)動的。因此,看懂本實驗的源代碼,學(xué)習(xí)并模仿其編寫方法,對于后續(xù)實驗有著非常重要的意義。考慮到我們初次接觸驅(qū)動程序的編寫,對此還十分陌生,因此指導(dǎo)書中提供了本次實驗所要用到的程序源代碼。在這些實驗中,我們學(xué)習(xí)如何編寫設(shè)備驅(qū)動程序,及如何用測試程序檢驗驅(qū)動程序是否正確,并通過改寫測試程序正常地對驅(qū)動程序進(jìn)行相關(guān)操作。(8)測試該設(shè)備,編寫應(yīng)用程序,對驅(qū)動程序進(jìn)行測試。(6)實現(xiàn)中斷服務(wù),并用request_irq向內(nèi)核注冊,中斷并不是每個設(shè)備驅(qū)動所必需的。(4)設(shè)計所要實現(xiàn)的文件操作,定義file_operations結(jié)構(gòu)。(3)實現(xiàn)初始化函數(shù)。主設(shè)備號惟一標(biāo)識了設(shè)備類型,即設(shè)備驅(qū)動程序類型,它是塊設(shè)備表或字符設(shè)備表中設(shè)備表項的索引。(2)定義設(shè)備號。(1)查看原理圖,理解設(shè)備的工作原理??梢栽谟布a(chǎn)廠家或者Internet上尋找驅(qū)動程序,也可以根據(jù)相近的硬件驅(qū)動程序來改寫,這樣可以加快開發(fā)速度。除非系統(tǒng)不使用操作系統(tǒng),程序直接操縱硬件。由于嵌入式設(shè)備由于硬件種類非常豐富,在默認(rèn)的內(nèi)核發(fā)布版中不一定包括所有驅(qū)動程序。其中__ini
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1