Jste zde

Realizace Ethernetu v mikrokontrolérech ColdFire - 1.část - Úvod

Ethernet dnes již začíná být standardem v mnoha přístrojích a zařízeních, a proto je snaha integrovat ho přímo do samotných mikrokontrolérů. To je právě případ společnosti Freescale a její řady 32bitových mikrokontrolérů ColdFire. Následující 1. část seriálu článků popisující, jak snadná je realizace Ethernetu a jeho služeb s MCU ColdFire, poskytuje stručný úvod do obecné struktury Ethernetu i jeho hardwarovou implementaci v MCU.

Co je to Ethernet ?

Ethernet se stal realitou pro nízkonákladové embedded aplikace a systémy. Standard Ethernetu (IEEE 802.3) byl původně navržen pro vzájemné datové propojení počítačů v rámci lokální sítě, ale stal se natolik populárním, že je dnes takřka nemožné najít počítač či laptop, který není vybaven ethernetovým portem. Specifikace IEEE 802.3 definuje mechanické a elektrické vlastnosti spojení mezi zařízeními, které jsou definovány ve fyzické vrstvě OSI modelu a multiuzlový adresovací komunikační protokol v rámci MAC vrstvy.

1.1: Fyzická vrstva Ethernetu

Fyzická vrstva Ethernetu definuje fyzické spojení mezi uzly. Standard 802.3 definuje mnoho různých typů fyzických vrstev zahrnujících všechna média od koaxiálního kabelu až po optická vlákna. Během let došlo ke změně běžné volby přenosového média ze silného vícežilového kabelu opatřeného velkými konektory (označované jako Thicknet) na tenké kabely se stočenými páry s dnes běžnými malými 8vývodovými konektory RJ-45.

V současné době nejvyužívanější fyzická vrstva, tvořená měděnými vodiči, se označuje jako 100Base-TX. Toto přenosové médium se stočenými páry zahrnuje 8 vodičů stočených do 4 párů, kde se vždy dva páry využívají pro komunikaci v jednom směru. Takto provedený kabel splňuje parametry kategorie 5 (zkráceně Cat 5). Tento standard definuje parametry 4párového krouceného kabelu, který je schopen přenést frekvence až do 100 MHz.

Současné nejpoužívanější provedení Ethernet konektoru RJ-45

1.2: MAC vrstva

MAC (Media Access Control) vrstva definuje komunikaci, která probíhá na fyzické vrstvě. Každé ethernetové zařízení má svoji unikátní 48bitovou MAC adresu, která je definována právě v MAC vrstvě. Tato adresa zařízení je jedinečná, tzn. nikdy se nemění a většinou je programována již při výrobě. Z tohoto důvodu jsou MAC adresy spravovány a přidělovány mezinárodní asociací IEEE.

MAC adresa, se přenáší spolu s jinými daty v tzv. MAC hlavičce (záhlaví). Jak již název napovídá, hlavička (Header) je umístěna vždy na začátku datových paketů. Obsahuje adresu zdrojového a cílového zařízení (Destination and Source Address), typ rámce (Frame Type), uživatelská data rámce (Frame User Data) a kontrolní součet (FCS Checksum).

MAC hlavička (záhlaví) Ethernetu IEEE 802.3

Ethernet je tak možné realizovat i bez jakýchkoliv dalších vrstev. Pak poskytuje jednoduchou point-to-point komunikaci, s kontrolou chybných dat. Ethernet totiž sám o sobě neposkytuje vyšší úroveň robustnosti komunikace, na kterou jsme běžně zvyklí. Ta je spolu s dalšími vlastnostmi, jakými jsou více komunikačních portů, opakovaný přenos datových paketů, timeout atd., doplněna prostřednictvím dalších vyšších hladin v 7vrstvém OSI modelu.

1.3: Sedmivrstvý OSI model

7vrstvý OSI model definuje funkci různých vrstev v komunikačním stacku. Dvě nejnižší vrstvy (fyzická a MAC/linková vrstva) jsou tradičně implementovány přímo v hardwaru. Ostatních pět vrstev je obvykle realizováno softwarově.

Síťová vrstva, nebo také IP vrstva (pro TCP/IP stack), poskytuje právě potřebné dodatečné vrstvy pro adresaci pomocí IP adres (xxx.xxx.xxx.xxx) a multiplexaci. Ta rozděluje jeden komunikační kanál do několika časově rozdělených kanálů (v názvosloví TCP/IP se jedná o tzv. porty).

Přenosová vrstva přidává nejdůležitější vlastnost pro komunikační zásobník, tedy TCP protokol. Tato vrstva je zodpovědná za vytváření virtuálního spojení mezi dvěma logickými body (logical point) neboli sockety. API pro vytváření socketů je definováno v relační vrstvě. Konečně na vrchu je aplikační vrstva, která určuje komunikační protokoly používané na internetu (http, smtp, tftp apod.), ale zároveň může sloužit i pro uživatelské protokoly.

Struktura 7vrstvého OSI modelu pro Ethernet

 

Mikrokontroléry rodiny ColdFire a Ethernet

Tyto mikroprocesory jsou založené na 32bitových jádrech, které jsou dostupné ve čtyřech variantách (rozdělení na obrázku níže). Jádra jsou plně odstupňovaná, ať co se týče různé instrukční sady nebo doplňkových modulů (MMU apod.). Jádro s označením V1 obsahuje základní registry a instrukční sadu, jádro V2 k tomuto ještě přidává další instrukce a adresní módy spolu s volitelnou jednotkou eMAC (Multiply and Accumulate unit) atd.

