www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]BM3803MG是由北京微電子技術(shù)研究所研制的、具有自主知識產(chǎn)權(quán)的SPARC V8構(gòu)架的國產(chǎn)高可靠嵌入式控制器,能夠穩(wěn)定運行VxWorks實時操作系統(tǒng),其性能高、功耗低,可應(yīng)用于航空、

BM3803MG是由北京微電子技術(shù)研究所研制的、具有自主知識產(chǎn)權(quán)的SPARC V8構(gòu)架的國產(chǎn)高可靠嵌入式控制器,能夠穩(wěn)定運行VxWorks實時操作系統(tǒng),其性能高、功耗低,可應(yīng)用于航空、航天等高可靠領(lǐng)域的32 bit抗輻射RISC芯片。本文用該款控制器以及工業(yè)級以太網(wǎng)芯片KSZ8851-16mll為某型號研制了系統(tǒng)主控板,該板采用實時操作系統(tǒng)VxWorks編程,并對主控板的板級支持包(BSP)進(jìn)行設(shè)計,從而實現(xiàn)了基于以太網(wǎng)的高可靠和實時的數(shù)據(jù)處理。本文主要介紹主控板以太網(wǎng)芯片KSZ8851-16mll的VxWorks驅(qū)動設(shè)計。

1 硬件系統(tǒng)構(gòu)成

如圖1所示,硬件系統(tǒng)由BM30803MG、FPGA、SDRAM和以太網(wǎng)控制器構(gòu)成硬件系統(tǒng)。

BM3803MG是基于SPARC V8體系結(jié)構(gòu)的32 bit處理器,可用于板上嵌入式實時計算機(jī)系統(tǒng)。BM3803MG芯片內(nèi)部包含有:整數(shù)處理單元、浮點處理單元、獨立的指令和數(shù)據(jù)Cache、硬件乘法器和除法器、中斷控制器、帶有跟蹤緩沖器的硬件調(diào)試單元、2個24 bit定時器、通用I/O接口、看門狗;能夠支持PROM、SRAM、SDRAM和I/O映射空間訪問的存儲器控制器;具有軟件可以控制的省電工作模式;具有可實現(xiàn) PCI 主機(jī)橋(Host bridge)和從屬橋(Guest bridge)功能的PCI 控制器;符合PCI2.3規(guī)范的33 MHz PCI接口;完全的三模冗余設(shè)計、 EDAC和奇偶校驗。

主要性能指標(biāo)[1]:

(1)用Dhrystone 2.1作為測試程序、CPU主頻為100 MHz時,處理能力為86 MIPS;用Whetstone作為測試程序、CPU主頻為100 MHz時,浮點處理能力為23 MFLOPS。

(2)抗輻性能:總劑量抗輻能力為100 Krad(Si), 優(yōu)于1 E-5錯誤/器件/day的SEU事件,優(yōu)于70 MeV cm2/mg的抗閂鎖能力。BM3803MG總體結(jié)構(gòu)框圖如圖2所示。

2 VxWorks BSP設(shè)計

VxWorks是美國風(fēng)河公司(現(xiàn)已被Intel收購)推出的一款高性能、可裁減的嵌入式實時操作系統(tǒng),它以其良好的可靠性和卓越的實時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中[2]。由于操作系統(tǒng)廠商不能對所有設(shè)備的處理器驅(qū)動提供支持,故需要針對不同的硬件平臺進(jìn)行相關(guān)驅(qū)動的開發(fā)。

2.1 BSP

板級支持包BSP(Board Support Package)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,它將系統(tǒng)中與硬件直接相關(guān)的一層軟件獨立出來。本設(shè)計中BSP的主要功能是屏蔽硬件、提供操作系統(tǒng)的驅(qū)動及硬件驅(qū)動。具體功能包括[3]:(1)目標(biāo)板硬件初始化。主要是CPU的初始化,為整個系統(tǒng)提供底層硬件支持;(2)為操作系統(tǒng)提供設(shè)備驅(qū)動程序和系統(tǒng)中斷服務(wù)程序;(3)定制操作系統(tǒng)的功能。為軟件系統(tǒng)提供一個實時多任務(wù)的運行環(huán)境;(4)初始化操作系統(tǒng)。為操作系統(tǒng)的正常運行做好準(zhǔn)備。

在網(wǎng)卡驅(qū)動開發(fā)之前,BSP中包括makefile、depend.bm3803、config.h、bm3803.h、romlnit.S、sysALib.S、sysLib.c、sysSeria1.c等,其中config.h中包含特定CPU板的所有包含文件和定義。

2.2 KSZ8851-16mll以太網(wǎng)控制器

