CS8900 base address的確定方法

開始研究tftp的實現方法,框架基本上是(從底層向上):媒介->IP->UDP->TFTP。其中,CS8900A就可以完成PHY層和MAC層的所有工作,在媒介的上部應該還有一個LLC(logical link control),IP層也不僅僅包含IP協議,另外還需要有arp協議來確定host的mac地址。這個整體的框架後面詳細介紹,下面先簡略介紹cs8900a的base address的確定方法和探測程序。 cs8900a實際上已經比較老了,性能和價格上都比不過dm9000,Linux 2.6的內核默認的是支持dm9000的以太網控制器。但是EDUKIT-III上仍然使用的是cs8900a,所以還是專心看cs8900a。要注意,一是以學習的態度去研究,二是總結閱讀datasheet的方法。 首先看看cs8900a到底是什麼。 ·Single-Chip IEEE 802.3 Ethernet Controller with Direct ISA-Bus Interface ·Maximum Current Consumption = 55 mA (5V Supply) ·3 V or 5 V Operation ·Industrial Temperature Range · Comprehensive Suite of Software Drivers Available ·Efficient PacketPage Architecture Operates in I/O and Memory Space, and as DMA Slave ·Full Duplex Operation ·On-Chip RAM Buffers Transmit and ReceiveFrames ·10BASE-T Port with Analog Filters, Provides: - Automatic Polarity Detection and Correction ·AUI Port for 10BASE2, 10BASE5 and 10BASE-F ·Programmable Transmit Features: - Automatic Re-transmission on Collision - Automatic Padding and CRC Generation ·Programmable Receive Features: - Stream Transfer; for Reduced CPU Overhead - Auto-Switch Between DMA and On-Chip Memory - Early Interrupts for Frame Pre-Processing - Automatic Rejection of Erroneous Packets ·EEPROM Support for Jumperless Configuration ·Boot PROM Support for Diskless Systems ·Boundary Scan and Loopback Test ·LED Drivers for Link Status and LAN Activity ·Standby and Suspend Sleep Modes 可以看出,cs8900a最重要的部分就是: ·ISA總線接口。這部分可以使外部的glue logic最小,簡化編程,方便設計。 ·集成10BASE-T transmit and receive filters。這個加上專用變壓器和RJ45對應的網線,就可以完成PHY層的功能。所以,硬件設計時不需要考慮PHY芯片了。at91rm9200集成了以太網控制器,但是隻是實現了MAC層的功能,所以需要擴展一個PHY層芯片完成網絡接口的設計。 ·特殊的PacketPage架構。這實際上是cs8900a的特色,本來IO訪問模式和memory訪問模式是不同的,但是cs8900a屏蔽了這種差異,提供了一個統一的接口。這樣在程序設計上,就可以使用統一的內存空間,來完成對cs8900a的操作。 ·EEPROM的支持。 現在就PacketPage架構和兩種訪問模式展開分析。 The CS8900A architecture is based on a unique, highly-efficient method of accessing internal registers and buffer memory known as PacketPage. PacketPage provides a unified way of controlling the CS8900A in Memory or I/O space that minimizes CPU overhead and simplifies software. It provides a flexible set of performance features and configuration options, allowing designers to develop Ethernet circuits that meet their particular system requirements. cs8900a有兩種訪問模式:IO模式和MEM模式。在IO模式下,cs8900a佔用host最小的空間,僅僅16個字節(8個16bit的IO ports)。對地址空間緊張的系統來說,是一個合適的選擇。在MEM模式下,cs8900a佔用4K的空間,這是軟件可以直接訪問cs8900a的內部寄存器,而且這4K的空間還分成了6個組成部分,具體可以參考datasheet的4.1.1部分。 cs8900a默認的是IO模式。在系統設計時,最好兩種模式都要預留出來。原因有很多,首先,大多數情況下,MEM模式性能更高。因爲ISA內存操作比IO操作需要更少的時鐘週期。所以最好有mem模式。其次呢,如果內存空間不可用,或者特殊操作時,IO模式是唯一的選擇,而且如果使用了EEPROM,板子發生故障時,EEPROM通常是空白的,爲了對EEPROM編程,cs8900a也必須工作在IO模式。綜上兩種分析,系統設計還是要設計兩種訪問方式爲好。在ISA總線接口中,I/O空間和內存空間是獨立尋址的,因此它們有各自不同的讀寫信號。但ARM體系中,I/O空間和內存空間是統一尋址。問題就出來了,如果兩種訪問模式同時存在,那麼如何區分是那種訪問模式呢? 這個在硬件設計中是很普遍的問題。電路設計的時候用高位地址線(ADDR24)經過組合邏輯的譯碼來區分I/O空間和內存空間的讀寫。cs8900a只需要20根地址現,而s3c2410的地址線是32條。那麼可以讓a[19:0]對應cs8900a的sa[19:0],拿出一條地址線A24來區分兩種模式。我畫了原理圖(注意,這僅僅是組合邏輯譯碼的一種,可以有其他的方式,這個就有硬件設計來決定了),如下: 文件: 1.rar 大小: 25KB 下載: 下載 通過上述的原理圖,很容易明白,A24地址線爲低時,爲MEM模式。A24爲高時,爲IO模式。另外,cs8900a可以接在不同的bank。比如,EDUKIT接在nGCS3,基址是0x18000000,那麼很明顯,MEM模式的基地址是0x18000000,而IO模式的基地址是0x18000000+(1<<24),也就是0x19000000。但是IO模式的基地址還沒有最終結果呢。看datasheet,發現packetpage偏移0x0020的地方爲IO base address。在復位以後,如果沒有EEPROM,那麼該寄存器的值就是默認的0x0300。如果採用IO方式,那麼初始時對應的該寄存器始終爲0x0300,前面得到的0x19000000再加上這個0x300才能找到最終8個16bitsIO ports的首地址。以後所有的操作都是通過這8個IO ports來進行的,包括訪問MEM模式的那些寄存器。也就是MEM要訪問那些內部寄存器,只是需要直接尋址就可以了,而IO模式則要先找到IO ports,然後通過這些IO ports來尋找到內部寄存器。顯然,在效率上又差了一層。 下面看看EDUKIT-III的不同。EDUKIT-III採用了核心板+底板的設計方法。核心板SoC的A24最終經過電平轉換芯片74LVCH62245成爲AB24,然後經過CPLD處理邏輯關係得到相應的IO和MEM控制信號。在CPLD中的邏輯處理跟上面原理圖的處理是相同的,不過實驗箱需要處理的邏輯太多,用CPLD要好。這個也是看了好長時間的電路圖才推斷出來的。 由此可見base address的計算方法如下(假定選擇nGCSn,對應bank的首地址爲nGCS_ADDR) MEM模式: base address = nGCS_ADDR IO模式: base address = nGCS_ADDR + (1 << 24) + 0x0300. 當然,還有的默認前提就是使用了A24這條地址線來進行區分。當然,如果你不使用A24,只採用IO模式,不支持MEM模式,那麼你的基地址完全可以是nGCS_ADDR+0x0300。需要注意的是,在弄清楚原理的情況下,一定要看硬件設計如何,這樣才能確定基地址。 -------------------------------------------------------------------------------- 備註:關於IO mode和memory mode的比較 I/O mode is 99.6% as fast as Memory mode. Also, since the CS8900A defaults to I/O and you don't need glue logic in most systems in I/O mode, Cirrus recommends I/O mode.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章