Jádra ColdFire mají odstupňovaný instrukční soubor, vlastnosti a výkon.

2.1: Výhody 32bitové architektury MCU

Velkou výhodou použitých procesorů je právě 32bitová architektura. Ta je pro ethernetové aplikace velice důležitá (ne nezbytná, ale velmi efektivní). Důležité je si i uvědomit, že jak příchozí, tak odchozí data jsou uložena v tzv. zásobnících (nejčastěji TCP/IP stack). Příchozí data se shromažďují na spodku zásobníku, odkud se dostávají až nahoru, kde si je přebírá software pro další zpracování. Data pro odeslání se naopak vrství nad sebe a postupně putují dospodu, odkud jsou odesílána.

Pro urychlení práce se za tímto účelem používají paměťové ukazatele (zkráceně ukazatele) neboli pointery, namísto neustálého kopírování bloků dat. Toto se také někdy nazývá nulovým kopírováním. Aritmetika ukazatelů je výrazně efektivnější na 32bitových jádrech používajících opravdové 32bitové registry. Toto je právě velkou výhodou 32bitové architektury ColdFire, kde i složité operace mohou být provedeny v jednom instrukčním cyklu.

Předávání dat a úprava přenášených paketů před vysláním a po příjmu

 

Fast Ethernet Controller ( FEC )

FEC modul je pro ColdFire rozhraním do světa Ethernetu. Tento modul je velice konzistentní a dostupný pro všechna jádra. Konzistencí se v tomto případě rozumí to, že ovladače pro procesor V4, který disponuje FEC modulem, budou fungovat stejně tak dobře na jádře V1 (samozřejmě pokud také obsahuje FEC modul). Jediným velikým rozdílem bude rozdílná alokace paměti. Tento modul byl poprvé použit v procesoru MPC860T, který se vyráběl od poloviny 90. let.

3.1: Vlastnosti modulu FEC pro jádra ColdFire

  • Ethernet Media Access Controller (MAC), který je navržen pro podporu 10 a 100 Mbps Ethernetové sítě (IEEE 802.3).
  • Plně duplexní řízení přenosu.
  • Podpora plně duplexního přenosu (propustnost dat až 200 Mbps).
  • Opakované odesílání paketů z paměti FIFO (není potřeba sběrnice procesoru = významné ušetření výkonu).
  • Rozpoznávání adres:
    • Rámce s plošnou broadcast adresou mohou být buďto vždy přijaty, nebo vždy odmítnuty.
    • Přesné porovnání jednotlivých 48bitových individuálních adres (unicast adresy).
    • Kontrola 64bitové hash individuálních adres.
    • Kontrola 64bitové hash skupiny adres (multicast adresy).
    • Sledovací mód (Promiscuous mode) – příjem všech paketů v síti.
  • Vyhrazený DMA řadič, který umožňuje obousměrný přenos dat bez zapojení procesoru.

 

Řadič rychlého Ethernetu (Fast Ethernet Controller) podporuje jak 100Mbps, tak 10Mbps sítě, umožňuje tak ColdFiru komunikaci jak na starších sítích 10BaseT, tak na novějších 100BaseTX (samozřejmě s příslušnou fyzickou vrstvou). Plně duplexní přenos znamená, že packety mohou být zároveň odesílány a přijímány, tzn. využívá oddělené vedení pro příjem a vysílání.

Hardware je natolik výkonný, že implementovaná MAC vrstva vše zvládá sama bez pomoci jakéhokoliv softwaru. Teď pouze inicializujeme modul FEC, zapíšeme MAC adresu registru, zinicializujeme hlášení od přijímacích a vysílacích bufferů a o všechno další se již postará hardware sám. FEC automaticky přijímá, zpracovává a kontroluje příchozí packety (pomocí kontrolního součtu) a prostřednictvím DMA řadiče je ukládá do výstupních bufferů. V případě vysílání je potřeba říci jednotce FEC, že má data v TX bufferu připravená na odeslání. DMA si je vyzvedne, FEC uspořádá, vypočte kontrolní součty a pošle vše na fyzickou vrstvu. Pokud je detekována kolize, FEC automaticky vybaví zálohu a opětovně odešle obsah TX bufferu bez zásahu procesoru. Následně podá zprávu s výsledky operace.

 

~ Pokračování v 2. části, kde najdete - ColdFire TCP/IP stack, DHCP client, DNS client, HTTP web server, RSS/XML ~

Autor: Eric Gregori
Překlad: Tomáš Coufal
Úprava: Antonín Vojáček

DOWNLOAD & Odkazy

Hodnocení článku: 

Komentáře

V to urcite doufam taky. Mel jsem jej nejakou dobu pujceny nejak jsem to poradne nerozchodil. Tak by se hodila kucharka step by step na jednoduche preposilani dat mezi TCP/IP a seriovou linko jako Xport.

leo

Je zde malá odlišnost - MCF5475 (Coldfire V4) má FIFO a používá DMA (periferie na chipu, kterou mohu a dokonce musím programovat). MCF5272 (Coldfire V2) má interní DMA (v rámci FEC), protože pouze nastavuji kam se pakety mají ukládat a HW mi přerušením pouze oznámí, že paket je již v RAM. Ovládání je dokonce podobné tomu, jako to bylo ještě v éře 68EN302 (ještě Motorola 68k), kde bylo pouze 8 ukazatelů (buffer descriptory). Tím bych rád poukázal na to, že Freescale se snaží ulehčit vývojářům psaní driverů.