KSZ8851-16mll是美國Micrel公司研制的單端口嵌入式控制芯片,它包括一個快速以太網(wǎng)的 MAC控制器、一個8/16 bit的普通主機(jī)處理器接口以及在 RXQ(12 KB)和 TXQ(6 KB)之間進(jìn)行共享的18 KB內(nèi)部緩沖存儲器,并提供了Wake-on-LAN技術(shù),可有效地解決快速以太網(wǎng)的應(yīng)用[4];支持大端(Big-Endian)和小端(Little-Endian)的處理器、多幀數(shù)據(jù)傳輸和接收、IPv4/ IPv6 checksum和32 bit CRC的生成與校驗。此外,KSZ8851-16mll還提供了強(qiáng)大的功率管理功能。

2.3 驅(qū)動程序的實現(xiàn)

2.3.1 SENS協(xié)議棧

VxWorks支持可裁減的增強(qiáng)型網(wǎng)絡(luò)堆棧SENS(Scalable Enhanced Networks Stack),提供了可替換的網(wǎng)絡(luò)設(shè)備驅(qū)動程序。SENS 的基本層次結(jié)構(gòu)與傳統(tǒng)的TCP/IP網(wǎng)絡(luò)協(xié)議棧相似,但SENS最大的特點是在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間多了MUX層。在SENS中,網(wǎng)絡(luò)接口的驅(qū)動程序即END網(wǎng)絡(luò)驅(qū)動程序處于數(shù)據(jù)鏈路層。IP層和TCP/ UDP層合稱為網(wǎng)絡(luò)協(xié)議層。在數(shù)據(jù)鏈路層和網(wǎng)絡(luò)協(xié)議層之間有應(yīng)用程序接口(API),這個接口在SENS中稱為MUX(Multiplexer)接口。MUX層直接與END 驅(qū)動程序相交互,其應(yīng)用程序提供了獨立于網(wǎng)絡(luò)協(xié)議的驅(qū)動程序接口,可以與多個獨立的END驅(qū)動程序同時交互。接口層MUX 起到了隔離網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動程序的作用,并管理協(xié)議層和數(shù)據(jù)鏈路層之間的通信,使數(shù)據(jù)的發(fā)送和接收過程變得簡單,而不需要通過掛接鉤子函數(shù)來解決[5]。

2.3.2 編程架構(gòu)

KSZ8851-16mll BIU主機(jī)接口是間接存取數(shù)據(jù)的總線接口。共享數(shù)據(jù)總線SD[15:0]由CMD控制信號來決定是地址線還是數(shù)據(jù)線。由于KSZ8851-16mll 是單端口芯片,外界與芯片只能通過單端口進(jìn)行交互。下面簡單介紹KSZ8851-16mll 的寄存器的讀寫以及數(shù)據(jù)的接收與發(fā)送過程。

(1)寄存器讀寫操作

訪問KSZ8851-16mll寄存器需要兩個步驟:①置CMD為高,寫寄存器的偏移地址和字節(jié)使能號(BEn)到共享數(shù)據(jù)總線上;②置CMD為低,讀或者寫數(shù)據(jù)到共享數(shù)據(jù)總線上。

本文網(wǎng)卡芯片采用大端模式,并且芯片的CMD管腳與主機(jī)的地址線A2相連,可以得到KSZ8851-16mll 讀寫寄存器的兩個重要操作程序:

讀寄存器:

*((volatile unsigned short*)(KS8851_IO_BASE+CMD_HIGH))=(unsigned short)(addr | ((BE1 | BE0) <<

((addr+2) & 0x02)));

*data= *((volatile unsigned short *)(KS8851_IO_BASE +

CMD_LOW ));

寫寄存器:

*((volatile unsigned short * )(KS8851_IO_BASE +

CMD_HIGH )) =(UINT16)( addr | ((BE1 | BE0) <<

((addr+2) & 0x02)));

*((volatile unsigned short *)(KS8851_IO_BASE +

CMD_LOW )) = ( UINT16 )( data );

其中,KS8851_IO_BASE表示網(wǎng)卡芯片基地址,CMD_LOW=0(CMD=0),表示共享數(shù)據(jù)總線是數(shù)據(jù)線;CMD_HIGH=4(CMD=1),表示共享數(shù)據(jù)總線是地址線。[!--empirenews.page--]

(2)數(shù)據(jù)包接收

