新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 頻譜儀多種內(nèi)核通信機(jī)制的方案設(shè)計(jì)

頻譜儀多種內(nèi)核通信機(jī)制的方案設(shè)計(jì)

作者: 時(shí)間:2012-04-12 來源:網(wǎng)絡(luò) 收藏
0,0,0); TEXT-INDENT: 0px; PADDING-TOP: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">

  其中,“.owner=THIS_MODULE”表示結(jié)構(gòu)屬于本模塊,然后是open、read等各函數(shù)的對(duì)應(yīng)關(guān)系。由于初始化在hpi_init函數(shù)中實(shí)現(xiàn),所以open函數(shù)并沒有特別的操作,主要是在終端輸出信息。函數(shù)release主要是申請(qǐng)中斷資源的釋放,使用free_irq函數(shù)。下面主要講解read函數(shù),write函數(shù)與之類似,不再詳述。

  ssize_t hpi_read(struct file*file,char*buf,size_t count,loff_t*offp)

  其中,參數(shù)file是打開文件的標(biāo)識(shí)符;參數(shù)buf和count就是要向buf指向的地址存放count字節(jié)的數(shù)據(jù);參數(shù)offp是文件讀取的位置,默認(rèn)為文件頭,不用設(shè)置。

  在read函數(shù)的最開始有如下代碼:

  wait_event interruptible(hpi_wait,ev_start);

  down(sem);

  ……

  up(sem);

  其中wait_event_interruptible函數(shù)會(huì)阻塞進(jìn)程,使其進(jìn)入等待隊(duì)列。直到DSP的數(shù)據(jù)準(zhǔn)備好后,發(fā)來中斷。HPI設(shè)備注冊(cè)的中斷處理函數(shù)handler會(huì)將變量ev_start置1,同時(shí)喚醒hpi_wait等待隊(duì)列。read函數(shù)繼續(xù)執(zhí)行之后的代碼,即開始從DSP的HPID寄存器讀取數(shù)據(jù)到參數(shù)buf指向的地址。讀取完成后向DSP指定地址寫入0xffffffff,表示讀取完成。



關(guān)鍵詞: 頻譜儀 內(nèi)核通信

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