99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于POWERPC860T芯片和VxWorks操作系統(tǒng)實(shí)現(xiàn)以太網(wǎng)通信系統(tǒng)設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:王保華,方惠如 ? 2020-06-08 08:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過(guò)TCP/IP協(xié)議棧來(lái)實(shí)現(xiàn)數(shù)據(jù)通信,是目前大多數(shù)通信設(shè)備所必備的。在以太網(wǎng)上實(shí)現(xiàn)TCP/IP更是一種價(jià)廉物美的選擇。本文描述的正是這種通信設(shè)備一種實(shí)現(xiàn)方法。

通信控制設(shè)備大多是嵌入式系統(tǒng),求CPU功耗低、接口種類豐富。POWERPC 860T芯片是摩托羅拉公司MPC860系列通信專用嵌入式CPU的產(chǎn)品,主要特點(diǎn)是增加了1個(gè)10/100M自適應(yīng)以太網(wǎng)口,工作頻率可達(dá)80MHz,廣泛地用于中、高檔通信設(shè)備。其內(nèi)部結(jié)構(gòu)框圖如圖1所示。

從圖1中可以看出,860T芯片主要由微處理器內(nèi)核(embedded POWEPRPC core)、系統(tǒng)接口單元SIU(System Interface Unit)、通信處理器單元CPM(Communication Processor Module)和快速以太網(wǎng)模塊FEM(Fast Ethernet Module)等組成。由于860T中集成了許多外圍接口的控制器,同F(xiàn)LASH、SRAM、SDRAM等各種存儲(chǔ)器可實(shí)現(xiàn)無(wú)縫隙連接。外部通信接口一般只需添加線路接口單元。本文實(shí)現(xiàn)的系統(tǒng)硬件框圖如圖2所示。FLASH采用的是AM29LV017,SRAM為SODIMM SDRAM條。

基于POWERPC860T芯片和VxWorks操作系統(tǒng)實(shí)現(xiàn)以太網(wǎng)通信系統(tǒng)設(shè)計(jì)

CPU部分的4個(gè)SCC均可配置為10M以太網(wǎng)控制器,F(xiàn)EM為一個(gè)10/100M以太網(wǎng)自適應(yīng)控制器。通過(guò)這些以太網(wǎng)控制器,只需簡(jiǎn)單的線路接口單元就可構(gòu)成10M以太網(wǎng)口和10/100M自適應(yīng)網(wǎng)口。該以太網(wǎng)口符合IEEE802.3規(guī)范。實(shí)際使用中,860T設(shè)備多少個(gè)網(wǎng)口,應(yīng)根據(jù)芯片的運(yùn)行主頻和接口要求來(lái)統(tǒng)籌考慮。在設(shè)計(jì)時(shí),相關(guān)的性能計(jì)算可使用摩托羅拉公司推供的軟件進(jìn)行估算。我們?cè)?0 MHz MPC860T芯片上,實(shí)現(xiàn)了1個(gè)10M網(wǎng)口(采用SCC1實(shí)現(xiàn),如圖3所示)和1個(gè)10/100M自適應(yīng)網(wǎng)口(如圖4所示)。

MPC860T中I/O口引腳幾乎都有多種功能,通過(guò)對(duì)有關(guān)的寄存器進(jìn)行設(shè)置或?qū)⒛承┮_設(shè)置成指定電位,使得有關(guān)I/O口的功能為設(shè)計(jì)指定的功能。在設(shè)計(jì)時(shí),可能會(huì)發(fā)現(xiàn)某些多功能引腳要么只能處于A功能,要么處于B功能,無(wú)法使得A、B功能同時(shí)滿足。由于MPC860T的引腳多、各引腳的功能也多,為了能夠盡快地確定各引腳的功能,可利用摩托羅拉公司提供的引腳功能安排工具,檢查引腳功能上的沖突。

MPC860T是遵照POWERPC結(jié)構(gòu)體系的嵌入式芯片系列,因此可實(shí)現(xiàn)多任務(wù)操作,并支持多種內(nèi)存映射方式,完全能夠運(yùn)行實(shí)時(shí)多任務(wù)操作系統(tǒng),以便滿足通信控制設(shè)備所要求的實(shí)時(shí)性。

