基于AM186ed微處理器的嵌入式系統(tǒng)以太網(wǎng)接口設計與實現(xiàn)
出處:楊真人 發(fā)布于:2007-04-29 09:25:01
基于AM186ed微處理器的嵌入式系統(tǒng)以太網(wǎng)接口設計與實現(xiàn)
解放軍信息工程大學 王欣 詹瞻 岳春生
隨著信息技術(shù)的飛速發(fā)展,特別是互聯(lián)網(wǎng)的迅速普及,3C(計算機、通訊、消費電子)合一的加速,數(shù)字化時代已經(jīng)來臨,嵌入式系統(tǒng)技術(shù)的應用日益廣泛。嵌入式系統(tǒng)具有系統(tǒng)內(nèi)核小、專用性強、系統(tǒng)精簡、高實時性的操作系統(tǒng)軟件等特點,使得其在工業(yè)過程控制、交通管理、信息家電及機器人系統(tǒng)等研究生產(chǎn)領域中得到廣泛應用。而在這些應用中,為了實現(xiàn)多個嵌入式微處理器之間的信息交流,大多利用CAN、RS-232、RS-485等總線將微處理器組網(wǎng),這種網(wǎng)絡的通信距離比較有限,有關(guān)的通信協(xié)議也比較少,并且一般是孤立于Internet以外的。嵌入式系統(tǒng)接入Internet以后,不僅實現(xiàn)了設備的遠程控制、維護和升級,而且從另一層意義上講,接入Internet的設備已經(jīng)成為網(wǎng)絡共享資源的一部分。
另外,以太網(wǎng)一般都基于TCP/IP協(xié)議,使得整個網(wǎng)絡只有一種底層通訊協(xié)議,可以滿足控制系統(tǒng)各個層次的要求,不僅使得企業(yè)信息網(wǎng)絡和控制網(wǎng)絡得到統(tǒng)一,而且易于和Internet實現(xiàn)無縫連接。通常,一個嵌入式系統(tǒng)接入Internet,可選擇一個提供TCP/IP協(xié)議的嵌入式操作系統(tǒng),或是在現(xiàn)有操作系統(tǒng)之上加入TCP/IP協(xié)議棧,實現(xiàn)TCP/IP連接。對于嵌入式系統(tǒng),TCP/IP軟件協(xié)議棧也構(gòu)成了系統(tǒng)成本的一部分,而這部分投入占有不小的比例。同時,軟件協(xié)議棧的引入無疑要占用更多的系統(tǒng)資源,對于嵌入式系統(tǒng)來說是可觀的。但是對于嵌入式系統(tǒng)在網(wǎng)絡化開發(fā)的過程中,首先要解決的就是與以太網(wǎng)絡的連接問題,亦即如何將通用處理器的網(wǎng)絡連接裝置(以太網(wǎng)絡控制器)應用于嵌入式網(wǎng)絡的開發(fā)。 目前市面上有許多以太網(wǎng)絡控制芯片,可是其中大多耗電量高、功能復雜,不適用于價格低廉的嵌入式系統(tǒng)之中。我們選擇使用的是RTL8019以太網(wǎng)控制器。
系統(tǒng)硬件設計
AM186ed嵌入式微處理器
作為高性能的80C186兼容16位嵌入式微控制器,AM186ed微控制器結(jié)合了80C186/188 系列微控制器體系結(jié)構(gòu),但具有更高的性能。同時,它還帶有一個含有DRAM控制器的裝置用以提高性能。與80C186/188微控制器相比,Am186ED 微控制器可以減少體積、降低功耗和系統(tǒng)開銷而增強性能和功能性。Am186ED 控制器為那些需要超過64K字節(jié)RAM的系統(tǒng)提供了一個理想的解決方案。 含有DRAM控制器的裝置指的是降低系統(tǒng)開銷而增強功能性的應用組件,包括一個DMA控制器,和可以直接連到DMA通道的串行通信口。另外,Am186ED 微控制器還集成了一些常見的外圍器件,包括3個定時器,片選邏輯,一個中斷控制器,2個DMA控制器,一個看門狗定時器等。
RTL8019AS以太網(wǎng)控制器
由Realtek公司生產(chǎn)的RTL8019AS高集成以太網(wǎng)控制器芯片集成了介質(zhì)訪問控制子層(MAC)和物理層的性能,可以方便地設計基于ISA總線的系統(tǒng),簡單的與通用單片機進行接口。另外,它還具有與NE2000兼容、軟件移植性好,以及低廉的價格等優(yōu)點,在市場上的10Mbps網(wǎng)卡中占有相當?shù)谋壤?/P>
主要性能
(1)適應于Ethernet II 、IEEE802.3協(xié)議、10Base5、10Base2、10BaseT;
(2)支持8位、16位數(shù)據(jù)總線,8個中斷申請線以及16個I/O基地址選擇;
(3)全雙工,收發(fā)可同時達到10Mbps的速率,具有休眠模式,以降低功耗;
(4)內(nèi)置16KB的SRAM,用于收發(fā)緩沖,降低對主處理器的速度要求;
(5)可連接同軸電纜和雙絞線,并可自動檢測所連接的媒介類型;
(6)支持閃存讀寫;
(7)允許四個診斷LED引腳可編程輸出;
(8)100 腳的TQFP封裝,縮小主機板尺寸。
硬件系統(tǒng)結(jié)構(gòu)
主要使用了XILINX公司生產(chǎn)的CPLD芯片XC9536,實現(xiàn)了RTL8019的各個邏輯控制信號。這里,RTL8019使用了跳線模式、IO方式讀寫。詳細說明如下:
(1)、給RTL8019的NE2000兼容的各個寄存器分配了PCS0引腳,IO地址為00H~FFH,這樣,只需要將CPU的A0~A4連接到RTL8019上就可以了。RTL8019默認的IO地址是300H~3FFH,因此將RTL8019上的SA19~SA10和SA7~SA5接為地,SA9、SA8接為VCC。
(2)、使用16位方式讀寫RTL8019AS芯片,將RTL8019上的IOCS16B引腳通過10K的上拉電阻接為VCC。使用IO模式讀寫網(wǎng)絡芯片,SMEMRB和SMEMWB接上拉電阻為VCC。
系統(tǒng)軟件設計
嵌入式實時多任務操作系統(tǒng)
在該系統(tǒng)設計中,引入了實時操作系統(tǒng)(RTOS)。作為一個完整的操作系統(tǒng),RTOS有一個可靠性很高的實時內(nèi)核,將CPU時間、中斷、I/O、定時器等資源都包裝起來,留給用戶一個標準的應用程序接口(API);根據(jù)各個任務的優(yōu)先級,合理地在不同任務之間分配CPU的時間,保證程序執(zhí)行的實時性、可靠性。內(nèi)核一般都能提供任務調(diào)度與管理、時間管理、任務間同步與通信、內(nèi)存管理和中斷服務等功能。
本系統(tǒng)采用的是ATI 公司(Accelerated Technology Incorporated )的Nucleus 操作系統(tǒng)。我們已經(jīng)成功的將該操作系統(tǒng)移植到AM186ed上。
軟件設計
系統(tǒng)的軟件設計主要是針對網(wǎng)絡芯片進行的。下面就詳細介紹一下對于RTL8109AS的軟件設計
其軟件設計包括芯片初始化、數(shù)據(jù)發(fā)送和接收三部分。
芯片初始化
對RTL8019的初始化主要是對其控制寄存器進行初始化設置。8019的寄存器按照其地址及功能可大致分為NE2000兼容寄存器組和即插即用寄存器組兩大類。我們在該系統(tǒng)設計中用到NE2000兼容寄存器組,共有64個寄存器,所有寄存器均為8位,映射到四個頁面。
網(wǎng)卡初始化過程:首先要對網(wǎng)卡進行復位:18H-1FH共8個地址,為復位端口。對該端口地址的讀或者寫入任何數(shù),都會引起網(wǎng)卡的復位。
temp=inportb(IO_ADDR+0x1f); //讀網(wǎng)卡的復位端口
outportbb(IO_ADDR+0x1f,temp); //寫網(wǎng)卡的復位端口
說明:IO_ADDR是RTL8019的基準地址,其全部的寄存器地址都是由它得出來的,在初始化時必須賦予它正確的基準地址值。我們在此所使用的值為0x0000。
網(wǎng)卡復位完成之后,要對網(wǎng)卡的工作參數(shù)進行設置,以使網(wǎng)卡開始工作。對網(wǎng)卡的參數(shù)設置主要是對命令寄存器CR進行設置,CR主要是用于選擇寄存器頁、啟動或停止遠程DMA操作以及執(zhí)行命令。
①PS1和PS0兩位用來選擇寄存器頁:
②RD2、RD1、RD0三位代表要執(zhí)行的功能。
③TXP為寫入1時發(fā)送數(shù)據(jù)包,發(fā)完自動清零;
④STA,STP兩位用來啟動命令或停止命令
網(wǎng)卡初始化的軟件編程如下:
8019_init()
{
outportb(IO_ADDR+0x00,0x21); //選擇頁0寄存器,網(wǎng) 卡停止 運行
outportb(IO_ADDR+0x01,0x4c); //接收緩沖區(qū)范圍
outportb(IO_ADDR+0x02,0x80); //PSTOP,構(gòu)造緩沖 環(huán):0x4c-0x80;
outportb(IO_ADDR+0x03,0x4c); //BNRY,設置指針;
outportb(IO_ADDR+0x04,0x40); //發(fā)送緩沖區(qū)范圍
outportb(IO_ADDR+0x0d,0x4c); //
outportb(IO_ADDR+0x0e,0xc8); //設置數(shù)據(jù)配置寄存 器,使用FIFO緩存, 普通模式,8 位數(shù)據(jù) DMA;
outportb(IO_ADDR+0x0f,0xff); //清除所有中斷標志 位
outportb(IO_ADDR+0x0f,0x00); //設置中斷屏蔽寄存 器,屏蔽所有中斷;
page(1); //選擇頁1寄存器;
outportb(IO_ADDR+0x07,0x4d); //初始化當前頁寄存 器,指向當前正在寫 的頁的下一頁;
outportb(IO_ADDR+0x08,0x00); //設置多址寄存器 MAR0-5,均設置 為0x00;
outportb(IO_ADDR+0x09,0x00);
outportb(IO_ADDR+0x0a,0x00);
outportb(IO_ADDR+0x0b,0x00);
outportb(IO_ADDR+0x0c,0x00);
outportb(IO_ADDR+0x0d,0x00);
outportb(IO_ADDR+0x0e,0x00);
outportb(IO_ADDR+0x0f,0x00);
outportb(IO_ADDR+0x00,0x21); //選擇頁0寄存器,網(wǎng) 卡執(zhí)行命令
}
數(shù)據(jù)的收發(fā)
通過對地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收與發(fā)送。要接收和發(fā)送數(shù)據(jù)包都必須讀寫網(wǎng)卡內(nèi)部的16KB的RAM,必須通過DMA進行讀和寫。
以數(shù)據(jù)的發(fā)送為例,該過程應包含三個步驟:數(shù)據(jù)包的封裝;通過遠程DMA將數(shù)據(jù)包送到數(shù)據(jù)發(fā)送緩沖區(qū);通過RTL8019的本地DMA將數(shù)據(jù)送入FIFO進行發(fā)送。具體過程如下:
①數(shù)據(jù)包在發(fā)送前應該按規(guī)定的格式封裝好,格式如下:
②把上面的數(shù)據(jù)包通過遠程DMA寫送入RTL8019的數(shù)據(jù)發(fā)送緩沖區(qū)
outportb(IO_ADDR+0x00,0x22);
outportb(IO_ADDR+0x07,0x40); //設置中斷狀態(tài)寄存器ISR 為40H,清除發(fā)送完成標志
outportb(IO_ADDR+0x09,0x40); //設置遠程DMA地址 寄存器RSAR1、0為 4000H,即發(fā)送緩沖 區(qū)開始地址
outportb(IO_ADDR+0x08,0x00);
outportb(IO_ADDR+0x0a,0x50); //設置遠程DMA字節(jié) 計數(shù)寄存器RBCR1、 0為發(fā)送數(shù)據(jù)包的長 度80
outportb(IO_ADDR+0x0b,0x00);
outportb(IO_ADDR+0x00,0x12); //設置CR為12H,設置 命令寄存器為遠程 DMA寫
for(i=0;i<80;i++)
outport(0x10<<1,*(buffer+i)); //往數(shù)據(jù)端口寫入發(fā) 送數(shù)據(jù)
temp=inportb(IO_ADDR+0x07); //查詢中斷狀態(tài)寄存 器ISR,等待遠程 DMA完成
outportb(IO_ADDR+0x0b,0x00);
outportb(IO_ADDR+0x0a,0x00);
outportb(IO_ADDR+0x00,0x22); //設置CR為22H,設置 RBCR1、0為0,遠程 DMA停止
outportb(IO_ADDR+0x07,0x40); //設置中斷狀態(tài)寄存 器ISR為40H,清除發(fā) 送完成標志 ③啟動本地DMA將數(shù)據(jù)發(fā)送出去。
outportb(IO_ADDR+0x06,0x50);
outportb(IO_ADDR+0x05,0x00); //設置發(fā)送字節(jié)計數(shù) 器為發(fā)送數(shù)據(jù)包的 長度
outportb(IO_ADDR+0x04,0x40); //設置發(fā)送頁面起始 地址TPSR為40H,即 發(fā)送緩沖區(qū)開始地 址高位字節(jié)
outportb(IO_ADDR+0x00,0x26); //啟動發(fā)送
AM186ed的Nucleus NET的實現(xiàn)
上面數(shù)據(jù)的收發(fā)完成的是以太網(wǎng)的MAC層和物理層的協(xié)議。要真正實現(xiàn)嵌入式系統(tǒng)與以太網(wǎng)上其他設備進行通信,需要在系統(tǒng)上實現(xiàn)TCP/IP協(xié)議。
這里我們使用了Nucleus嵌入式操作系統(tǒng),該操作系統(tǒng)有TCP/IP組件,將RTL8019AS芯片作為一個Device,可以完全移植到Nucleus上去。
結(jié)束語
本設計實現(xiàn)的嵌入式以太網(wǎng)接口支持RS232、RS485和以太網(wǎng)的連接,可以通過以太網(wǎng)接入Internet,從而實現(xiàn)從Internet上監(jiān)控嵌入式設備,可以廣泛應用在工業(yè)控制領域,有很高的實用價值。
參考文獻:
[1]. AM186ed datasheet http://m.58mhw.cn/datasheet/AM186ed_803998.html.
[2]. RS-232 datasheet http://m.58mhw.cn/datasheet/RS-232_584855.html.
[3]. RS-485 datasheet http://m.58mhw.cn/datasheet/RS-485_584821.html.
[4]. RTL8019 datasheet http://m.58mhw.cn/datasheet/RTL8019_1063656.html.
[5]. 80C186 datasheet http://m.58mhw.cn/datasheet/80C186_103555.html.
[6]. RTL8019AS datasheet http://m.58mhw.cn/datasheet/RTL8019AS_1096173.html.
[7]. TQFP datasheet http://m.58mhw.cn/datasheet/TQFP_1528902.html.
[8]. CPLD datasheet http://m.58mhw.cn/datasheet/CPLD_1136600.html.
[9]. XC9536 datasheet http://m.58mhw.cn/datasheet/XC9536_893114.html.
[10]. SA10 datasheet http://m.58mhw.cn/datasheet/SA10_594078.html.
[11]. PS1 datasheet http://m.58mhw.cn/datasheet/PS1_1196822.html.
[12]. PS0 datasheet http://m.58mhw.cn/datasheet/PS0_1196847.html.
[13]. STA datasheet http://m.58mhw.cn/datasheet/STA_2043195.html.
[14]. Device datasheet http://m.58mhw.cn/datasheet/Device_1397784.html.
[15]. RS232 datasheet http://m.58mhw.cn/datasheet/RS232_585128.html.
[16]. RS485 datasheet http://m.58mhw.cn/datasheet/RS485_585289.html.
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復控制的復合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎知識2025/6/18 16:30:52









