中文資料:vxwork bsp的制作1
發布時間:2008/8/5 0:00:00 訪問次數:649
要作的工作:
-用開始寫的驅動程序的文檔替代此文檔。
-從該設備的概要開始。指出該驅動實現整個設備的部分還是全部細節。
-描述所有該設備的操作模式,指出該驅動所實現的是哪種。
-寫出該設備在bsp中創建和初始化的步驟。寫出可把該驅動定制為特殊硬件環境的所有宏(macros)。
-寫出所有可幫助用戶理解該設備如何工作和設備的接口。
模板概要:這是一個串口驅動模板。可用來作為寫vxworks5.3或更新版本的新驅動的起點。
這些驅動支持舊串口驅動沒有的新功能,首先,它們提供一個設置硬件選項的接口;例如,停止位數,數據位,奇偶,等等。
其次,它們提供可用來提供串口線上的外部模式調試(如,rom監視器調試)的輪巡通訊(polled communication)接口。通常只支持異步模式驅動。貫穿整個文件,單詞"template"用來替換一個真實的設備名,按慣例采用廠商名的第一個字母產品編號。例如,zilog 8530 串口設備應有一個名為z8530——dusaart數據結構,好過template_dusart.數據結構設備數據結構在文件 h/drv/sio/templatesio.h里定義。一個數據結構——template_chan被定義,為每個通道。具有多串口通道的設備也為整個芯片定義了一個數據結構。例如,此驅動有一個芯片級的,有兩個通道結構作為成員數據結構叫template_dusart.回調傳輸準備就緒(transmitter ready)中斷調用服務采用回調至高層庫以獲得一個字符來傳送。
默認地,此驅動安裝不做任何事情的傀儡回調程序。使用此驅動的高層庫(例如,ttydrv)將用sio_install_callback控制命令(ioctl command)安裝自己的回調程序。
同樣,一個接受中斷處理采用回調來將字符傳給高層庫。
模式理想模式下該驅動應支持輪巡和中斷模式,并可動態切換模式。但這并非必須。
vxworks可支持此設備上的tty設備,即使該驅動只支持中斷模式。
增加動態模式切換允許當信息送至時將外部代理激活(例如,在第一楨時中斷)。
對允許動態模式切換的驅動,注意驅動將在其輸入isr中間被要求切換模式。一個驅動的輸入isr看起來應如此:inchar = *pdev->dr;/@ 從數據寄存器里讀一個字符 @/ *pdev->cr = got_it;/@ 承認中斷@/ pdev->putrcvchar (……);/@ 發送字符到高層 @/ /@ give the character to the higher layer @/如果該通道用作外部模式調試的通訊路徑,且接收的該字符是"幀結束"字符,則代理的回調會鎖定中斷,切換設備到輪巡模式,并使用輪巡模式下的設備片刻。此后代理會解鎖中斷,切換模式到中斷模式,并返回isr.特別地,回調能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回。
這要求小心處理中斷處理內的回調。例如,在調用回調前你必須先承認中斷。
用法:該驅動通常為bsp調用。該模塊里直接調用程序是 templatedevinit(),templatedevinit2(),templateintrcv(), templateinttx(), and templateinterr()。
bsp調用templatedevinit()來初始化或重啟芯片。它用intconnect()連接中斷處理(templateintrcv, templateinttx,和templateinterr)。
連接中斷處理后,bsp調用templatedevinit2()來告訴驅動中斷模式操作已可行。
bsp:按常規所有bsp特定的串口初始化在sysserial.c(被syslib.c包含)里進行,sysserial.c實現至少4個函數:sysserialhwinit(),sysserialhwinit2(),sysserialchanget(),和sysserialreset(),如下工作:sysserialhwinit被syshwinit調用來初始化串口設備。此程序將在調用能復位設備及安裝驅動函數指針的templatedevinit前初始化template_dusart結構的所有板特定的區域(如,寄存器的i/o地址,等等)。sysserialhwinit還將執行其他所有串口驅動所需要的過程,比如適當配置板上的中斷控制器。
sysserialhwinit2被syshwinit2調用來用intconnect連接驅動的中斷處理。連接好中斷處理后,templatedevinit2的調用允許中斷模式操作開始。
sysserialchanget被usrroot調用來取得與串口通道號相關的串口通道描述。該程序使用一個0-num_tty之間的一個數為單一的參數。它返回一個指向相應通道描述——sio_chan * 的指針,它正好是template_chan結構的地址。
sysserialreset被systomonitor()調用且會復位串口設備到一個不活動的狀態。
該驅動可通過重定義template_reg_read和template_reg_write宏來定制。這兩個宏用來訪問實際的芯片。如不定義,源代碼會假定用對所有寄存器的read/write訪問來對設備進行簡單內存映射。
測試:中斷驅動接口可用通常方法來測試。當它(測試信息,譯者如是猜測)來到時vxworks打印到串口控制臺,于是看到加電后vxworks輸出表示該驅動基本開始工作。
要作的工作:
-用開始寫的驅動程序的文檔替代此文檔。
-從該設備的概要開始。指出該驅動實現整個設備的部分還是全部細節。
-描述所有該設備的操作模式,指出該驅動所實現的是哪種。
-寫出該設備在bsp中創建和初始化的步驟。寫出可把該驅動定制為特殊硬件環境的所有宏(macros)。
-寫出所有可幫助用戶理解該設備如何工作和設備的接口。
模板概要:這是一個串口驅動模板。可用來作為寫vxworks5.3或更新版本的新驅動的起點。
這些驅動支持舊串口驅動沒有的新功能,首先,它們提供一個設置硬件選項的接口;例如,停止位數,數據位,奇偶,等等。
其次,它們提供可用來提供串口線上的外部模式調試(如,rom監視器調試)的輪巡通訊(polled communication)接口。通常只支持異步模式驅動。貫穿整個文件,單詞"template"用來替換一個真實的設備名,按慣例采用廠商名的第一個字母產品編號。例如,zilog 8530 串口設備應有一個名為z8530——dusaart數據結構,好過template_dusart.數據結構設備數據結構在文件 h/drv/sio/templatesio.h里定義。一個數據結構——template_chan被定義,為每個通道。具有多串口通道的設備也為整個芯片定義了一個數據結構。例如,此驅動有一個芯片級的,有兩個通道結構作為成員數據結構叫template_dusart.回調傳輸準備就緒(transmitter ready)中斷調用服務采用回調至高層庫以獲得一個字符來傳送。
默認地,此驅動安裝不做任何事情的傀儡回調程序。使用此驅動的高層庫(例如,ttydrv)將用sio_install_callback控制命令(ioctl command)安裝自己的回調程序。
同樣,一個接受中斷處理采用回調來將字符傳給高層庫。
模式理想模式下該驅動應支持輪巡和中斷模式,并可動態切換模式。但這并非必須。
vxworks可支持此設備上的tty設備,即使該驅動只支持中斷模式。
增加動態模式切換允許當信息送至時將外部代理激活(例如,在第一楨時中斷)。
對允許動態模式切換的驅動,注意驅動將在其輸入isr中間被要求切換模式。一個驅動的輸入isr看起來應如此:inchar = *pdev->dr;/@ 從數據寄存器里讀一個字符 @/ *pdev->cr = got_it;/@ 承認中斷@/ pdev->putrcvchar (……);/@ 發送字符到高層 @/ /@ give the character to the higher layer @/如果該通道用作外部模式調試的通訊路徑,且接收的該字符是"幀結束"字符,則代理的回調會鎖定中斷,切換設備到輪巡模式,并使用輪巡模式下的設備片刻。此后代理會解鎖中斷,切換模式到中斷模式,并返回isr.特別地,回調能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回。
這要求小心處理中斷處理內的回調。例如,在調用回調前你必須先承認中斷。
用法:該驅動通常為bsp調用。該模塊里直接調用程序是 templatedevinit(),templatedevinit2(),templateintrcv(), templateinttx(), and templateinterr()。
bsp調用templatedevinit()來初始化或重啟芯片。它用intconnect()連接中斷處理(templateintrcv, templateinttx,和templateinterr)。
連接中斷處理后,bsp調用templatedevinit2()來告訴驅動中斷模式操作已可行。
bsp:按常規所有bsp特定的串口初始化在sysserial.c(被syslib.c包含)里進行,sysserial.c實現至少4個函數:sysserialhwinit(),sysserialhwinit2(),sysserialchanget(),和sysserialreset(),如下工作:sysserialhwinit被syshwinit調用來初始化串口設備。此程序將在調用能復位設備及安裝驅動函數指針的templatedevinit前初始化template_dusart結構的所有板特定的區域(如,寄存器的i/o地址,等等)。sysserialhwinit還將執行其他所有串口驅動所需要的過程,比如適當配置板上的中斷控制器。
sysserialhwinit2被syshwinit2調用來用intconnect連接驅動的中斷處理。連接好中斷處理后,templatedevinit2的調用允許中斷模式操作開始。
sysserialchanget被usrroot調用來取得與串口通道號相關的串口通道描述。該程序使用一個0-num_tty之間的一個數為單一的參數。它返回一個指向相應通道描述——sio_chan * 的指針,它正好是template_chan結構的地址。
sysserialreset被systomonitor()調用且會復位串口設備到一個不活動的狀態。
該驅動可通過重定義template_reg_read和template_reg_write宏來定制。這兩個宏用來訪問實際的芯片。如不定義,源代碼會假定用對所有寄存器的read/write訪問來對設備進行簡單內存映射。
測試:中斷驅動接口可用通常方法來測試。當它(測試信息,譯者如是猜測)來到時vxworks打印到串口控制臺,于是看到加電后vxworks輸出表示該驅動基本開始工作。