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

正文內(nèi)容

基于s3c2440a的vxworksbsp移植筆記-資料下載頁(yè)

2025-06-23 08:33本頁(yè)面
  

【正文】 INTER_SET_SUBMSK((7))。 /* disable subInt for UART0 */ break。 case COM1: … case COM2: … default: return (NULL)。 /* 通道號(hào)錯(cuò)誤 */ } psiochan = (SIO_CHAN *)psamsungsiochanUart。 … uartInit(iChannelNum, UNUSE_INF, ucDataBits, ucStopBits, ucParity, UART_DEFAULT_BAUD, NULL)。 return (psiochan)。}輸出數(shù)據(jù)的驅(qū)動(dòng)部分包含了兩個(gè)底層的驅(qū)動(dòng)函數(shù)的編寫:一個(gè)啟動(dòng)輸出的函數(shù)xxTxStartup()、一個(gè)接受輸出中斷的ISR-xxTxInt()。輸出部分幾個(gè)函數(shù)的調(diào)用關(guān)系如圖 :圖 l xxTxStrartup()當(dāng)用戶要向設(shè)備寫數(shù)據(jù)時(shí),就調(diào)用了tyWrite。tyWrite將數(shù)據(jù)寫入到ouput ring buffer中后,調(diào)用xxTxStrartup()啟動(dòng)設(shè)備進(jìn)行一個(gè)輸出周期。s3c2440a的移植如程序清單 :程序清單 __uartStartupstatic int __uartStartup (SIO_CHAN *psiochanChan){ __PSAMSUNGSIO_CHANNEL psamsungsiochanUart = (__PSAMSUNGSIO_CHANNEL)psiochanChan。 char cTx。 switch (psamsungsiochanUartiChannelNum) { case COM0: if ((((rUFSTAT0) 8) amp。 0x3F) == 0) { /* 可以直接寫入發(fā)送 FIFO */ do { if (psamsungsiochanUartpcbGetTxChar(psamsungsiochanUartpvGetTxArg, amp。cTx) != OK) { break。 } WrUTXH0(cTx)。 /* 發(fā)送數(shù)據(jù) */ } while ((((rUFSTAT0) 8) amp。 0x3F) __COM_FIFO_MAX)。 } else { if (psamsungsiochanUartpcbGetTxChar(psamsungsiochanUartpvGetTxArg, amp。cTx) != OK) { break。 } while ((((rUFSTAT0) 8) amp。 0x3F) __COM_FIFO_MAX)。 WrUTXH0(cTx)。 /* 發(fā)送數(shù)據(jù) */ } INTER_CLR_SUBMSK(BIT_SUB_TXD0)。 /* 使能 FIFO 空中斷 */ break。 case COM1: … case COM2: … return (OK)。}l xxTxInt()當(dāng)設(shè)備輸出完畢后,設(shè)備就給cpu一個(gè)中斷表示可以接受下一個(gè)字符,然后進(jìn)入中斷xxTxInit()。: TX中斷處理 if (rSUBSRCPND amp。 BIT_SUB_TXD0) { /* 發(fā)送中斷 */ if (psamsungsiochanUartpcbGetTxChar(psamsungsiochanUartpvGetTxArg, (char *)amp。ucData) != OK) { /* 發(fā)送結(jié)束 */ INTER_SET_SUBMSK(BIT_SUB_TXD0)。 /* 發(fā)送結(jié)束 */ } else { WrUTXH0(ucData)。 /* 發(fā)送數(shù)據(jù) */ } INTER_CLR_SUBSRCPND(BIT_SUB_TXD0)。 /* 清除發(fā)送中斷 */ }輸入數(shù)據(jù)部分的驅(qū)動(dòng)只保含了一個(gè)輸入中斷ISR函數(shù)的編寫。該ISR在有數(shù)據(jù)到時(shí)候,將寄存器中的數(shù)據(jù)通過(guò)回調(diào)函數(shù)寫入到input ring buffer中。輸入部分幾個(gè)函數(shù)的調(diào)用關(guān)系如圖 :圖 : Rx中斷處理 if (rSUBSRCPND amp。 BIT_SUB_RXD0) { while (rUFSTAT0 amp。 0x3F) { /* 需要接收數(shù)據(jù) */ ucData = RdURXH0()。 psamsungsiochanUartpcbPutRcvChar(psamsungsiochanUartpvPutRcvArg, ucData)。 } INTER_CLR_SUBSRCPND(BIT_SUB_RXD0)。 }l xxIoctl( )通常的串行設(shè)備的Ioctl命令有:他們主要通過(guò)switch語(yǔ)句來(lái)實(shí)現(xiàn)對(duì)設(shè)備的操作。3. 這部分的工作僅僅要寫三個(gè)函數(shù)即可-sysSerialHwInit()、sysSerialHwInit2()、sysSerialChanGet()。下面一次對(duì)這三個(gè)函數(shù)進(jìn)行說(shuō)明:l sysSerialHwInit()此函數(shù)主要是在系統(tǒng)啟動(dòng)的時(shí)候?qū)ο到y(tǒng)中的串行設(shè)備的設(shè)備描述符進(jìn)行初始化。在初始化的過(guò)程中還要調(diào)用底層的xxDevInit()函數(shù)做底層入口函數(shù)安裝。: sysSerialHwInitvoid sysSerialHwInit (void){ int i。 for(i = 0。 i N_SIO_CHANNELS。 i++) { sioChanCreate(i)。 s3c2440aIntPriSet(devParas[i].intLevel, INT_PRI_UART_0)。 }}l sysSerialHwInit2()該函數(shù)在上面設(shè)備相關(guān)的數(shù)據(jù)結(jié)構(gòu)初始化完畢后,將設(shè)備中斷和設(shè)備的中斷服務(wù)程序(ISR)連接起來(lái)。: sysSerialHwInit2void sysSerialHwInit2 (void){ (void)intConnect(INUM_TO_IVEC(devParas[0].vector), __uartIsr, (int)(SIO_CHAN *)amp。__GsamsungsiochanUart0 )。 }l sysSerialChanGet()此函數(shù)主要是從通道號(hào)得到該通道的設(shè)備描述符。實(shí)現(xiàn)很簡(jiǎn)單。: sysSerialChanGetSIO_CHAN *sysSerialChanGet (int iChan){ if (iChan 0 || iChan = N_SIO_CHANNELS) { return (SIO_CHAN *)ERROR。 } return (sysSioChans[iChan])。}4. 對(duì)target agent的支持目標(biāo)板與主機(jī)的在線調(diào)試往往是通過(guò)串口通訊的。所以為了支持對(duì)target agent,我們有必要做一些驅(qū)動(dòng)函數(shù)。一般情況下target與主機(jī)之間通訊模式有三種:l 中斷模式(interrupt mode):支持任務(wù)級(jí)的調(diào)試。l 查詢模式(polled mode):支持系統(tǒng)級(jí)別的調(diào)試。l 雙模式(bimode):支持兩種模式之間的切換。要支持查詢模式,我們必須進(jìn)一步實(shí)現(xiàn)兩個(gè)設(shè)備的驅(qū)動(dòng)函數(shù)-xxPollInput、xxPollOutput,然后修改Ioctl()相應(yīng)的項(xiàng)。一般情況下建議支持查詢模式。5. 總結(jié)從上面的敘述里我們可以總結(jié)出完成一個(gè)串行設(shè)備的驅(qū)動(dòng)我們要做如下的一些工作:l l :sysSerialHwInit()、sysSerialHwInit2()、sysSerialChanGet()。l 編寫底層入口函數(shù)的安裝函數(shù)xxDevInit()l 編寫具體的驅(qū)動(dòng)入口函數(shù): xxCallBackInstall( )l xxPollOutput( )l xxPollInput( )l xxIoctl( )l xxTxStartup( )VxWorks中串行設(shè)備驅(qū)動(dòng)系統(tǒng)各個(gè)模塊(函數(shù)): vxWorks中串行設(shè)備驅(qū)動(dòng)個(gè)模塊的關(guān)系圖 編譯鏈接參考資料寧可累死在路上,也不能閑死在家里!寧可去碰壁,也不能面壁。是狼就要練好牙,是羊就要練好腿。什么是奮斗?奮斗就是每天很難,可一年一年卻越來(lái)越容易。不奮斗就是每天都很容易,可一年一年越來(lái)越難。能干的人,不在情緒上計(jì)較,只在做事上認(rèn)真;無(wú)能的人!不在做事上認(rèn)真,只在情緒上計(jì)較。拼一個(gè)春夏秋冬!贏一個(gè)無(wú)悔人生!早安!—————獻(xiàn)給所有努力的人.4. 學(xué)習(xí)好幫手
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1