久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

以文本方式查看主題

-  曙海教育集團論壇  (http://www.xinguifushi.cn/bbs/index.asp)
--  VxWorks BSP開發(fā)  (http://www.xinguifushi.cn/bbs/list.asp?boardid=37)
----  Vxworks bsp的制作  (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=37&id=1929)

--  作者:wangxinxin
--  發(fā)布時間:2010-12-1 9:23:21
--  Vxworks bsp的制作

用開始寫的驅(qū)動程序的文檔替代此文檔.

從該設(shè)備的概要開始.指出該驅(qū)動實現(xiàn)整個設(shè)備的部分還是全部細節(jié).

描述所有該設(shè)備的操作模式,指出該驅(qū)動所實現(xiàn)的是哪種.

寫出該設(shè)備在BSP中創(chuàng)建和初始化的步驟.寫出可把該驅(qū)動定制為特殊硬件環(huán)境的所有宏(macros).

寫出所有可幫助用戶理解該設(shè)備如何工作和設(shè)備的接口.

模板概要:

這是一個串口驅(qū)動模板.可用來作為寫Vxworks5.3或更新版本的新驅(qū)動的起點.

這些驅(qū)動支持舊串口驅(qū)動沒有的新功能,首先,它們提供一個設(shè)置硬件選項的接口;

例如,停止位數(shù),數(shù)據(jù)位,奇偶,等等.

其次,它們提供可用來提供串口線上的外部模式調(diào)試(如,ROM監(jiān)視器調(diào)試)的輪巡通訊(polled communication)接口.通常只支持異步模式驅(qū)動. 貫穿整個文件,單詞"template"用來替換一個真實的設(shè)備名,按慣例采用廠商名的第一個字母加產(chǎn)品編號.例如,Zilog 8530 串口設(shè)備應(yīng)一個名為Z8530——DUSAART

數(shù)據(jù)結(jié)構(gòu),好過TEMPLATE_DUSART.

數(shù)據(jù)結(jié)構(gòu)

設(shè)備數(shù)據(jù)結(jié)構(gòu)在文件 h/drv/sio/templateSio.h里定義。一個數(shù)據(jù)結(jié)構(gòu)——TEMPLATE_CHAN被定義,為每個通道。具有多串口通道的設(shè)備也為整個芯片定義了一個數(shù)據(jù)結(jié)構(gòu).例如,此驅(qū)動有一個芯片級的,有兩個通道結(jié)構(gòu)作為成員數(shù)據(jù)結(jié)構(gòu)叫TEMPLATE_DUSART。

回調(diào)

傳輸準(zhǔn)備就緒(transmitter ready)中斷調(diào)用服務(wù)采用回調(diào)至高層庫以獲得一個字符來傳送。 默認地,此驅(qū)動安裝不做任何事情的傀儡回調(diào)程序。使用此驅(qū)動的高層庫(例如,ttyDrv)將用SIO_INSTALL_CALLBACK控制命令(ioctl command)安裝自己的回調(diào)程序. 同樣,一個接受中斷處理采用回調(diào)來將字符傳給高層庫。

模式

理想模式下該驅(qū)動應(yīng)支持輪巡和中斷模式,并可動態(tài)切換模式。但這并非必須。Vxworks可支持此設(shè)備上的tty設(shè)備,即使該驅(qū)動只支持

中斷模式.

增加動態(tài)模式切換允許當(dāng)信息送至?xí)r將外部代理激活(例如,在第一楨時中斷). 對允許動態(tài)模式切換的驅(qū)動,注意驅(qū)動將在其輸入ISR中間被要求切換模式.一個驅(qū)動的輸入ISR看起來應(yīng)如此: inChar = *pDev->dr;/@ 從數(shù)據(jù)寄存器里讀一個字符 @/ *pDev->cr = GOT_IT;/@ 承認中斷@/ pDev->putRcvChar (...);/@ 發(fā)送字符到高層 @/ /@ give the character to the higher layer @/ 如果該通道用作外部模式調(diào)試的通訊路徑,且接收的該字符是"幀結(jié)束"字符,則代理的回調(diào)會鎖定中斷,切換設(shè)備到輪巡模式,并使用輪巡模式下的設(shè)備片刻.此后代理會解鎖中斷,切換模式到中斷模式,并返回ISR. 特別地,回調(diào)能使兩模式切換,首先到輪巡模式然后到中斷模式,后返回. 這要求小心處理中斷處理內(nèi)的回調(diào)。例如,在調(diào)用回調(diào)前你必須先承認中斷。

用法:

該驅(qū)動通常為BSP調(diào)用.該模塊里直接調(diào)用程序是 templateDevInit(), templateDevInit2(),templateIntRcv(), templateIntTx(), and templateIntErr(). BSP調(diào)用templateDevInit()來初始化或重啟芯片.它用intConnect()連接中斷處理(templateIntRcv, templateIntTx,和 templateIntErr). 連接中斷處理后,BSP調(diào)用templateDevInit2()來告訴驅(qū)動中斷模式操作已可行.

BSP: 按常規(guī)所有BSP特定的串口初始化在sysSerial.c(被sysLib.c包含)里進行, sysSerial.c實現(xiàn)至少4個函數(shù):sysSerialHwInit(),sysSerialHwInit2(), sysSerialChanGet(),和sysSerialReset(),如下工作: sysSerialHwInit被sysHwInit調(diào)用來初始化串口設(shè)備.此程序?qū)⒃谡{(diào)用能復(fù)位設(shè)備及安裝驅(qū)動函數(shù)指針的templateDevinit前初始化TEMPLATE_DUSART結(jié)構(gòu)的所有板特定的區(qū)域(如,寄存器的I/O地址,等等).sysSerialHwInit還將執(zhí)其他所有串口驅(qū)動所需要的過程,比如適當(dāng)配置板上的中斷控制器. sysSerialHwInit2被sysHwInit2調(diào)用來用intConnect連接驅(qū)動的中斷處理.連接好中斷處理后,templateDevInit2的調(diào)用允許中斷模式操作開始. sysSerialChanGet被usrRoot調(diào)用來取得與串口通道號相關(guān)的串口通描述.該程序使用一個0-NUM_TTY之間的一個數(shù)為單一的參數(shù).它返回一個指向相應(yīng)通道描述——SIO_CHAN * 的指針,它正好是TEMPLATE_CHAN結(jié)構(gòu)的地址. sysSerialReset被sysToMonitor()調(diào)用且會復(fù)位串口設(shè)備到一個不活動的狀態(tài). 該驅(qū)動可通過重定義TEMPLATE_REG_READ和TEMPLATE_REG_WRITE宏來定制.這兩個宏用來訪問實際的芯片.如不定義,源代碼會假定用對所有寄存的read/write訪問來對設(shè)備進行簡單內(nèi)存映射.

測試:

中斷驅(qū)動接口可用通常方法來測試.當(dāng)它(測試信息,譯者如是猜測)來到時Vxworks打印到串口控制臺,于是看到加電后VxWorks輸出表示該驅(qū)動基本開始工作. VxWorks的Portkit測試也可用來進行更嚴(yán)格的測試. 輪巡接口容易被檢驗——你可調(diào)用通道的SIO_MODE_SET ioctllai使它進入輪巡模式.注意通常的打印工具不能在輪巡模式下與串口通道一起工作.一些代理必須執(zhí)行輪巡循環(huán)來處理基于字符的字符輸入/輸出.這不是自動進行.當(dāng)切換WDB串口線到輪巡模式時,WDB代理執(zhí)行它自己的輪巡循環(huán). 動態(tài)模式切換可用tornado工具來檢查.重新配置代理使用WDB_COMM_UDLP_SLIP通訊路徑(詳見VxWorks run_time Guide的配置章節(jié)). 如下開始wtxtcl %wtxtcl 從tcl提示符,連接到target server: wtxtcl.ex> wtxToolAttach 通知代理來轉(zhuǎn)換外部模式檢查回應(yīng)是OK(0). wtxtcl.ex>wtxAgentModeSet 2 0 要求代理掛起系統(tǒng)(請求會以中斷模式傳到,但回應(yīng)會以輪巡模式被傳送): wtxtcl.ex>wtxContextSuspend 0 0 0 在此時目標(biāo)將被掛起.控制臺將顯示凍結(jié)(果板卡有一個控制臺設(shè)備),你不能"ping"目標(biāo)的網(wǎng)絡(luò)接口.

恢復(fù)目標(biāo):

wtxtcl.ex>wtxContextResume 0 0 0 現(xiàn)在目標(biāo)將重新運行,于是你能敲信息到控制臺(如果板卡有一個控制臺設(shè)備)并可從主機"ping"目標(biāo)的網(wǎng)絡(luò)接口.

vxworks下bsp制作教程

1 vxworks概述

vxworks是WIND RIVER公司的產(chǎn)品。作為一種商用的嵌入式操作系統(tǒng)?vxworks擁有強大的功能和友好的用戶界面。與免費的嵌入式操作系統(tǒng)相比?商用操作系統(tǒng)經(jīng)過嚴(yán)格的測試?具有良好的實時性?易用性和大量的文檔支持?但是它的源碼是不公開的并且價格昂貴;免費的嵌入式操作系統(tǒng)有很多?大都是linux的移植?公開源代碼?但缺乏文檔?要對照源碼進行開發(fā)。

2 BSP的流程

BSP流程分成兩部分。首先是位于BootRom中的Boot代碼?它的作用是實現(xiàn)配置硬件和啟動vxworks下載程序。接下來是下載后跳轉(zhuǎn)到vxworks的入口地址運行操作系統(tǒng)和應(yīng)用程序。

流程入圖:

ROM中的啟動代碼部分:RomInit在文件在文件romInit.s中。它是運行的開始?實現(xiàn)這一部分是首先的。它實現(xiàn)判斷啟動類型?配置內(nèi)核和非內(nèi)核寄存器以及內(nèi)存和外圍設(shè)備的讀寫時序?因此可以在此處加入內(nèi)存檢測功能。在BSP中無法進行調(diào)試?只能通過閃燈實現(xiàn)云信正確與否的判斷。閃燈功能函數(shù)也要在此加入。判斷啟動類型和配置寄存器?這一部分不需要改動。配置內(nèi)存和外圍設(shè)備讀寫時序?要進行改動。這一部分的SDRAM?ROM?FLASH?FPGA有相應(yīng)的模板可以參考。它的實現(xiàn)是通過使用宏定義來實現(xiàn)的。但是要改動的話也不難?一般是改動空間大小的屏蔽位?讀寫位數(shù)?以及片選寄存器OR和BR。至于特殊外設(shè)的讀寫有待討論。內(nèi)存檢測在這里實現(xiàn)較復(fù)雜?它根據(jù)相應(yīng)的內(nèi)存檢測算法實現(xiàn)。主要是對地址線和數(shù)據(jù)線的檢測。通過寫入數(shù)據(jù)再會讀出數(shù)據(jù)來判斷。使用"走步1"和"走步0"
算法。這一部分較多的依賴硬件?可移植性較差?根據(jù)自己的單板改動。閃燈在這一部分是強烈推薦的。因為閃燈才能定位程序的運行位置。閃燈函數(shù)可移植?一般要改動?因為燈可能接在不同的I/O口上。另外注意860SAR的PORT B是32位的。具體的端口見相應(yīng)的CPU的I/O口的參數(shù)?配置相應(yīng)的寄存器。

RomInit在函數(shù)結(jié)尾跳入RomStart。

RomStart在BootInt.c文件中。它是系統(tǒng)運行的第一個C函數(shù)。這一部分是Wind River公司提供的標(biāo)準(zhǔn)程序?一般不需改動。該函數(shù)是C的入口函數(shù),由匯編程序調(diào)用,主要完成清內(nèi)存,將ROM中的程序拷貝到RAM,解壓并跳至解壓后的程序處運行。UsrInit在BootConfig.c文件中。它主要是實現(xiàn)硬件的初始化。其中涉及到串口?網(wǎng)口的初始化?CONSOLE的配置等。其中串口和網(wǎng)口的配置BSP的重要部分?但860CPU對串口和王口有很好的支持?只要做很小的改動即可?串口很簡單?網(wǎng)口較復(fù)雜一些。UsrRoot在BootConfig.c文件中。它主要是實現(xiàn)vxworks文件的下載?并且跳轉(zhuǎn)到vxworks的入口地址。從而進入到操作系統(tǒng)中去。

VXWORKS文件中的代碼部分:

SysInit在sysAlib.s中。它是vxworks的啟動代碼。它與RomInit的作用相同?對于這個文件?我們一般不需要去改動它。UsrInit在Usrconfig.c中。它的作用與Boot中的UsrInit的作用相同?他們都調(diào)用SysLib.c中的子函數(shù)。實現(xiàn)相同的硬件初始化功能。UsrRoot在UsrConfig.c中。它的作用與Boot中的UsrRoot的作用類似。但是這里的UsrRoot是最終進入到應(yīng)用程序中去。


主站蜘蛛池模板: 成人午夜视频在线观看 | 日本 欧美 国产 | 亚洲综合色一区二区三区小说 | 操美女大逼视频 | 亚洲综合一区二区不卡 | 九草在线观看 | 一级毛片aaaaaa视频免费看 | 91精品国产欧美一区二区 | 日本视频在线免费看 | 免费人成在线观看视频不卡 | 久久99亚洲精品久久 | 四色永久 | 亚洲高清综合 | a级一级毛片 | 久久欧美精品欧美九久欧美 | 国产日韩三级 | 另类毛片 | 久久一区二区三区免费 | 久久久毛片免费全部播放 | 亚洲国产精品网站久久 | 欧美成人性色生活片免费在线观看 | 国产伦码精品一区二区 | 久久精品视频在线观看 | 欧美精品另类hdvideo | h亚洲| 日本一区二区三区在线 视频 | 成人免费观看视频久爱网 | 理论片日韩| 在线精品一区二区三区 | 国产成人精品综合在线观看 | 日本三级香港三级乳网址 | 国产90后美女露脸在线观看 | 欧美激情综合亚洲一二区 | 日韩高清一区二区 | 久久久一区二区三区 | 欧美高清强视频 | 香蕉久久a毛片 | 真正免费一级毛片在线播放 | 成人欧美在线 | 色多多香蕉 | 成人免费网站 |