999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QNX操作系統(tǒng)的多主橋PCIE總線驅(qū)動(dòng)開(kāi)發(fā)

2021-10-28 10:35:50王吉平
汽車(chē)實(shí)用技術(shù) 2021年19期
關(guān)鍵詞:進(jìn)程設(shè)備系統(tǒng)

王吉平

(中車(chē)青島四方車(chē)輛研究所有限公司技術(shù)中心,山東 青島 266031)

前言

QNX軟件系統(tǒng)公司建立于1980年,是實(shí)時(shí)嵌入式操作系統(tǒng)主要提供商之一。QNX產(chǎn)品作為高可靠性的微內(nèi)核系統(tǒng),經(jīng)過(guò)了近30年的發(fā)展,已經(jīng)遍及全球100多個(gè)國(guó)家和地區(qū),成功應(yīng)用在各種嵌入式系統(tǒng)中。PCIE(PCI-Express)總線是取代PCI總線的第三代I/O技術(shù),作為處理器系統(tǒng)的局部總線,目的是連接高速外部設(shè)備,采用高速差分總線,端對(duì)端的連接方式,因此PCIE總線與PCI總線的拓?fù)浣Y(jié)構(gòu)有所不同。

1 QNX操作系統(tǒng)驅(qū)動(dòng)程序架構(gòu)