KSZ8851-16mll軟件驅(qū)動以中斷方式接收數(shù)據(jù)包,當(dāng)操作系統(tǒng)接收到中斷時,會調(diào)用中斷向量表的中斷服務(wù)程序處理網(wǎng)卡中斷(包括對錯誤的檢查和狀態(tài)的改變),中斷服務(wù)程序把從網(wǎng)卡的接收緩存?zhèn)鬏數(shù)较到y(tǒng)緩存的所有費時工作都放在任務(wù)層里完成。KSZ8851-16mll接收包的具體流程如圖3所示。

(3)數(shù)據(jù)包發(fā)送

上層應(yīng)用程序調(diào)用KSZ8851-16mll的發(fā)送程序?qū)崿F(xiàn)通過以太網(wǎng)控制器傳送連續(xù)的數(shù)據(jù)塊,如圖4所示。數(shù)據(jù)包的發(fā)送主要是依靠KSZ8851-16mll中的發(fā)送數(shù)據(jù)緩存區(qū),軟件驅(qū)動將發(fā)送數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖區(qū)。當(dāng)網(wǎng)卡芯片檢測到處理器發(fā)來的數(shù)據(jù)發(fā)送信號后,將寫入發(fā)送緩沖區(qū)的數(shù)據(jù)包處理成Ethernet數(shù)據(jù)包的形式進(jìn)行發(fā)送。如果以太網(wǎng)控制器傳輸數(shù)據(jù)時出現(xiàn)錯誤,用戶可以決定重新發(fā)送該幀數(shù)據(jù)還是丟棄該幀數(shù)據(jù)。

2.4 END網(wǎng)絡(luò)驅(qū)動程序

網(wǎng)絡(luò)設(shè)備發(fā)送和接收數(shù)據(jù)包一般有中斷和輪詢兩種方式,本文采用中斷方式。

2.4.1 END驅(qū)動程序中的基本數(shù)據(jù)結(jié)構(gòu)

END_0BJ:END_0BJ中定義所有網(wǎng)絡(luò)相關(guān)的部分,提供一個獨立于設(shè)備的數(shù)據(jù)結(jié)構(gòu),在這個數(shù)據(jù)結(jié)構(gòu)中包含了設(shè)備名稱、設(shè)備編號、設(shè)備描述以及設(shè)備指針等與設(shè)備相關(guān)的基本信息。這些信息只是提供設(shè)備的一個描述,不包含控制信息[5]。

2.4.2 END驅(qū)動程序的函數(shù)實現(xiàn)

在END驅(qū)動程序中,需要實現(xiàn)設(shè)備的加載、卸載、控制、發(fā)送和接收、設(shè)備啟動和停止、輪詢發(fā)送和接收等功能函數(shù)。下面給出幾個重要功能函數(shù)的實現(xiàn):

(1)加載網(wǎng)絡(luò)設(shè)備函數(shù)KS8851EndLoad():是KSZ8851-

16mll驅(qū)動程序的初始化入口點。KS8851EndLoad()中執(zhí)行幾個必要操作:初始化END_OBJ結(jié)構(gòu)、初始化網(wǎng)絡(luò)緩沖內(nèi)存、初始化MIB、設(shè)置網(wǎng)絡(luò)準(zhǔn)備好標(biāo)志。

(2)啟動設(shè)備函數(shù)KS8851Start():其作用是使設(shè)備處于活動狀態(tài)和注冊中斷服務(wù)程序。函數(shù)實現(xiàn)如下:

STATUS KS8851Start(DRV_CTRL * pDrvCtrl)

{

/*驅(qū)動程序的中斷服務(wù)程序和設(shè)備中斷連接*/

intConnect((VOIDFUNCPTR *)IVEC_EXTINT0,

(VOIDFUNCPTR)ks8851EndInt, (int)pDrvCtrl);

/*打開中斷設(shè)備*/

(* ks8851IntEnable) (INUM_TO_LVL(pDrvCtrl->ilevel));

}

其中,intConnect()函數(shù)實現(xiàn)注冊驅(qū)動程序的中斷服務(wù)程序,KS8851IntEnable是對CPU與網(wǎng)卡相連的中斷進(jìn)行使能。

(3)發(fā)送數(shù)據(jù)包函數(shù)KS8851EndSend():獲得發(fā)送器的使用權(quán)、查詢發(fā)送緩沖區(qū)、啟動設(shè)備發(fā)送數(shù)據(jù)、統(tǒng)計MIB的錯誤數(shù)和釋放已經(jīng)發(fā)送的數(shù)據(jù)包[6]。當(dāng)要發(fā)送數(shù)據(jù)包時,上層應(yīng)用程序?qū)⒁l(fā)送的數(shù)據(jù)包寫入?yún)f(xié)議層的緩沖區(qū)中交由協(xié)議層進(jìn)行處理,經(jīng)協(xié)議層處理的包含了協(xié)議層附加信息的數(shù)據(jù)包將被發(fā)送給MUX層的接口函數(shù)muxSend( ),再由KS8851EndSend()函數(shù)寫入緩沖由網(wǎng)卡發(fā)送出去。