Wind River公司的VxWorks實(shí)時(shí)多任務(wù)嵌入式操作系統(tǒng)是大多數(shù)實(shí)時(shí)嵌入式系統(tǒng)的首選,具有其它嵌入式操作系統(tǒng)無(wú)法比擬的內(nèi)核代碼少、裁剪性強(qiáng)、實(shí)時(shí)性強(qiáng)、軟件模塊多等優(yōu)點(diǎn)。本文的多網(wǎng)口通信實(shí)現(xiàn)是在VxWorks集成環(huán)境TORNADO 2.0下開(kāi)發(fā)的。關(guān)于VxWorks實(shí)時(shí)嵌入式操作系統(tǒng)可參見(jiàn)Wind River公司的相關(guān)資料。

VxWorks支持TCP/IP協(xié)議棧,用戶程序可通過(guò)BSD套接字方式訪問(wèn)網(wǎng)絡(luò),工作方式和Windows下的BSD套接字方式基本一樣。

VxWorks的TCP/IP協(xié)議棧與網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的接口有兩種。一種是標(biāo)準(zhǔn)的BSD4驅(qū)動(dòng)程序。它將驅(qū)動(dòng)程序和協(xié)議緊密關(guān)聯(lián)在一起,不利于多協(xié)議的支持(后期BSD進(jìn)行了改進(jìn),可實(shí)現(xiàn)多協(xié)議的支持)。VxWorks不推薦使用BSD4驅(qū)動(dòng)程序。另一種標(biāo)準(zhǔn)是VxWorks專有的END(Enhanced Network Driver)驅(qū)動(dòng)程序。它通過(guò)一個(gè)稱為MUX的薄層,將驅(qū)動(dòng)程序和協(xié)議棧隔離開(kāi),達(dá)到驅(qū)動(dòng)程序獨(dú)立于具體協(xié)議的目的,從而實(shí)現(xiàn)多協(xié)議的支持。END驅(qū)動(dòng)程序技術(shù)多播和輪詢通信方式。因此,我們采用END驅(qū)動(dòng)程序方式來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序,擴(kuò)展通信功能。

VxWorks的驅(qū)動(dòng)程序既可以在啟動(dòng)時(shí)加載,也可以在系統(tǒng)啟動(dòng)后加載。不過(guò)網(wǎng)絡(luò)驅(qū)動(dòng)程序,最好是在啟動(dòng)時(shí)加載(本文采用此方式)。VxWorks啟動(dòng)時(shí),發(fā)起的tUsrRoot任務(wù)初始化網(wǎng)絡(luò)任務(wù)的JOB隊(duì)列,同時(shí)發(fā)起tNetTask任務(wù)來(lái)處理網(wǎng)絡(luò)任務(wù)中的JOB隊(duì)列,調(diào)用muxDevLoad()裝載用戶網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序。之后,通過(guò)muxDevStart()啟動(dòng)該網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序。

用戶驅(qū)動(dòng)程序的中斷例程,通過(guò)sysIntConnect()掛接在系統(tǒng)的中斷結(jié)構(gòu)上。一般在muxDevStart()中完成該工作。

驅(qū)動(dòng)程序的中斷例程,一般盡可能少地做一些將接收的數(shù)據(jù)包搬移工作,以減少中斷關(guān)閉的時(shí)間。用戶的實(shí)際中斷處理服務(wù)例程放在netJob任務(wù)中完成(中斷例程通過(guò)netJobAdd()函數(shù)將實(shí)際中斷處理服務(wù)例程加到netJob任務(wù)的隊(duì)列中)。

用戶在編寫(xiě)好驅(qū)動(dòng)程序后,應(yīng)根據(jù)要求修改板級(jí)支持軟件包(BSP)中confignet.h的內(nèi)容,以例系統(tǒng)正確加載。主要修改endTb1表。

修改config.h中的相關(guān)內(nèi)容:在默認(rèn)情況下,系統(tǒng)僅僅支持1個(gè)網(wǎng)絡(luò)接口。如果在config.h包含了#define FADS_860T,那么默認(rèn)啟動(dòng)能夠工作的是100M的網(wǎng)絡(luò)接口(motfec0);如果在config.h中沒(méi)有包含#define FADS_860T,那么默認(rèn)啟動(dòng)能夠工作的是10M的網(wǎng)絡(luò)接口(cpm0)。

操作系統(tǒng)根據(jù)啟動(dòng)參數(shù)來(lái)對(duì)網(wǎng)絡(luò)接口進(jìn)行配置,簡(jiǎn)要流程如下:

①在usrRoot()中調(diào)用usrNetworkInit()(在prjConfig.c中)。在usrNetworkInit()中調(diào)用:

