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

正文內(nèi)容

鄺堅(jiān)_北郵嵌入式實(shí)驗(yàn)報(bào)告(留存版)

  

【正文】 _CTL_init(void){ int ret =ENODEV。ret=write(fd,data,1)。補(bǔ)充代碼9 staticint __init pxa270_SERIAL_LED_init(void){ int ret =ENODEV。printk(“SERIAL_LED_ioctl [kernel]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。return 0。(7)編譯該驅(qū)動(dòng)程序到內(nèi)核中,或者用insmod命令加載模塊。所以進(jìn)行嵌入式Linux系統(tǒng)的開發(fā),很大的工作量是為各種設(shè)備編寫驅(qū)動(dòng)程序。對(duì)硬件寄存器進(jìn)行設(shè)置。select系統(tǒng)調(diào)用在檢查與設(shè)備文件相關(guān)的文件描述符時(shí)使用select入口點(diǎn)。?close入口點(diǎn)。驅(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ò)誤。實(shí)驗(yàn)七通過用c語(yǔ)言編寫的簡(jiǎn)單程序HelloWorld,測(cè)試前面幾個(gè)實(shí)驗(yàn)是否成功配置好環(huán)境,從超級(jí)終端可以看到HelloWorld程序的運(yùn)行結(jié)果。txMsg,MAX_MSG_LEN,WAIT_FOREVER,MSG_PRI_NORMAL);三、運(yùn)行結(jié)果在shell中輸入progStart,觀察VxSim,輸入progStop結(jié)束。(poolHeadPtrnext)firstavailable = blockHeadPtrfrontBlock。(sizeof(blockHead)+256))。/*next指向第二個(gè)內(nèi)存池 */blockHeadPtrpoolId =1?!?poolpoolHeadnextfirstavailable blockHeadfrontBlockblockHeadfrontBlockblockHeadfrontBlockblockHeadpoolHeadfirstavailableblockHeadfrontBlockblockHeadfrontBlockblockHeadfrontBlockblockHead 靜態(tài)分配了含有32個(gè)16B塊的內(nèi)存池和含有16個(gè)256B塊的內(nèi)存池,如果申請(qǐng)的內(nèi)存大于256B,調(diào)用系統(tǒng)malloc。id++){} semFlush(semSynStart)。id++){char tempName[20]。initialPtr = initial()。semTake(semSynStart,WAIT_FOREVER)。/* 接收任務(wù)的MESSAGE ID */ int mData。/* progStart()啟動(dòng)實(shí)例程序*/ STATUS progStart(void){int id。semMalloc = semBCreate(SEM_Q_PRIORITY,SEM_FULL)。return(OK)。} /* timer(id)向客戶端定時(shí)發(fā)送的定時(shí)器*/ STATUS timer(int id){ ……semTake(semSynStart,WAIT_FOREVER)。/*初始化內(nèi)存池的首地址*/ poolHeadPtravailable = 32。for(i=1。/*首個(gè)可用塊地址賦給poolHeadPtrfirstavailable = blockHeadPtrfrontBlock。Timer0Timer1Timer9ClientMsgQ0ClientMsgQ1…… copy 消息隊(duì)列存儲(chǔ)的是指向消息的指針,從而實(shí)現(xiàn)了零拷貝。在配置完成后,每次重啟宿主PC機(jī)時(shí),都須先輸入命令:service xinetd restart,以啟動(dòng)TFTP服務(wù)。當(dāng)輸入程序完畢后,單擊鍵盤 Esc 鍵,然后按“:”(冒號(hào))此時(shí)左下角會(huì)出現(xiàn)冒號(hào)然后輸入“wq”最后按“Enter”確認(rèn)存盤退出 vi 編輯器,如下圖。字符型設(shè)備驅(qū)動(dòng)程序提供如下幾個(gè)入口點(diǎn):?open入口點(diǎn)。對(duì)字符設(shè)備文件進(jìn)行寫操作將調(diào)用write子程序。當(dāng)設(shè)備驅(qū)動(dòng)模塊從Linux內(nèi)核中卸載,對(duì)應(yīng)的主設(shè)備號(hào)必須被釋放。這些資源不用時(shí),應(yīng)該釋放,以利于資源的共享。(3)實(shí)現(xiàn)初始化函數(shù)。我們使用自己編寫的驅(qū)動(dòng)程序與應(yīng)用程序控制 GPIO96的電平,通過 LED 的亮滅來判斷,是否 CPU 做出了正確的響應(yīng)。在PXA270系統(tǒng)里,中斷控制器分外部設(shè)備和 PXA270X 處理器設(shè)備產(chǎn)生的兩個(gè)層次的中斷,前者是初級(jí)的中斷源,后者是次級(jí)中斷源,大量的次級(jí)中斷源通常被映射為一個(gè)初級(jí)中斷源。printk(“SERIAL_LED_read [kernel]n”)。showversion()。實(shí)驗(yàn)作業(yè)要求在上述基礎(chǔ)上,分別實(shí)現(xiàn)一下兩個(gè)功能:①要求您再編寫一個(gè)測(cè)試程序,實(shí)現(xiàn) PXA270EP 目標(biāo)板上的 LED 數(shù)碼管循環(huán)顯示的數(shù)字90。printk(“t %s tn”, VERSION)。devfs_unregister_chrdev(SIMPLE_LED_MAJOR, “l(fā)ed_ary_ctl”)。printf(“buf[0],buf[1]: [%x,%x]n”,buf[0],buf[1])。補(bǔ)充代碼7 //INITstaticint __initHW_AD_CTL_init(void){return ret。補(bǔ)充代碼1 include include include include include include include include 補(bǔ)充代碼2 voidshowversion(void){ printk(“*****************************n”)。} 補(bǔ)充代碼6 //OPENssize_tSIMPLE_DA_open(structinode * inode ,struct file * file){ifdef OURS_DA_DEBUG printk(“SIMPLE_DA_open [kernel]n”)。} 補(bǔ)充代碼10 static void __exit cleanup_DA_ctl(void){endif } 補(bǔ)充代碼11 MODULE_DESCRIPTION(“DA_ctl driver module”)。但所不同的是,要根據(jù)不同的實(shí)驗(yàn)要求修改名稱,并且對(duì)其中必要的部分進(jìn)行修改。TFTP是簡(jiǎn)單文件傳輸協(xié)議。對(duì)用戶程序而言,設(shè)備驅(qū)動(dòng)程序隱藏了設(shè)備的具體細(xì)節(jié),對(duì)各種不同設(shè)備提供了一致的接口,一般來說,是把設(shè)備映射為一個(gè)特殊的設(shè)備文件,用戶程序可以像對(duì)其他文件一樣對(duì)此設(shè)備文件進(jìn)行操作。實(shí)驗(yàn)七通過用c語(yǔ)言編寫的簡(jiǎn)單程序HelloWorld,測(cè)試前面幾個(gè)實(shí)驗(yàn)是否成功配置好環(huán)境,從超級(jí)終端可以看到HelloWorld程序的運(yùn)行結(jié)果。實(shí)驗(yàn)三是宿主PC端開發(fā)環(huán)境的安裝與配置。所以,打基礎(chǔ)的工作一定要仔細(xì)謹(jǐn)慎。DA_ctl_ops)。ifdef OURS_DA_DEBUG return count。printk(“initn”)。return count。buf[1]=~r。} 補(bǔ)充代碼6 static void __exit cleanup_LED_ctl(void){ifdef OURS_LED_DEBUGendif} ①要求您再編寫一個(gè)測(cè)試程序,實(shí)現(xiàn)按橫的方向隔行順序掃描 LED 點(diǎn)陣數(shù)碼管。sleep(1)。MODULE_LICENSE(“GPL”)。} 補(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, }。補(bǔ)充代碼1 voidshowversion(void){ printk(“*********************************************n”)。sleep(7)。因此,看懂本實(shí)驗(yàn)的源代碼,學(xué)習(xí)并模仿其編寫方法,對(duì)于后續(xù)實(shí)驗(yàn)有著非常重要的意義。(2)定義設(shè)備號(hào)。(4)注冊(cè)中斷。如果register_chrdev()操作成功,設(shè)備名就會(huì)出現(xiàn)在/proc/dvices文件中。對(duì)字符設(shè)備文件進(jìn)行讀操作將調(diào)用read子程序。其中類型和主設(shè)備號(hào)結(jié)合在一起惟一地確定了設(shè)備文件驅(qū)動(dòng)程序及其界面,而次設(shè)備號(hào)則說明目標(biāo)設(shè)備是同類設(shè)備中的第幾個(gè)。7)宿主機(jī)上打開一個(gè)終端窗口(Terminal),點(diǎn)擊【紅帽/System Tools/Terminal】啟動(dòng)終端窗口,輸入下列 4 條命令: ① cd /home②mkdir HW③ cd HW④ vi/*請(qǐng)您輸入程序 程序清單*/此時(shí)會(huì)顯示一個(gè)空白的屏幕,這條命令的含義是,使用 Vi 編輯器,我們看到的空白窗口是對(duì)文件進(jìn)行編輯的窗口,如下圖。二、實(shí)驗(yàn)設(shè)備,并且配置好ARM Linux的開發(fā)環(huán)境三、基礎(chǔ)實(shí)驗(yàn)(實(shí)驗(yàn)一~實(shí)驗(yàn)七)實(shí)驗(yàn)一~七為基礎(chǔ)實(shí)驗(yàn),目的是為后續(xù)實(shí)驗(yàn)搭建好軟、硬件環(huán)境,配置好相關(guān)的協(xié)議、服務(wù),并通過編寫最簡(jiǎn)單的HelloWorld程序進(jìn)行測(cè)試。blockHead* blockHeadPtr。blockHead* blockHeadPtr。poolHeadPtrfirstavailable = blockHeadPtr。/*分配6000B內(nèi)存作為內(nèi)存池*//*初始化pool*/ poolPtr =(pool*)mem。sprintf(tempName, “tTimer%d”, id)。} for(id = 0。id++){} /* 創(chuàng)建消息隊(duì)列 */ msgQIdServer = msgQCreate(MAX_MSGS, MAX_MSG_LEN, MSG_Q_FIFO|MSG_Q_EVENTSEND_ERR_NOTIFY)。printf(“tTimer%d send message to tClient%d!n”,id,id)。環(huán)境:VxWorks 的VxSim 仿真環(huán)境或2440(ARM920T)內(nèi)容: 必選功能: 統(tǒng)一框架,包含統(tǒng)一消息格式定義及使用規(guī)范; ; 啟動(dòng)同步功能;,最大限度降低外部碎片對(duì)系統(tǒng)可靠性的威脅。txMsgmSendId = MID_TIMER(id)。id++){ tidClient[id] = 0。return(ERROR)。for(id = 0。poolHead* poolHeadPtr。poolHeadPtravailable = 16。/* 求下一首個(gè)可用塊地(sizeof(blockHead)+16))。/*長(zhǎng)度大于16小于256時(shí),分配長(zhǎng)度為256的內(nèi)存空間*/ exhausted n”)。學(xué)習(xí)LINUX開發(fā)環(huán)境的搭建,通訊配置等。進(jìn)入RedHat 圖形界面后,打開一個(gè)終端窗(Terminal)。?應(yīng)用程序通??梢酝ㄟ^系統(tǒng)調(diào)用open()打開設(shè)備文件,建立起與目標(biāo)設(shè)備的連接。?read入口點(diǎn)。name是設(shè)備名,fops是對(duì)各個(gè)調(diào)用的入口點(diǎn)說明。在這一步驟里對(duì)設(shè)備變量中的項(xiàng)進(jìn)行初始化。實(shí)現(xiàn)一個(gè)嵌入式Linux設(shè)備驅(qū)動(dòng)的大致流程如下。 簡(jiǎn)單設(shè)備驅(qū)動(dòng)程序本次實(shí)驗(yàn)的任務(wù)是編寫一個(gè)字符型設(shè)備驅(qū)動(dòng)程序,并學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動(dòng)。sleep(1)。write:SIMPLE_INT_write, ioctl:SIMPLE_INT_ioctl, release:SIMPLE_INT_release, }。補(bǔ)充代碼6 //RELEASE/CLOSEssize_tSERIAL_LED_release(structinode *inode ,struct file * file){ ifdef OURS_HELLO_DEBUGprintk(“SERIAL_LED_release [kernel]n”)。return 0。實(shí)現(xiàn)功能②: while(1){ for(count=0。ifdef OURS_LED_DEBUG return 0。// sleep second r=rbuf[1]=~r。endif}補(bǔ)充代碼5 //RELEASE/CLOSEssize_tadctl_release(structinode *inode ,struct file * file){ifdef OURS_HELLO_DEBUG printk(“releasen”)。return 0。補(bǔ)充代碼3 //READssize_tSIMPLE_DA_read(struct file * file ,char * buf, size_t count, loff_t * f_ops){ ifdef OURS_DA_DEBUG} 補(bǔ)充代碼4 //WRITEssize_tSIMPLE_DA_write(struct file * file ,const char * buf, size_t count, loff_t * f_ops){p
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1