新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于BM3803MG與VxWorks的BSP的設(shè)計實(shí)現(xiàn)

基于BM3803MG與VxWorks的BSP的設(shè)計實(shí)現(xiàn)

作者: 時間:2016-02-22 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://2s4d.com/article/201602/287214.htm

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

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

    

 

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

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

  (1)用Dhrystone 2.1作為測試程序、CPU主頻為100 MHz時,處理能力為86 MIPS;用Whetstone作為測試程序、CPU主頻為100 MHz時,浮點(diǎn)處理能力為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收購)推出的一款高性能、可裁減的嵌入式實(shí)時操作系統(tǒng),它以其良好的可靠性和卓越的實(shí)時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(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)的一層軟件獨(dú)立出來。本設(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)提供一個實(shí)時多任務(wù)的運(yùn)行環(huán)境;(4)初始化操作系統(tǒng)。為操作系統(tǒng)的正常運(yùn)行做好準(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的生成與校驗(yàn)。此外,KSZ8851-16mll還提供了強(qiáng)大的功率管理功能。

  2.3 驅(qū)動程序的實(shí)現(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最大的特點(diǎn)是在數(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)用程序提供了獨(dú)立于網(wǎng)絡(luò)協(xié)議的驅(qū)動程序接口,可以與多個獨(dú)立的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ù)總線是地址線。


上一頁 1 2 下一頁

關(guān)鍵詞: BM3803MG VxWorks

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