*usrNetProtoInit()初始化網(wǎng)絡(luò)協(xié)議堆棧(包括BSD Socket Support、Host Table、BSD4.4Ipv4、BSD4.4UDPv4、BSD4.4TCPv4、BSD4.4ICMPv4、BSD4.4IGMPv4以及調(diào)試和show facility部分等等)。

*muxLibInit()初始化連接協(xié)議與END driver的mux層。

*usrEndLibInit()(在comps/src/net/usrEndLib.c中)支持使用mux/END接口的網(wǎng)絡(luò)設(shè)備。

*usrNetworkBoot()使用啟動(dòng)參數(shù)來(lái)初始化一個(gè)網(wǎng)絡(luò)設(shè)備。

*usrNetAppInit()初始化網(wǎng)絡(luò)應(yīng)用協(xié)議和一些server,比如RPC、rlogin、telnet server以及ftp server等等。

②在usrEndibInit()中,遍歷configNet.h內(nèi)的endDevTb1[]數(shù)組,調(diào)用muxDevLoad(…)裝載END驅(qū)動(dòng)程序,并調(diào)用muxDevStart(…)將它啟動(dòng)。

③在usrNetworkBoot()中調(diào)用:

*usrNetBoot()從命令參數(shù)行(bootline)提取網(wǎng)絡(luò)接口的IP地址、目標(biāo)名字(target name)以及單元號(hào)(unit number)。

*usrNetmaskGet()獲取接口的網(wǎng)絡(luò)掩碼。

*usrNetworkDevStart()加入并配置一個(gè)網(wǎng)絡(luò)設(shè)備(cpm或者motfec)。

④在usrNetworkDevStart()中,調(diào)用usrNetEndDevStart(…)、usrNetBsdDevStart(…)以及usrNetLoopbackStart()。以上3個(gè)函數(shù)中,使用命令參數(shù)行啟動(dòng)了1個(gè)物理網(wǎng)絡(luò)接口以及1個(gè)本地回路接口。

從以上流程來(lái)看,當(dāng)定義了FADS_860T時(shí),默認(rèn)根據(jù)命令參數(shù)行(在config.h中,有一個(gè)初始的默認(rèn)值DEFAULT_BOOT_LINE)啟動(dòng)并配置了一個(gè)motfec網(wǎng)絡(luò)接口。

支持雙網(wǎng)口時(shí)的修改:

①在config.h中加入#define INCLUDE_CPM這一行。

②在configNet.h中,于#ifndef IP_MAX_UNITS行之前加入1行:#undef IP_MAX_UNITS。在默認(rèn)情況下,由于僅僅支持motfec接口,IP_MAX_UNITS的值為1。因此,需要重新定義IP_MAX_UNITS,使其等于我們加入的mux有關(guān)的網(wǎng)絡(luò)接口的個(gè)數(shù)。

③在usrNetEndDevStart(…)中的#endif /*

CPU = =SIMNT*/行之后加入以下幾行代碼;

#ifdef FADS_860T

#ifdef INCLUDE_CPM

usrCPMEndDevStart(“cpm”,1,InInfo[0].target_name,InPnfo[0].ip_address,InInfo[0].netmask);

routeAdd(IpInfo[0].network,IpInfo[0].gateway);

#endif

#endif/*FADS_860T*/

以下是有關(guān)定義以及usrCPMEndDevStart(…)的源代碼:

struct cpmInInfo{

char *target_name; /*目標(biāo)的名稱*/

char *ip_address; /*目標(biāo)的IP地址*/

char *network; /*網(wǎng)絡(luò)*/

int netmask; /*網(wǎng)絡(luò)的掩碼*/

char *gateway; /*網(wǎng)關(guān)*/

};

struct cpmInInfo IpInfo[]= {

{NULL,NULL,NULL,0,NULL},

{NULL,NULL,NULL,0,NULL},

{NULL,NULL,NULL,0,NULL}

};

void usrCPMEndDevStart ();

void usrCPMEndDevStart (

char* pDevName, /*設(shè)備的名稱*/

int unitNum, /*單元號(hào)*/

char* pTgtName, /*目標(biāo)機(jī)名稱*/

char* pAddrString, /*網(wǎng)絡(luò)地址*/

int netmask /*網(wǎng)絡(luò)掩碼*/

{

END_OBJ* pEnd;

M2_INTERFACETBL endM2Tb1;

if(pDevName= =NULL)

return;

#ifdef INCLUDE_END

pEnd=endFindByName(pDevName,unitNum);

if(pEnd= =NULL){

printf(Could not find %s%d,pDevName,unitNum);

returm;

}

if(muxIoctl(pEnd,EIOCGMIB2,(caddr_t)endM2Tbl)= =ERROR)}

printf(Cannot perform EIOCMIB2 ioctl.);

return;

}

