中文資料:vxwork bsp的制作1
發(fā)布時(shí)間:2008/8/5 0:00:00 訪問(wèn)次數(shù):660
要作的工作:
-用開(kāi)始寫(xiě)的驅(qū)動(dòng)程序的文檔替代此文檔。
-從該設(shè)備的概要開(kāi)始。指出該驅(qū)動(dòng)實(shí)現(xiàn)整個(gè)設(shè)備的部分還是全部細(xì)節(jié)。
-描述所有該設(shè)備的操作模式,指出該驅(qū)動(dòng)所實(shí)現(xiàn)的是哪種。
-寫(xiě)出該設(shè)備在bsp中創(chuàng)建和初始化的步驟。寫(xiě)出可把該驅(qū)動(dòng)定制為特殊硬件環(huán)境的所有宏(macros)。
-寫(xiě)出所有可幫助用戶理解該設(shè)備如何工作和設(shè)備的接口。
模板概要:這是一個(gè)串口驅(qū)動(dòng)模板?捎脕(lái)作為寫(xiě)vxworks5.3或更新版本的新驅(qū)動(dòng)的起點(diǎn)。
這些驅(qū)動(dòng)支持舊串口驅(qū)動(dòng)沒(méi)有的新功能,首先,它們提供一個(gè)設(shè)置硬件選項(xiàng)的接口;例如,停止位數(shù),數(shù)據(jù)位,奇偶,等等。
其次,它們提供可用來(lái)提供串口線上的外部模式調(diào)試(如,rom監(jiān)視器調(diào)試)的輪巡通訊(polled communication)接口。通常只支持異步模式驅(qū)動(dòng)。貫穿整個(gè)文件,單詞"template"用來(lái)替換一個(gè)真實(shí)的設(shè)備名,按慣例采用廠商名的第一個(gè)字母產(chǎn)品編號(hào)。例如,zilog 8530 串口設(shè)備應(yīng)有一個(gè)名為z8530——dusaart數(shù)據(jù)結(jié)構(gòu),好過(guò)template_dusart.數(shù)據(jù)結(jié)構(gòu)設(shè)備數(shù)據(jù)結(jié)構(gòu)在文件 h/drv/sio/templatesio.h里定義。一個(gè)數(shù)據(jù)結(jié)構(gòu)——template_chan被定義,為每個(gè)通道。具有多串口通道的設(shè)備也為整個(gè)芯片定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)。例如,此驅(qū)動(dòng)有一個(gè)芯片級(jí)的,有兩個(gè)通道結(jié)構(gòu)作為成員數(shù)據(jù)結(jié)構(gòu)叫template_dusart.回調(diào)傳輸準(zhǔn)備就緒(transmitter ready)中斷調(diào)用服務(wù)采用回調(diào)至高層庫(kù)以獲得一個(gè)字符來(lái)傳送。
默認(rèn)地,此驅(qū)動(dòng)安裝不做任何事情的傀儡回調(diào)程序。使用此驅(qū)動(dòng)的高層庫(kù)(例如,ttydrv)將用sio_install_callback控制命令(ioctl command)安裝自己的回調(diào)程序。
同樣,一個(gè)接受中斷處理采用回調(diào)來(lái)將字符傳給高層庫(kù)。
模式理想模式下該驅(qū)動(dòng)應(yīng)支持輪巡和中斷模式,并可動(dòng)態(tài)切換模式。但這并非必須。
vxworks可支持此設(shè)備上的tty設(shè)備,即使該驅(qū)動(dòng)只支持中斷模式。
增加動(dòng)態(tài)模式切換允許當(dāng)信息送至?xí)r將外部代理激活(例如,在第一楨時(shí)中斷)。
對(duì)允許動(dòng)態(tài)模式切換的驅(qū)動(dòng),注意驅(qū)動(dòng)將在其輸入isr中間被要求切換模式。一個(gè)驅(qū)動(dòng)的輸入isr看起來(lái)應(yīng)如此:inchar = *pdev->dr;/@ 從數(shù)據(jù)寄存器里讀一個(gè)字符 @/ *pdev->cr = got_it;/@ 承認(rèn)中斷@/ pdev->putrcvchar (……);/@ 發(fā)送字符到高層 @/ /@ give the character to the higher layer @/如果該通道用作外部模式調(diào)試的通訊路徑,且接收的該字符是"幀結(jié)束"字符,則代理的回調(diào)會(huì)鎖定中斷,切換設(shè)備到輪巡模式,并使用輪巡模式下的設(shè)備片刻。此后代理會(huì)解鎖中斷,切換模式到中斷模式,并返回isr.特別地,回調(diào)能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回。
這要求小心處理中斷處理內(nèi)的回調(diào)。例如,在調(diào)用回調(diào)前你必須先承認(rèn)中斷。
用法:該驅(qū)動(dòng)通常為bsp調(diào)用。該模塊里直接調(diào)用程序是 templatedevinit(),templatedevinit2(),templateintrcv(), templateinttx(), and templateinterr()。
bsp調(diào)用templatedevinit()來(lái)初始化或重啟芯片。它用intconnect()連接中斷處理(templateintrcv, templateinttx,和templateinterr)。
連接中斷處理后,bsp調(diào)用templatedevinit2()來(lái)告訴驅(qū)動(dòng)中斷模式操作已可行。
bsp:按常規(guī)所有bsp特定的串口初始化在sysserial.c(被syslib.c包含)里進(jìn)行,sysserial.c實(shí)現(xiàn)至少4個(gè)函數(shù):sysserialhwinit(),sysserialhwinit2(),sysserialchanget(),和sysserialreset(),如下工作:sysserialhwinit被syshwinit調(diào)用來(lái)初始化串口設(shè)備。此程序?qū)⒃谡{(diào)用能復(fù)位設(shè)備及安裝驅(qū)動(dòng)函數(shù)指針的templatedevinit前初始化template_dusart結(jié)構(gòu)的所有板特定的區(qū)域(如,寄存器的i/o地址,等等)。sysserialhwinit還將執(zhí)行其他所有串口驅(qū)動(dòng)所需要的過(guò)程,比如適當(dāng)配置板上的中斷控制器。
sysserialhwinit2被syshwinit2調(diào)用來(lái)用intconnect連接驅(qū)動(dòng)的中斷處理。連接好中斷處理后,templatedevinit2的調(diào)用允許中斷模式操作開(kāi)始。
sysserialchanget被usrroot調(diào)用來(lái)取得與串口通道號(hào)相關(guān)的串口通道描述。該程序使用一個(gè)0-num_tty之間的一個(gè)數(shù)為單一的參數(shù)。它返回一個(gè)指向相應(yīng)通道描述——sio_chan * 的指針,它正好是template_chan結(jié)構(gòu)的地址。
sysserialreset被systomonitor()調(diào)用且會(huì)復(fù)位串口設(shè)備到一個(gè)不活動(dòng)的狀態(tài)。
該驅(qū)動(dòng)可通過(guò)重定義template_reg_read和template_reg_write宏來(lái)定制。這兩個(gè)宏用來(lái)訪問(wèn)實(shí)際的芯片。如不定義,源代碼會(huì)假定用對(duì)所有寄存器的read/write訪問(wèn)來(lái)對(duì)設(shè)備進(jìn)行簡(jiǎn)單內(nèi)存映射。
測(cè)試:中斷驅(qū)動(dòng)接口可用通常方法來(lái)測(cè)試。當(dāng)它(測(cè)試信息,譯者如是猜測(cè))來(lái)到時(shí)vxworks打印到串口控制臺(tái),于是看到加電后vxworks輸出表示該驅(qū)動(dòng)基本開(kāi)始工作。
要作的工作:
-用開(kāi)始寫(xiě)的驅(qū)動(dòng)程序的文檔替代此文檔。
-從該設(shè)備的概要開(kāi)始。指出該驅(qū)動(dòng)實(shí)現(xiàn)整個(gè)設(shè)備的部分還是全部細(xì)節(jié)。
-描述所有該設(shè)備的操作模式,指出該驅(qū)動(dòng)所實(shí)現(xiàn)的是哪種。
-寫(xiě)出該設(shè)備在bsp中創(chuàng)建和初始化的步驟。寫(xiě)出可把該驅(qū)動(dòng)定制為特殊硬件環(huán)境的所有宏(macros)。
-寫(xiě)出所有可幫助用戶理解該設(shè)備如何工作和設(shè)備的接口。
模板概要:這是一個(gè)串口驅(qū)動(dòng)模板?捎脕(lái)作為寫(xiě)vxworks5.3或更新版本的新驅(qū)動(dòng)的起點(diǎn)。
這些驅(qū)動(dòng)支持舊串口驅(qū)動(dòng)沒(méi)有的新功能,首先,它們提供一個(gè)設(shè)置硬件選項(xiàng)的接口;例如,停止位數(shù),數(shù)據(jù)位,奇偶,等等。
其次,它們提供可用來(lái)提供串口線上的外部模式調(diào)試(如,rom監(jiān)視器調(diào)試)的輪巡通訊(polled communication)接口。通常只支持異步模式驅(qū)動(dòng)。貫穿整個(gè)文件,單詞"template"用來(lái)替換一個(gè)真實(shí)的設(shè)備名,按慣例采用廠商名的第一個(gè)字母產(chǎn)品編號(hào)。例如,zilog 8530 串口設(shè)備應(yīng)有一個(gè)名為z8530——dusaart數(shù)據(jù)結(jié)構(gòu),好過(guò)template_dusart.數(shù)據(jù)結(jié)構(gòu)設(shè)備數(shù)據(jù)結(jié)構(gòu)在文件 h/drv/sio/templatesio.h里定義。一個(gè)數(shù)據(jù)結(jié)構(gòu)——template_chan被定義,為每個(gè)通道。具有多串口通道的設(shè)備也為整個(gè)芯片定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)。例如,此驅(qū)動(dòng)有一個(gè)芯片級(jí)的,有兩個(gè)通道結(jié)構(gòu)作為成員數(shù)據(jù)結(jié)構(gòu)叫template_dusart.回調(diào)傳輸準(zhǔn)備就緒(transmitter ready)中斷調(diào)用服務(wù)采用回調(diào)至高層庫(kù)以獲得一個(gè)字符來(lái)傳送。
默認(rèn)地,此驅(qū)動(dòng)安裝不做任何事情的傀儡回調(diào)程序。使用此驅(qū)動(dòng)的高層庫(kù)(例如,ttydrv)將用sio_install_callback控制命令(ioctl command)安裝自己的回調(diào)程序。
同樣,一個(gè)接受中斷處理采用回調(diào)來(lái)將字符傳給高層庫(kù)。
模式理想模式下該驅(qū)動(dòng)應(yīng)支持輪巡和中斷模式,并可動(dòng)態(tài)切換模式。但這并非必須。
vxworks可支持此設(shè)備上的tty設(shè)備,即使該驅(qū)動(dòng)只支持中斷模式。
增加動(dòng)態(tài)模式切換允許當(dāng)信息送至?xí)r將外部代理激活(例如,在第一楨時(shí)中斷)。
對(duì)允許動(dòng)態(tài)模式切換的驅(qū)動(dòng),注意驅(qū)動(dòng)將在其輸入isr中間被要求切換模式。一個(gè)驅(qū)動(dòng)的輸入isr看起來(lái)應(yīng)如此:inchar = *pdev->dr;/@ 從數(shù)據(jù)寄存器里讀一個(gè)字符 @/ *pdev->cr = got_it;/@ 承認(rèn)中斷@/ pdev->putrcvchar (……);/@ 發(fā)送字符到高層 @/ /@ give the character to the higher layer @/如果該通道用作外部模式調(diào)試的通訊路徑,且接收的該字符是"幀結(jié)束"字符,則代理的回調(diào)會(huì)鎖定中斷,切換設(shè)備到輪巡模式,并使用輪巡模式下的設(shè)備片刻。此后代理會(huì)解鎖中斷,切換模式到中斷模式,并返回isr.特別地,回調(diào)能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回。
這要求小心處理中斷處理內(nèi)的回調(diào)。例如,在調(diào)用回調(diào)前你必須先承認(rèn)中斷。
用法:該驅(qū)動(dòng)通常為bsp調(diào)用。該模塊里直接調(diào)用程序是 templatedevinit(),templatedevinit2(),templateintrcv(), templateinttx(), and templateinterr()。
bsp調(diào)用templatedevinit()來(lái)初始化或重啟芯片。它用intconnect()連接中斷處理(templateintrcv, templateinttx,和templateinterr)。
連接中斷處理后,bsp調(diào)用templatedevinit2()來(lái)告訴驅(qū)動(dòng)中斷模式操作已可行。
bsp:按常規(guī)所有bsp特定的串口初始化在sysserial.c(被syslib.c包含)里進(jìn)行,sysserial.c實(shí)現(xiàn)至少4個(gè)函數(shù):sysserialhwinit(),sysserialhwinit2(),sysserialchanget(),和sysserialreset(),如下工作:sysserialhwinit被syshwinit調(diào)用來(lái)初始化串口設(shè)備。此程序?qū)⒃谡{(diào)用能復(fù)位設(shè)備及安裝驅(qū)動(dòng)函數(shù)指針的templatedevinit前初始化template_dusart結(jié)構(gòu)的所有板特定的區(qū)域(如,寄存器的i/o地址,等等)。sysserialhwinit還將執(zhí)行其他所有串口驅(qū)動(dòng)所需要的過(guò)程,比如適當(dāng)配置板上的中斷控制器。
sysserialhwinit2被syshwinit2調(diào)用來(lái)用intconnect連接驅(qū)動(dòng)的中斷處理。連接好中斷處理后,templatedevinit2的調(diào)用允許中斷模式操作開(kāi)始。
sysserialchanget被usrroot調(diào)用來(lái)取得與串口通道號(hào)相關(guān)的串口通道描述。該程序使用一個(gè)0-num_tty之間的一個(gè)數(shù)為單一的參數(shù)。它返回一個(gè)指向相應(yīng)通道描述——sio_chan * 的指針,它正好是template_chan結(jié)構(gòu)的地址。
sysserialreset被systomonitor()調(diào)用且會(huì)復(fù)位串口設(shè)備到一個(gè)不活動(dòng)的狀態(tài)。
該驅(qū)動(dòng)可通過(guò)重定義template_reg_read和template_reg_write宏來(lái)定制。這兩個(gè)宏用來(lái)訪問(wèn)實(shí)際的芯片。如不定義,源代碼會(huì)假定用對(duì)所有寄存器的read/write訪問(wèn)來(lái)對(duì)設(shè)備進(jìn)行簡(jiǎn)單內(nèi)存映射。
測(cè)試:中斷驅(qū)動(dòng)接口可用通常方法來(lái)測(cè)試。當(dāng)它(測(cè)試信息,譯者如是猜測(cè))來(lái)到時(shí)vxworks打印到串口控制臺(tái),于是看到加電后vxworks輸出表示該驅(qū)動(dòng)基本開(kāi)始工作。
熱門(mén)點(diǎn)擊
- CPU學(xué)習(xí) (Cache Coherence
- The MathWorks推出R2008a版
- 基于uc/os-ii的嵌入式GUI研究與應(yīng)用
- u-blox的LEA-5T精確授時(shí)GPS模塊
- 英飛凌針對(duì)M2M應(yīng)用推出安全微控器系列
- 凌華科技重磅推出嵌入式計(jì)算機(jī)GEME-120
- 嵌入式uClinux下的CAN總線設(shè)備驅(qū)動(dòng)程
- Marvell推出了該公司內(nèi)部開(kāi)發(fā)的新一代C
- 全路由器掃描
- AMCC推出高級(jí)PowerPC 460SX存
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說(shuō)新車(chē)間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- MOSFET 電感單片降壓開(kāi)關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無(wú)芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究