在基于QNX構(gòu)建的系統(tǒng)中,為了使裁剪的系統(tǒng)占用盡可能小的存儲(chǔ)空間,同時(shí)還具有相當(dāng)?shù)撵`活性,能夠同時(shí)處理系統(tǒng)中的各種硬件設(shè)備,因此QNX允許用戶編寫(xiě)用戶進(jìn)程作為資源管理器,管理各種設(shè)備[1]。圖1為QNX內(nèi)核和用戶進(jìn)程關(guān)系。

圖1 QNX內(nèi)核和用戶進(jìn)程關(guān)系

QNX內(nèi)核通過(guò)消息總線可以實(shí)現(xiàn)進(jìn)程管理、Flash驅(qū)動(dòng)、串口驅(qū)動(dòng)、PCI驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)和應(yīng)用程序[1]。

QNX允許設(shè)備驅(qū)動(dòng)程序單獨(dú)編譯為一個(gè)可執(zhí)行程序,并在自己的進(jìn)程空間中單獨(dú)運(yùn)行,這樣體系結(jié)構(gòu)不會(huì)因?yàn)轵?qū)動(dòng)程序故障導(dǎo)致系統(tǒng)崩潰,保證系統(tǒng)的安全性,同時(shí)也給驅(qū)動(dòng)程序的設(shè)計(jì)和調(diào)試帶來(lái)方便[2]。

QNX驅(qū)動(dòng)程序的實(shí)現(xiàn)的流程為[3]:

(1)初始化系統(tǒng):?jiǎn)?dòng)系統(tǒng),為系統(tǒng)中各設(shè)備分配資源,設(shè)置系統(tǒng)需要的接口。

(2)獲取硬件接口參數(shù):獲取系統(tǒng)為硬件分配的資源,包含終端號(hào)、內(nèi)存映射地址、I/O端口地址。

(3)設(shè)置硬件寄存器:根據(jù)硬件手冊(cè)設(shè)置寄存器值,從而控制硬件行為。

(4)實(shí)現(xiàn)接口函數(shù):驅(qū)動(dòng)程序介于硬件和上層應(yīng)用之間,同時(shí)提供硬件和應(yīng)用程序接口,從而在兩者之間建立聯(lián)系。

(5)啟動(dòng)消息循環(huán):接收應(yīng)用進(jìn)程的消息,解析消息,然后根據(jù)消息調(diào)用相應(yīng)的處理功能。

2 PCIE總線系統(tǒng)

PCIE總線采用串行連接方式,并使用數(shù)據(jù)包(Packet)進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)報(bào)文在接收和發(fā)送過(guò)程中,需要通過(guò)多個(gè)層次,包括事務(wù)層、數(shù)據(jù)鏈路層和物理層。PCIE總線的層次結(jié)構(gòu)如圖2所示。

圖2 PCIE總線層次結(jié)構(gòu)

PCIE中,數(shù)據(jù)報(bào)文首先在設(shè)備的核心層(Device Core)中產(chǎn)生,然后經(jīng)過(guò)該設(shè)備的事務(wù)層(Transaction Layer)、數(shù)據(jù)鏈路層(Data Link Layer)和物理層(Physical Layer),最終發(fā)送出去。在接收端的數(shù)據(jù)也需要經(jīng)過(guò)物理層、數(shù)據(jù)鏈路層和事務(wù)層,最終到達(dá)核心層。

在PCIE的數(shù)據(jù)鏈路層使用Switch擴(kuò)展PCIE鏈路后,PCIE鏈路能夠連接多個(gè)設(shè)備,從而擴(kuò)展整個(gè)PCIE系統(tǒng)。

PCIE總線規(guī)定訪問(wèn)PCIE設(shè)備配置空間的總線事務(wù),即配置讀寫(xiě)總線事務(wù),使用ID號(hào)進(jìn)行尋址,PCI設(shè)備的ID號(hào)是由總線號(hào)(Bus Number)、設(shè)備號(hào)(Device Number)和功能號(hào)(Function Number)組成[4]??偩€號(hào)是在主橋遍歷PCIE總線時(shí)確定,是由驅(qū)動(dòng)程序及PCIE中總線中中Switch橋的個(gè)數(shù)決定的,主橋相連的總線編號(hào)為0。設(shè)備號(hào)由PCI設(shè)備的IDSEL信號(hào)與PCI總線地址線的連接關(guān)系確定,功能號(hào)與PCI設(shè)備的具體設(shè)計(jì)相關(guān)。

3 CPU平臺(tái)

本文中使用的CPU平臺(tái)為自研的基于Freescal PowerPC P1022處理器的板卡,板載一片F(xiàn)PGA作為協(xié)處理器,兩者之間通過(guò)PCIE總線進(jìn)行通信,板載PCIE設(shè)備拓?fù)淙鐖D3所示:

圖3 板載PCIE拓?fù)浣Y(jié)構(gòu)

CPU平臺(tái)通過(guò)CPCI連接器連接PCI總線背板,從而擴(kuò)展CPU的外設(shè),PCI外設(shè)和CPU之間的通信過(guò)程為:背板PCI總線->PCI8250橋->PLX8112橋-> HOST 1->CPU。

FPGA協(xié)處理器通過(guò)PCIE總線與 HOST 3連接。

4 QNX的多主橋PCIE總線驅(qū)動(dòng)實(shí)現(xiàn)

4.1 創(chuàng)建底層硬件接口

在POWERPC P1022處理器的HOST主橋中,與PCIE設(shè)備相關(guān)的寄存器為CONFIG_ADDR和CONFIG_DATA。驅(qū)動(dòng)程序使用CONFIG_ADDR和CONFIG_DATA寄存器訪問(wèn)PCI設(shè)備的配置空間,P1022處理器中PCIE總線配置寄存器地址偏移和屬性如表1所示:

表1 寄存器地址偏移和屬性表

驅(qū)動(dòng)程序定義硬件接口結(jié)構(gòu)體pdrvr_entry_t p2020_ entry,結(jié)構(gòu)體內(nèi)容如圖4所示:

圖4 驅(qū)動(dòng)程序硬件接口結(jié)構(gòu)體

p2020_attach函數(shù)獲取系統(tǒng)分配給PCI總線的資源;p2020_detach函數(shù)作用釋放系統(tǒng)分配給PCI總線的資源;p2020_cnfg_bridge函數(shù)設(shè)置PCI主橋的地址;p2020_read_ cnfg函數(shù)通過(guò)寫(xiě)CONFIG_ADDR寄存器,然后再讀寄存器CONFIG_DATA獲取PCI設(shè)備配置空間的值;p2020_write_ cnfg函數(shù)通過(guò)寫(xiě)CONFIG_ADDR寄存器,然后再寫(xiě)寄存器CONFIG_DATA修改PCI設(shè)備配置空間的值;p2020_map_ addr函數(shù)將PCI域空間地址轉(zhuǎn)換為存儲(chǔ)器域空間地址;p2020_bus_info函數(shù)設(shè)置PCI主橋以及映射的內(nèi)存和I/O資源信息。

4.2 初始化PCI設(shè)備樹(shù)

創(chuàng)建PCI設(shè)備樹(shù)需要對(duì)整個(gè)PCI系統(tǒng)進(jìn)行遍歷,采用DFS(深度優(yōu)先搜索:Depth-First Search)算法進(jìn)行遍歷,遍歷過(guò)程的程序流程圖如圖5所示:

圖5 遍歷過(guò)程流程圖

在遍歷設(shè)備的過(guò)程中需要為樹(shù)中設(shè)備分配內(nèi)存資源和I/O資源,為PCI橋分配的內(nèi)存資源和I/O資源是橋下掛載的設(shè)備的總和。將遍歷搜索到的設(shè)備存放在設(shè)備鏈表中,定義設(shè)備鏈表的頭指針和尾指針Device* DeviceHead *Device- Tail,結(jié)構(gòu)體Device定義如圖6所示:

圖6 Device結(jié)構(gòu)體

結(jié)構(gòu)體中記錄了指向下一個(gè)設(shè)備的指針,設(shè)備所在總線號(hào)、設(shè)備的功能號(hào)、設(shè)備廠商ID、設(shè)備ID、設(shè)備類(lèi)型、設(shè)備分配的內(nèi)存基地址、I/O基地址以及指向設(shè)備所在總線信息結(jié)構(gòu)體的指針等設(shè)備重要信息。

4.3 創(chuàng)建上層應(yīng)用進(jìn)程接口

上層應(yīng)用進(jìn)程通過(guò)消息調(diào)用本驅(qū)動(dòng)程序的接口函數(shù)完成對(duì)PCI總線訪問(wèn),因此需要在驅(qū)動(dòng)程序設(shè)置的上層應(yīng)用進(jìn)程接口含義如表2所示:

表2 應(yīng)用接口函數(shù)

上層應(yīng)用進(jìn)程通過(guò)向本驅(qū)動(dòng)程序發(fā)送相應(yīng)的消息來(lái)調(diào)用接口函數(shù)去訪問(wèn)PCI總線。

4.4 創(chuàng)建消息通道

驅(qū)動(dòng)程序需要建立消息通道,以使上層應(yīng)用進(jìn)程能夠向驅(qū)動(dòng)程序發(fā)送消息[2]。首先通過(guò)dispatch_create()函數(shù)創(chuàng)建并返回一個(gè)dispatch數(shù)據(jù)結(jié)構(gòu),在這個(gè)數(shù)據(jù)結(jié)構(gòu)中包含通道的ID。初始化消息屬性結(jié)構(gòu)體resmgr_attr_t、resmgr_attr,使用函數(shù)iofunc_attr_init()函數(shù)初始化使用設(shè)備屬性,使用iofunc_ func_init()函數(shù)初始化處理消息的功能,使用resmgr_attach()函數(shù)進(jìn)行連接,建立真正的消息通道,使設(shè)備和文件能夠相連,最后使用函數(shù)dispatch_block()接收消息,dispatch_handler()函數(shù)解析消息,根據(jù)接收到的消息調(diào)用相應(yīng)的處理功能。

4.5 系統(tǒng)創(chuàng)建PCIE設(shè)備樹(shù)

在P1022中啟動(dòng)QNX系統(tǒng),運(yùn)行編譯生成的驅(qū)動(dòng)pci- p2020-vv,得到的結(jié)果如圖7所示,經(jīng)過(guò)和設(shè)計(jì)的PCI樹(shù)比較,本驅(qū)動(dòng)能夠準(zhǔn)確生成設(shè)備樹(shù),滿足驅(qū)動(dòng)程序要求。

圖7 編譯結(jié)果

5 小結(jié)

在QNX系統(tǒng)下開(kāi)發(fā)設(shè)計(jì)PCIE總線驅(qū)動(dòng)程序,能夠擴(kuò)展P1022處理器外設(shè)。PCIE驅(qū)動(dòng)程序具有良好的硬件和應(yīng)用程序接口,應(yīng)用程序通過(guò)本驅(qū)動(dòng)方便訪問(wèn)底層PCI/PCIE設(shè)備,便于對(duì)整個(gè)系統(tǒng)進(jìn)行擴(kuò)展,本驅(qū)動(dòng)程序已經(jīng)用于軌道交通的列車(chē)牽引系統(tǒng)中,效果良好。

猜你喜歡
進(jìn)程設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
原來(lái)他們都是可穿戴設(shè)備
社會(huì)進(jìn)程中的新聞學(xué)探尋
主站蜘蛛池模板: 少妇精品在线| 精品伊人久久大香线蕉网站| 欧美中文一区| 精品欧美日韩国产日漫一区不卡| 国产三级精品三级在线观看| 日本伊人色综合网| 欧美性天天| 久久久久青草线综合超碰| 国产色婷婷| 国产主播喷水| 亚洲综合精品第一页| 国产精品一区二区久久精品无码| 国产成熟女人性满足视频| 高潮毛片无遮挡高清视频播放| 九色视频线上播放| 黑色丝袜高跟国产在线91| 亚洲中久无码永久在线观看软件| 国产午夜精品一区二区三区软件| 欧美成人午夜影院| 乱码国产乱码精品精在线播放| 无码AV高清毛片中国一级毛片| 国产一在线观看| 成人国内精品久久久久影院| 免费一级毛片在线观看| 青青青国产精品国产精品美女| 54pao国产成人免费视频| 在线精品亚洲一区二区古装| 91精品啪在线观看国产91| 中文字幕欧美成人免费| 91久久天天躁狠狠躁夜夜| 欧美区日韩区| 青草91视频免费观看| 高清无码不卡视频| 欧美午夜理伦三级在线观看| 久久久精品无码一二三区| 国产一级毛片在线| 国产h视频免费观看| 婷婷亚洲天堂| 国产精品va| 日韩高清成人| 国产精品极品美女自在线看免费一区二区 | 亚洲综合九九| 亚国产欧美在线人成| 国产精品黑色丝袜的老师| 都市激情亚洲综合久久| 99在线观看免费视频| 欧美精品黑人粗大| 制服丝袜 91视频| 久久精品无码中文字幕| 在线视频亚洲欧美| 中文字幕永久视频| 亚洲看片网| 久久精品无码专区免费| 超碰色了色| 热九九精品| 欧美在线三级| 国产精品丝袜在线| 国产精品第| 久青草免费视频| 中文字幕有乳无码| 国产呦精品一区二区三区下载| 狠狠做深爱婷婷综合一区| 精品国产网| 69视频国产| 国产白丝av| 无码内射中文字幕岛国片| 五月婷婷激情四射| 日本免费a视频| 国产精品久久久久久久久| 国产一级无码不卡视频| 在线中文字幕日韩| 日本成人一区| 无套av在线| 中文字幕 欧美日韩| 婷婷综合色| 亚洲成a人片77777在线播放| 日本高清免费不卡视频| 久久综合色播五月男人的天堂| 国产成人综合在线观看| 久久亚洲日本不卡一区二区| 午夜一区二区三区| 四虎影视永久在线精品|