if(ipAttach(unitNum,pDevName)!=OK){

printf(Failed to attach to device %s,pDevName);

return;

}

if(usrNetIfConfig(pDevName,unitNum,pAddrString,pTgtName,netmask)!=OK){

printf(Failed to configure %s%d for IP.,pDevName,unitNum);

return;

}

printf(Attached TCP/IP interface to %s unit %d,

pDevName,unitNum);

#endif /*INCLUDE_END*/

return;

}

以上我們加入的設(shè)備名字由設(shè)備名和unit number組成。在加入第2個(gè)網(wǎng)絡(luò)接口之前,第1個(gè)網(wǎng)絡(luò)接口motfec0已經(jīng)可以正常工作了。由于所有的ENDDRIVER都是通過(guò)遍歷在configNet.h中的endDevTbl[]數(shù)組而啟動(dòng)的,因此第2個(gè)網(wǎng)絡(luò)接口的unit number是1。依次數(shù)推,第3個(gè)網(wǎng)絡(luò)接口的unit number是2…。我們加入的第2個(gè)網(wǎng)絡(luò)接口的名字為cpml。

在支持雙網(wǎng)口時(shí),不同的網(wǎng)口應(yīng)處在不同的網(wǎng)段上,每一個(gè)網(wǎng)口可支持多個(gè)網(wǎng)絡(luò)地址。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    52494

    瀏覽量

    440682
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    41

    文章

    5632

    瀏覽量

    175901
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7147

    瀏覽量

    125572
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    實(shí)現(xiàn)以太網(wǎng)通信硬件電路方法

    實(shí)現(xiàn)以太網(wǎng)通信硬件電路方法很多,一般情況是CPU+MAC+PHY+網(wǎng)絡(luò)變壓器+RJ45。整個(gè)硬件電路最多用5個(gè)電子器件完成。
    發(fā)表于 10-20 09:25 ?1206次閱讀
    <b class='flag-5'>實(shí)現(xiàn)以太網(wǎng)通信</b>硬件電路方法

    怎樣實(shí)現(xiàn)以太網(wǎng)通訊?

    用LabVIEW實(shí)現(xiàn)以太網(wǎng)通訊需要設(shè)置哪些參數(shù)?怎樣實(shí)現(xiàn)通訊?
    發(fā)表于 12-14 19:31

    請(qǐng)問(wèn)UDP SOCKET要用操作系統(tǒng)才可以實(shí)現(xiàn)以太網(wǎng)通信嗎?

    公司一個(gè)項(xiàng)目要用UDP SOCKET實(shí)現(xiàn)以太網(wǎng)通信,能不用操作系統(tǒng)嗎,如果不用的話這句又怎么破:#if ((LWIP_SOCKET||LWIP_NETCONN)&&(NO_SYS==1))#error"…" #endif
    發(fā)表于 03-26 04:36

    怎么實(shí)現(xiàn)以太網(wǎng)的光無(wú)線通信系統(tǒng)的設(shè)計(jì)?

    怎么實(shí)現(xiàn)以太網(wǎng)的光無(wú)線通信系統(tǒng)的設(shè)計(jì)?
    發(fā)表于 05-28 07:08

    實(shí)時(shí)操作系統(tǒng)VxWorks下的并口通信技術(shù)

    實(shí)時(shí)操作系統(tǒng)VxWorks下的并口通信技術(shù)
    發(fā)表于 03-29 12:26 ?11次下載

    嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks中串口通信實(shí)現(xiàn)

    嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks中串口通信實(shí)現(xiàn)
    發(fā)表于 03-29 12:27 ?19次下載

    POWERPC 860T 實(shí)現(xiàn)以太網(wǎng)通信

    摩托羅拉公司的POWER PC 系列芯片是眾多嵌入式高端通信設(shè)備的首選。該系列芯片配合主流的實(shí)時(shí)多任務(wù)操作系統(tǒng)VxWorks,可滿足大多數(shù)高
    發(fā)表于 05-14 14:45 ?10次下載

    用51單片機(jī)控制RTL8029實(shí)現(xiàn)以太網(wǎng)通信

    摘要:本文介紹了TCP/IP協(xié)議、RTL8029的結(jié)構(gòu)特性以及PCI總線協(xié)議的特點(diǎn),給出了一種用P89C51RD2單片機(jī)控制以太網(wǎng)接口芯片RTL80內(nèi)實(shí)現(xiàn)以太網(wǎng)通信的設(shè)計(jì)方案,闡述了用EMP7128型CPLD
    發(fā)表于 09-19 21:11 ?58次下載

    基于MPC8260和VxWorks實(shí)現(xiàn)快速以太網(wǎng)通信

    摩托羅拉MPC8260 微處理器芯片因其強(qiáng)大的通信處理能力和多種協(xié)議的支持而被廣泛應(yīng)用于通信和網(wǎng)絡(luò)領(lǐng)域。本文以MPC8260 為例,探討在嵌入式系統(tǒng)
    發(fā)表于 10-08 16:05 ?32次下載

    VxWorks以太網(wǎng)通信報(bào)文的粘連問(wèn)題

    VxWorks以太網(wǎng)通信報(bào)文的粘連問(wèn)題   VxWorks是美國(guó)Wind River公司推出的一款專門(mén)為實(shí)時(shí)系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的操作系統(tǒng)內(nèi)核,
    發(fā)表于 03-29 15:14 ?1041次閱讀
    <b class='flag-5'>VxWorks</b>中<b class='flag-5'>以太網(wǎng)通信</b>報(bào)文的粘連問(wèn)題

    單片機(jī)實(shí)現(xiàn)以太網(wǎng)通訊硬件設(shè)計(jì)

    介紹以太網(wǎng)的幀協(xié)議和以太網(wǎng)控制芯片RTL8019AS的結(jié)構(gòu)特性;介紹單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊的硬件設(shè)計(jì)方案;采用c51語(yǔ)言實(shí)現(xiàn)
    發(fā)表于 08-29 16:32 ?126次下載
    單片機(jī)<b class='flag-5'>實(shí)現(xiàn)以太網(wǎng)通</b>訊硬件設(shè)計(jì)

    W5100在單片機(jī)實(shí)現(xiàn)以太網(wǎng)通信中的應(yīng)用

    在此介紹了一種基于單片機(jī)和W5100組合實(shí)現(xiàn)以太網(wǎng)通信的設(shè)計(jì)方法。采用以TCPdP協(xié)議為基礎(chǔ)的網(wǎng)絡(luò)解決方案。W5100是嵌入式以太網(wǎng)硬件協(xié)議棧芯片,它同時(shí)集TCP/IP協(xié)議棧、以太網(wǎng)M
    發(fā)表于 04-24 15:13 ?153次下載
    W5100在單片機(jī)<b class='flag-5'>實(shí)現(xiàn)以太網(wǎng)通信</b>中的應(yīng)用

    基于VxWorks操作系統(tǒng)下光纖通道通信軟件的實(shí)現(xiàn)

    基于VxWorks操作系統(tǒng)下光纖通道通信軟件的實(shí)現(xiàn)
    發(fā)表于 08-31 17:08 ?4次下載
    基于<b class='flag-5'>VxWorks</b><b class='flag-5'>操作系統(tǒng)</b>下光纖通道<b class='flag-5'>通信</b>軟件的<b class='flag-5'>實(shí)現(xiàn)</b>

    如何使用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通

    介紹以太網(wǎng)的幀協(xié)議和以太網(wǎng)控制芯片RTL8019AS的結(jié)構(gòu)特性;介紹51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊的硬件設(shè)計(jì)方案;采用C51語(yǔ)言實(shí)現(xiàn)
    發(fā)表于 07-19 17:37 ?12次下載
    如何使用51單片機(jī)控制RTL8019AS<b class='flag-5'>實(shí)現(xiàn)以太網(wǎng)通</b>訊

    基于VxWorks操作系統(tǒng)實(shí)現(xiàn)控制應(yīng)用的復(fù)合通信模式設(shè)計(jì)

    在嵌入式系統(tǒng)VxWorks實(shí)時(shí)操作系統(tǒng)應(yīng)用愈加廣泛的背景下,結(jié)合嵌入式系統(tǒng)對(duì)于各類實(shí)時(shí)通信方式的不同需要,提出基于控制應(yīng)用的復(fù)合
    的頭像 發(fā)表于 10-09 09:54 ?2598次閱讀
    基于<b class='flag-5'>VxWorks</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>實(shí)現(xiàn)</b>控制應(yīng)用的復(fù)合<b class='flag-5'>通信</b>模式設(shè)計(jì)