(4)接收數(shù)據(jù)包函數(shù)KS8851reveive( ):當(dāng)接收一個數(shù)據(jù)包時會觸發(fā)一個中斷,網(wǎng)卡的中斷服務(wù)程序(KS8851EndInt( ))將通過調(diào)用netJobAdd( )向任務(wù)隊列注冊一個網(wǎng)絡(luò)任務(wù),此網(wǎng)絡(luò)任務(wù)為數(shù)據(jù)包接收函數(shù)(KS8851reveive( )),負(fù)責(zé)接收數(shù)據(jù)包。KS8851reveive( )由tNettask來調(diào)用。接收到的數(shù)據(jù)包由MUX的接口函數(shù)muxReveive調(diào)用協(xié)議層的接口函數(shù)stackRcvRtn傳遞到協(xié)議層,最終數(shù)據(jù)到達(dá)應(yīng)用層的緩沖區(qū)中。應(yīng)用層程序通過read( )函數(shù)對其讀取。數(shù)據(jù)包經(jīng)過物理層到達(dá)數(shù)據(jù)鏈路層,然后通過MUX 層到達(dá)網(wǎng)絡(luò)層,再通過TCP/IP 協(xié)議層到達(dá)應(yīng)用層,即完成了數(shù)據(jù)包接收的全過程[7]。

3 向BSP中添加驅(qū)動程序

已經(jīng)編寫好的網(wǎng)卡驅(qū)動程序加入BSP中需要以下幾步:

(1)修改sysLib.c:

使能外部中斷0,并設(shè)置中斷觸發(fā)方式為邊沿觸發(fā)。

(2)在config.h中添加如下語句:

#define INCLUDE_END

#define INCLUDE_KS8851_END

(3)在configNet.h中添加新的裝載函數(shù):

END_TBL_ENTRY endDevTbl [] =

{

.....

#ifdef INCLUDE_KS_8851_END

{0,KS8851_LOAD_FUNC, KS8851_LOAD_STRING,

KS8851_BUFF_LOAN,NULL, FALSE},

#endif

.....

};

通過以上步驟,驅(qū)動程序已經(jīng)添加到BSP中,編譯后生成所需要的帶有KSZ8851-16mll驅(qū)動的VxWorks_rom鏡像文件,下載到開發(fā)板里,實現(xiàn)開發(fā)板與主機(jī)間的網(wǎng)絡(luò)通信。

4 基于ROM的VxWorks鏡像下載流程

網(wǎng)卡的驅(qū)動程序完成之后,需對驅(qū)動程序進(jìn)行測試,查出驅(qū)動程序潛在的缺陷以及驗證驅(qū)動功能是否完善。測試環(huán)境如圖5所示。

本文使用BM3803MG專用燒寫軟件燒寫VxWorks_rom鏡像的過程如下:(1)把生成VxWorks_rom鏡像轉(zhuǎn)換成存儲器鏡像VxWorks_rom.bin;(2)運行BM3803MG的專用燒寫軟件,使用Flash映像生成功能,在VxWorks_rom的工程目錄下,自動生成flash_content.bin、program_flash_in_ram.exe和program_flash_in_ram.bin。其中,flash_content.bin為待引導(dǎo)VxWorks_rom.bin的flash映像,program_flash_in_ram.exe為燒寫flash_content.bin的燒寫程序,program_flash_in_ram.bin為此燒寫程序的RAM映像;(3)將program_flash_in_ram.bin燒寫到Flash中后,即完成了VxWorks_rom鏡像下載到目標(biāo)板的任務(wù)。

BSP程序的開發(fā)與單純的應(yīng)用軟件不同,BSP程序在開發(fā)過程中會遇到很多硬件的問題,如時序匹配和信號完整性問題等。因此,在開發(fā)BSP之前,需盡量熟悉嵌入式系統(tǒng)的硬件以及硬件的初始化、寄存器訪問方式以及硬件的時序等,并完成相關(guān)的調(diào)試工作,為開發(fā)BSP打好基礎(chǔ)[5]。

本文實現(xiàn)了VxWorks下基于BM3803MG的KSZ8851以太網(wǎng)BSP,滿足了空間應(yīng)用項目的嵌入式控制系統(tǒng)的高可靠、實時數(shù)據(jù)處理的需求,為空間高可靠控制系統(tǒng)提供了一種解決方案。[!--empirenews.page--]

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