FI

PUBLIKACE » Webový teploměr

Embedded Ethernet – převodník dat RS232 – Ethernet II Webový teploměr

Autor: Ing. Pavel Čeleda

Obsah

  1. Úvod
  2. Možnosti a přínosy aplikace standardu Ethernet II v jednočipových aplikacích
  3. Bloková struktura zvoleného řešení
  4. Volba součástkové základny
    1. 4.1.Výběr jednočipového mikropočítače
    2. 4.2.Výběr ethernetového řadiče
    3. 4.3.Podpůrné obvody
    4. 4.4.Zajištění hardwarové části projektu
    5. 4.5.Hardware Web 51 DESIGN KIT
  5. Softwarová realizace diplomové práce
    1. 5.1.Seznámení s procesorem T89c51RD2
    2. 5.2.Návrh ovladače ethernetového řadiče RTL 8019AS
      1. 5.2.1.Literatura pro tvorbu ovladače
      2. 5.2.2.Monitorování komunikace v sítích Ethernet II.
      3. 5.2.3.RTL 8019AS základní v/v operace
      4. 5.2.4.Inicializace řadiče RTL 8019AS
      5. 5.2.5.Vysílání dat řadičem RTL 8019AS
      6. 5.2.6.Příjem dat řadičem RTL 8019AS
      7. 5.2.7.Rozhraní pro vyšší vrstvy v rámci OSI-RM
    3. 5.3.Implementace síťových protokolů
      1. 5.3.1.Address Resolution Protocol
      2. 5.3.2.Internet protokol verze 4
      3. 5.3.3.Protokol řídících hlášení ICMP
      4. 5.3.4.User Datagram Protocol
  6. Měření teploty procesorem T89c51RD2
    1. 6.1.UDP komunikace na bázi BSD soketů
    2. 6.2.Webové rozhraní pro vizualizaci dat
  7. Závěr
  8. Literatura
  9. Přílohy
  1. Programová dokumentace
    1. A.1.Příkaz make
    2. A.2.RD2 - Flasher
    3. A.3.Implementace Embedded Ethernetu s T89c51RD2
    4. A.4.Webové rozhraní
  2. Uživatelská dokumentace
    1. B.1.Zapojení jednočipového mikropočítače
    2. B.2.Obslužný software na PC serveru
    3. B.3.Webové rozhraní

Seznam používaných zkratek

ADC
Analog To Digital Converter
API
Application Program Interface
AUI
Attachment Unit Interface
CAN
Controller Area Network
CISC
Complex Instruction Set Computer
CSMA
Carier Sense Multiple Acces
CSMA/CD
Carrier Sense Multiple Access with Collision Detection
DMA
Direct Memory Access
DTE
Data Terminal Equipment
EEPROM
Electrically Erasable Programmable Read-Only Memory
EIA
Electronic Industries Association
EMI
Electromagnetic Interference
EPROM
Erasable Programmable Read-Only Memory
FCS
Frame Check Sequence
FTP
File Transfer Protocol
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol
IANA
Internet Assigned Numbers Authority
IAP
In Application Programming
IEEE
Institute of Electrical and Electronics Engineers
ISA
Industry Standard Architecture
ISO
International Organization for Standardization
ISP
In System Programming
LLC
Logical Link Control
MAC
Media Access Control
MAU
Medium Attachment Unit
MDI
Medium Dependent Interface
OTP
One Time Programmable
OUI
Organizationally Unique Identifier
PCA
Programmable Counter Array
PCI
Peripheral Component Interconnect
PHP
PHP Hypertextový preprocesor
PLL
Phase Locked Loop
PWM
Pulse Width Modulation
QoS
Quality of Service
RAM
Random Access Memory
RFC
Request For Comment
RISC
Reduced Instruction Set Computer
SFD
Starting Frame Delimiter
SMD
Surface Mounted Devices
SNAP
SubNet Access Protocol
SPI
Serial Peripheral Interface
STP
Shielded Twisted Pair
TIA
Telecommunications Industry Association
UART
Universal Asynchronous Receiver/Transmitter
UTP
Unshielded Twisted Pair
URL
Uniform Resource Locator
W3C
World Wide Web Consortium

1Úvod

V oblasti informačních technologií se schyluje k nové éře. Významnou úlohu v této situaci sehrává neustálý nárůst výkonu a snižování cen výpočetních a komunikačních zařízení. Informační technologie jsou stále více aplikovány do celé řady přístrojů vzájemně propojených do rozličných sítí, které jsou v anglické literatuře obecně nazývány Embedded Networks (1).

Takovéto sítě jednočipových mikropočítačů nejsou nikterak nápadné a unikají pozornosti běžných uživatelů. Přesto v budoucnu významně ovlivní technologické možnosti uživatelů při styku s okolním prostředím. Spojením celé řady zařízení a senzorů vzniká zcela nový, komplexní celek umožňující sběr, sdílení a zpracování dat. Předpokládané aplikace vyžadují možnost automatické konfigurace a adaptivního chování celého systému. Předpokládaná dlouhá doba životnosti budoucích systémů vyžaduje již během návrhu a realizace těchto systémů respektovat požadavky na průběžnou modernizaci a rozšiřování funkcí v průběhu technického života systému.

Předpokládá se, že embedded Networks budou používány a řízeny uživateli nemajících patřičné znalosti o dané problematice. Tento fakt a skutečnost, že chceme navrhnout funkční systém, který bude schopen obsluhovat běžný uživatel přináší další nové nároky. Důležité pro vývojáře bude porozumět, jak uživatelé vnímají a chápají systém, který budou používat a na základě toho navrhnout celou koncepci návrhu.

Předkládaná práce řeší problematiku implementace Embedded Ethernetu s jednočipovým mikropočítačem postaveným na architektuře x51. Popularita a rozšíření síťových technologií spojená s vlivem Internetu do všech oborů lidské činnosti znamená, že připojení a komunikace v rámci této struktury je nesporným přínosem pro dané zařízení. Možnost ovládání jednočipových systémů pomocí standardních síťových protokolů z libovolného místa na světě otevírá nové možnosti při řešení celé řady úloh.

Cílem práce bylo realizovat jednoduché zařízení připojitelné do lokální 10 Mb/s sítě podle standardu Ethernet II. Zvolené řešení je postaveno na architektuře klient - server. Server představuje počítač s operačním systémem třídy Unix komunikující se samostatnými jednočipovými mikropočítači. Získané informace se na serveru zpracovávají, ukládají a poskytují na požádání dalším klientům. Výhodou tohoto řešení je, že máme k dispozici robustní a transparentní systém schopný odolávat potencionálním pokusům o zneužití. Realizace těchto požadavků izolovaným jednočipovým mikropočítačem při zachování přijatelného poměru cena/výkon je nemyslitelná. Samotné zařízení lze chápat jako programovatelnou inteligentní síťovou kartu. Komunikace s okolím probíhá sadou standardních síťových protokolů. Zbylé periferie jednočipového mikropočítače se využívají pro ovládání a komunikaci s dalšími mikroprocesorovými systémy.

2Možnosti a přínosy aplikace standardu Ethernet II v jednočipových aplikacích

Dlouhou dobu představoval princip centralizovaného řízení komplexních systémů a procesů běžnou praxi. S nástupem sítí došlo k logickému přesunu od centralizovaného k distribuovanému způsobu řízení a myšlení. Dnes jsme obklopeni sítěmi lokálního a globálního charakteru, které se staly součástí každé moderní průmyslové společnosti. Do výčtu vzdáleně řízených systému můžeme zařadit rozličné měřící přístroje, automatizované výrobní linky, satelitní systémy a mnoho dalších zařízení.

Podle očekávaného způsobu nasazení distribuovaného systému volíme adekvátní metody komunikace a zabezpečení přenášených dat. Použití Internetu pro celosvětové sdílení informací se stalo realitou všedního dne. Předpokladem úspěšné komunikace na Internetu je zdařilá implementace patřičných síťových protokolů. V konečném efektu nic nebrání tomu, aby zhotovený komunikační modul byl součástí inteligentního kávovaru, otevírání domovních dveří nebo laboratorního přístroje.

Čím se všechny tyto zařízení společně vyznačují? Jedná se o kompaktní, jednoúčelové systémy řešící jednoduché úlohy s řadou analogových a digitálních vstupů a výstupů. Použití Internetu a síťových technologií je spojováno od počátku s osobními počítači třídy PC, které svými vlastnostmi ne zcela odpovídají výše popsané situaci. Popsané charakteristiky jsou však velice blízké jednočipovým mikropočítačům původně určeným pro zcela jiné druhy aplikací.

Na počátku éry Embedded Ethernetu byla snaha několika nadšenců demonstrovat možnost připojení jednočipového mikropočítače do Internetu. Tyto nesmělé pokusy odstartovaly trend, který v současnosti vyústil ve stav, kdy většina světových výrobců jednočipových mikroprocesorů prezentuje vlastní zpracování problematiky Embedded Ethernetu.

Hlavní přínosy Embedded Ethernetu lze shrnout v následujících bodech

  • dostupnost přes Internet pomocí standardních síťových protokolů,
  • připojení do stávající kabeláže,
  • nahrazení PC pro jednoduché úlohy,
  • nízká cena,
  • kompaktnost řešení,
  • vyšší životnost,
  • rekonfigurovatelnost,
  • modulárnost,
  • návaznost na další jednočipové systémy,
  • vysokorychlostní rozhraní 10 Mb/s half-duplex a 20 Mb/s full-duplex.

Reálné možnosti se odvíjejí od typu zvoleného jednočipového mikropočítače a doplňující součástkové základny. Můžeme se setkat se systémy určenými pro jednoduché hardwarově nenáročné aplikace až po řešení plně výkonově ekvivalentní běžnému PC.

Praktické použití si lze představit např. v následujících oblastech

  • jednoduchá zařízení ovládaná přes TCP/IP, UDP,
  • komunikační moduly pro přístroje,
  • sběr dat a jejich zpřístupnění po síti,
  • prodloužení sériového portu RS 232/422/485,
  • připojení běžných spotřebičů k počítačové síti,
  • šifrovací zařízení, atd.

Existují jistá omezení vyplývající z vlastností standardu Ethernet II. Náhodný přístup ke sdílenému přenosovému kanálu metodou CSMA/CD není vhodný pro aplikace v reálném čase kde musíme zaručit maximální dobu odezvy popř. požadovanou kvalitu služby (QoS). Ve valné většině realizovaných projektů se však jedná o aplikace, pro které plně postačuje přístupová metoda CSMA/CD. V opačném případě je nutné použít speciální metody přístupu ke sdílenému médiu např. Token Ring.

Embedded Ethernet představuje perspektivní technologii, která má své místo mezi ostatními komunikačními standardy elektronických zařízení jako je BlueTooth, Can Bus, FireWire, USB, aj. Postupem času se budeme stále častěji setkávat se zařízeními vybavenými těmito rozhraními, které budou schopné vytvářet mezi sebou vlastní dedikované sítě. Budoucnost patří síťovým technologiím a očekávaný bouřlivý vývoj v této oblasti přinese dosud nepoznané možnosti.

3Bloková struktura zvoleného řešení

Cílem práce bylo realizovat jednoduché zařízení připojitelné do lokální 10 Mb/s sítě podle standardu Ethernet II. U výsledného zařízení jsem se snažil zachovat rozumný poměr cena/výkon a jednočipovým mikropočítačem realizovat pouze nejnutnější funkce.

Jednočipový mikropočítač s rozhraním Ethernet II

Obr. 6.1: Jednočipový mikropočítač s rozhraním Ethernet II

Zvolené řešení je postaveno na architektuře klient - server. Server představuje počítač s operačním systémem třídy Unix komunikující s jednotlivými jednočipovými mikropočítači. Praktické ověřování probíhalo na operačních systémech FreeBSD a Linux. Získané informace se na serveru zpracovávají, ukládají a poskytují na požádání dalším klientům. Výhodou tohoto řešení je, že máme k dispozici robustní a transparentní systém, schopný odolávat potencionálním pokusům o zneužití. Síť jednočipových mikropočítačů může být skryta před zrakem útočníka a celý systém se navenek tváří jakoby byl tvořen pouze serverem. Jednotlivé mikropočítače mají přidělenou vlastní statickou IP adresu uloženou v EEPROM procesoru.

Architektura klient – server

Obr. 6.2: Architektura klient - server

Možnost realizace celého systému pouze v režii jednočipového mikropočítače jsem zavrhl. Tato řešení existují, protože minimalizují výrobní náklady. Většinou jsou však schopná obsloužit současně pouze několik málo požadavků o spojení (1 až 5). Naopak vhodně zvolený server může obsloužit řádově stovky a více spojení, protože má k dispozici patřičný výpočetní výkon, což nám na běžném jednočipovém mikropočítači chybí.

Struktura implementovaných protokolů

Obr. 6.3: Struktura implementovaných protokolů

Funkčnost celého zařízení je demonstrována na příkladě měření venkovní teploty a vizualizace výsledků pomocí webového rozhraní. Komunikace mezi serverem a jednočipovým mikropočítačem je řešena protokolem UDP formou dotaz odpověď. Získaná data se ukládají do databáze, která poskytuje data pro závěrečnou vizualizaci měření.

Sběr dat a vizualizace přes webové rozhraní

Obr. 6.4: Sběr dat a vizualizace přes webové rozhraní

4Volba součástkové základny

V současné době mají konstruktéři mikroprocesorových zařízení na výběr z obrovské škály nabízených elektronických součástek distribuovaných na celosvětovém trhu. Vhodný a nadčasový výběr je třeba založit na důkladně promyšlených požadavcích. Špatná volba součástkové základny může způsobit, že konstrukčně i programově zdařilou realizaci bude třeba v budoucnu přepracovat pro nedostupnost použitých součástek.

4.1Výběr jednočipového mikropočítače

Výběr procesoru (21) je jedním z kritických rozhodnutí, které ovlivňují úspěch či selhání celého projektu. Hlavním naším cílem je volba procesoru s nejnižší pořizovací cenou při splnění všech požadavků stanovených zadáním. Stále více inteligentních periferií je integrováno přímo na čipu. Tato skutečnost se positivně projevuje do nárůstu spolehlivosti (testování již během výroby) a komfortu při ovládání (dedikované instrukce procesoru). Vyloučení externích prvků sebou přináší i snížení požadavků na velikost DPS. Paměti používané ve vnořených systémech dělíme na ty, které zachovávají data po vypnutí napájení (ROM, EPROM, EEPROM, OTP, FLASH) a paměti s opačným chováním (RAM). Poměr pamětí RAM ku ROM se v minulosti pohyboval 1:32, dnešní trend však směřuje k 1:16 (1:8). Více paměti RAM umožňuje použít při vývoji perspektivnějších vyšších programovacích jazyků. Pro aplikace kde se nepředpokládá změna kódu programu jsou vhodné paměti typu ROM a OTP. Paměti EPROM, EEPROM a FLASH jsou dražší (ceny mají klesající tendenci), ale nabízejí možnost přepisu (update firmwaru). K procesorům používajících fázový závěs (PLL) lze připojit krystaly s nižšími kmitočty. Jsme schopni redukovat rušení a vyhnout se stínění, které by bylo potencionálně nutné pro krystaly s vyššími kmitočty nemluvě o možnosti zvýšení výkonu změnou hodnoty PLL. Požadavky bateriově napájených zařízení daly popud ke stále snižující se hodnotě napájecího napětí. V komplexnějších zapojeních však můžeme narazit na problém výskytu několika druhů napájecích napětí, na což je třeba brát patřičný zřetel. Těžiště při samotné realizaci projektu je v oblasti návrhu a testování softwaru. Vhodná volba vývojových a podpůrných nástrojů nám ušetří spoustu zbytečných komplikací. Není důvod se obávat nasazení vyšších programovacích jazyků. Kvalita výsledného kódu u moderních kompilátorů je srovnatelná s programem napsaným v jazyku symbolických adres.

Obecná kritéria pro výběr procesoru
  • integrace pamětí typu RAM, FLASH, EEPROM na čipu,
  • integrace inteligentních periferií na čipu (UART, ADC, PWM, PCA, WATCHDOG, atd.),
  • možnost řízení kmitočtu pomocí fázového závěsu (PLL),
  • snížená spotřeba,
  • snížené vyzařování, rušení (EMI),
  • podpora programování ISP, IAP,
  • 5 V kompatibilní piny u architektur s napájecím napětím < 5 V,
  • dostatečná rezerva v/v pinů,
  • provozní teploty pro vojenské a průmyslové aplikace,
  • návaznost na ostatní použité součástky,
  • dostupnost softwarového vybavení pro návrh programu procesoru,
  • zavedená architektura procesoru,
  • dostupnost procesoru na trhu,
  • perspektiva produkce procesoru (kompatibilní náhrady) v budoucnu,
  • cena,
  • reálné požadavky navrhované aplikace (aplikace směřovaná na výpočty, komunikaci či obojí).
Konkrétní požadavky na vybíraný procesor
  • paměťové nároky aplikace - RAM ≥ 1 kB, FLASH ≥ 20 kB, EEPROM ≥ 512 B,
  • periferie na čipu UART, PCA, WATCHDOG, 16-bit TIMER,
  • implementovaný fázový závěs,
  • snížené vyzařování (EMI),
  • podpora programování ISP,
  • napájecí napětí 3 -5 V (nepřepokládá se použití v bateriových zařízeních),
  • 32 ≥ v/v pinů,
  • 8- popř. 16-bitový procesor,
  • doba vykonání instrukce ≤ 500 ns,
  • provozní teploty pro průmyslové aplikace,
  • cena < 500 Kč,
  • cílová aplikace je směřovaná do komunikační oblasti.
Při volbě procesoru jsem vycházel z produkce následujících firem
Fujitsu

Firma Fujitsu (22) se zabývá vývojem 8, 16 a 32-bitových procesorů se zaměřením na automobilový průmysl. Distribuci pro Českou Republiku provádí firma EBV Elektronik. Výběr procesoru jsem prováděl u řady F²MC-16LX. V případě procesorů firmy Fujitsu se jedná o velice ambiciózní procesory vhodné i pro náročné aplikace. K dispozici je volně plně funkční vývojové prostředí pro návrh aplikací v jazyku C. Programování procesorů je řešeno přes sériový port. Velká nevýhoda je malá prezentace v odborných kruzích a z toho plynoucí obavy vývojářů z něčeho nového. Procesory nejsou distribuovány v maloobchodní síti.

Microchip

Firma Microchip (23) je předním výrobcem riskových procesorů PIC. Většina procesorů je typu OTP a EPROM což, má pozitivní vliv na snížení ceny výsledného zařízení, ale přináší určitá úskalí během vývoje. O nasazení vyšších programovacích jazyků pro náročnější aplikace nelze uvažovat z důvodu velikosti paměti programu. Procesory PIC mají některé velice zajímavé vlastnosti (spotřeba, rychlost zpracování, cena, vyzařování, ...), ale jsou spíše vhodné pro proprietární řešení u aplikací do několika kB kódu. Základní vývojové prostředí je volně k dispozici na webových stránkách firmy Microchip.

Rabbit Semiconductor

Procesory firmy Rabbit Semiconductor (24) ideově vychází z klasické Z80, potažmo z jejího rozšíření Z180. Cílem firmy je prosadit se v oblasti připojování jednočipových procesorů do Internetu. Tomuto cíli je podřízená celá její politika. Při zakoupení vývojového kitu zákazník získá nástroje pro vývoj a psaní aplikací v jazyce C. Kompletní zdrojové kódy pro TCP/IP protokolový zásobník jsou volně k dispozici. Problém při volbě tohoto řešení je, že je postaveno nad procesory jednoho na trhu se zavádějícího výrobce. Firma Rabbit Semiconductor vznikla v roce 1999.

Atmel

Firma Atmel (25) je zavedenou firmou na českém trhu. V posledních letech získala velkou popularitu díky novým klonům procesorů řady 8051 s integrovanou pamětí typu flash a rozšiřujícími periferiemi na čipu. Vývoj firmy u jednočipových mikroprocesorů je směřován do dvou hlavních směrů

  • AVR 8-bit RISC,
  • 8051 kompatibilní procesory.

Procesory AVR jsou určeny spíše do malých aplikací řádově několika kB kódu (obdoba procesorů PIC). Realizace diplomového projektu však předpokládala velikost paměti kódu programu od 20 kB výše, což by znamenalo volit nejdražší vyráběné typy. Výhodou architektury RISC je bezesporu schopnost poskytnout vyšší výpočetní výkon oproti klasické architektuře CISC procesoru 8051. Bohužel několikrát v minulosti se ukázalo, že dostupnost procesorů AVR na trhu byla velice špatná.

Procesory s jádrem 8051. Přestože původní architektura pochází z roku 1980 se těší stále neutuchající oblibě u řady vývojářů. Toto je zapříčiněno tím, že dochází k neustálému obohacování funkcí a vlastností původního procesoru při zachování zpětné kompatibility. Nevýhodou procesoru 8051 je omezení vyplívající z 8-bitové architektury a velikosti adresního prostoru 64kB.

Na Internetu je k dispozici dostatek vývojových nástrojů pro procesory AVR i 8051.

Závěrečný výběr procesoru pro zpracování zadání diplomového projektu

Existuje celá řada dalších výrobců kvalitních procesorů, kteří nebyli uvedeni v předchozím výčtu firem. Při závěrečném rozhodování jsem vybíral z procesorů firmy Fujitsu MB90F546G a Atmel T89c51RD2. Oba procesory jsem měl fyzicky k dispozici, a tak se mi naskytla možnost prakticky provést podrobné seznámení se všemi jejich vlastnostmi.

Vlastnosti procesorů
Typ procesoruMB90F546GT89c51RD2
ArchitekturaCISC 16.bitůCISC 8.bitů
Max. kmitočet16 MHz20 MHz
Doba vykonání instrukce62.5 ns300 ns
Paměť typu RAM8 kB1 kB
Paměť typu FLASH256 kB64 kB
Paměť typu EEPROM----2 kB
ISP programování přes UARTanoano
Násobení kmitočtu (fázový závěs)anoano
Watchdoganoano
Čítačem podporované programovatelné poleanoano
Čítače2 x 16.bitů3 x 16.bitů
Externí přerušení82
Celkem použitelných I/O8132 popř. 48
SPI1---
UART21
ADC8 x 10.bitůne
CAN - BUS2---
Snížení spotřeby a vyzařováníanoano
Napájecí napětí4.5 V - 5.5 V2.7 V - 5.5 V
Orientační cena1000 Kč500 Kč

Co do nabízených vlastností a možností jsou si oba procesory velice podobné. Bezesporu se u MB90F546G jedná o výkonnější z obou procesorů s dostatečnou výkonnostní rezervou. T89c51RD2 patří mezi jedny z posledních typů procesorů uvedených firmou Atmel na trh. Metodika návrhu aplikací ve vyšším programovacím jazyku C je na obou procesorech shodná, což jsem si ověřil při převodu zdrojových kódů mezi oběmi platformami. Závěrečná volba padla na T89c51RD2, protože ho bylo možno přímo zaměnit za procesor AT89S8252 používaný ve vývojovém kitu Web51 (27), který jsem získal na www.hw.cz.

Blokové struktura procesoru T89c51RD2

Obr. 7.1: Blokové struktura procesoru T89c51RD2
4.2Výběr ethernetového řadiče

Situace na trhu s ethernetovými řadiči je mnohem komplikovanější než u dříve popisovaných jednočipových mikropočítačů. Výrobci se zaměřují na cílovou skupinu zákazníků schopných odebrat množství v řádech tisíců kusů a o zbylé zákazníky nejeví nejmenší zájem. Je běžné, že řadiče jsou vyrobeny teprve na základě kontraktu daného výrobce síťových zařízení. Pro kusové množství (vývoj, testovací série, atd.) je nejschůdnější praktikovanou cestou rozebrání funkční síťové karty a osazení získaných součástek do nového zařízení.

Konkrétní požadavky na vybíraný ethernetový řadič
  • 8- nebo 16-bitová datové sběrnice,
  • komunikace přes jednoduché v/v operace,
  • jednočipové řešení ethernetového řadiče,
  • integrovaná paměť RAM pro vysílání a příjem dat,
  • implementace standardů Ethernet II a IEEE 802.3 10Base5, 10Base2, 10BaseT,
  • rychlost 10 Mb/s (half- a full-duplex mode),
  • jumper režim (zaručení funkce i při absenci konfigurační EEPROM),
  • napájecí napětí 5 V,
  • autodetekce připojeného média UTP, AUI, BNC,
  • volně dostupná programová a hardwarová dokumentace.

Při konkrétním výběru jsem se zaměřil na skupinu řadičů kompatibilních s NE 2000 určené pro ISA síťové karty. Novější PCI řadiče redukují nebo zcela postrádají intergrovanou paměť RAM. Vše se řeší pomocí DMA přenosů (šířka slova 16, 32 bitů), což by nepříjemně zkomplikovalo celou realizaci s jednočipovým mikropočítačem. Nesmírnou výhodou NE 2000 kompatibilních řadičů je velké množství volně dostupných informací. Původní záměr použít řadič schopný komunikovat 100 Mb/s ztroskotal na následujících bodech

  • nedostatek volně dostupné dokumentace,
  • dvoučipové řešení,
  • řadiče pouze pro PCI,
  • nedostupnost pro série menší než 1000 kusů.

Mohlo by se zdát při pohledu na širokou škálu nabízených síťových karet, že budeme mít co do činění se spoustou různorodých čipů, opak je však pravdou. Odstraněním reklamních etiket u “low - end” karet nalezneme označení firem Realtek, Cirrus Logic, atd. Sama firma Realtek uvádí na svých stránkách, že v roce 1999 se podílela celými 70 % na celosvětovém trhu ethernetových řadičů. V konstrukcích řešících obdobnou problematiku zde předkládané práce převažuje řadič RTL 8019AS (27), (28). Principiálně jsem nenarazil na rozumný důvod, proč ho tedy nepoužít při praktické realizaci. Jediné zklamání bylo z originální dokumentace firmy Realtek (29), která je čistě zaměřená na popis hardwaru řadiče RTL 8019AS. Výrobcem byla zcela opomenuta problematika interní struktury, softwarová inicializace a ovládání řadiče, kterou jsem musel nastudovat z cizích zdrojů (30).

4.3Podpůrné obvody

Jednočipový mikropočítač a ethernetový řadič potřebují pro svoji základní funkci podpůrné obvody. Jedná se ve skrze o součástky běžně dostupné v maloobchodní síti (kondenzátory, odpory, krystaly, stabilizátor napětí, převodník úrovní TTL/RS232, atd.). Samotná volba je natolik triviální, že zde nebude dále rozebírána a představu o použitých součástkách si je možno udělat z finální realizace. Vzhledem k miniaturizaci a zvýšení spolehlivosti celého zařízení je vhodné použít součástky v provedení SMD.

4.4Zajištění hardwarové části projektu

Na základě závěrů rozvahy o volbě vhodné součástkové základny jsem byl postaven před problém samotné fyzické realizace. Zde je třeba vyzvednout nutnost skloubení tvůrčího konstrukčního myšlení a manažerských schopností pro řízení projektu nezbytně nutných pro zvládnutí této části diplomového projektu.

Znamenalo to provést následující kroky

  • zabezpečení všech součástek,
  • návrh, výroba a osazení DPS,
  • oživení hardwaru a postoupení k softwarové realizaci projektu.

Již z dříve mnou realizovaných projektů jsem věděl, že vše v požadované kvalitě adekvátní zpracovávanému tématu nebude možno řešit na půdě VA v Brně. Materiální zabezpečení součástek v principu znamenalo získání síťové karty s obvodem RTL 8019AS a její demontáž. Zbytek součástek by byl získán nákupem v maloobchodní síti případně poštou na dobírku s maximální dodací lhůtou do pěti týdnů.

Návrh desky plošných spojů by vycházel z doporučeného zapojení obvodu RTL 8019AS a procesoru T89c51RD2. Na Internetu jsem získal několik dalších referenčních zapojení pro oba obvody, které stačilo aplikovat a připravit potřebné podklady pro výrobu.

První alternativní řešení bylo použít hotovou síťovou kartu a k ní navrhnout propojovací modul s dvěmi ISA sloty. Do druhého slotu by se zasunula deska s procesorem a rozšiřujícími periferiemi. Toto řešení jsme byli schopni realizovat v podmínkách dostupných na VA. Vzniknul by modulární systém s pevně definovaným rozhraním a v závislosti na požadovaném výkonu by bylo možno měnit desku s procesorem. Nevýhodou této varianty je, že celkové řešení ztrácí na kompaktnosti.

Druhé nabízející řešení bylo použití již hotové konstrukce. Přibližná úspora času se pohybuje minimálně kolem 6 až 8 týdnů, které běžně trvá dodání součástek, návrh, výroba a osazení DPS. Dalším nezanedbatelným faktorem je snížení celkových nákladů na vývoj a financování diplomového projektu. Pokud vezmeme v potaz, že výsledná konstrukce, kterou jsem chtěl realizovat byla na 80 % shodná s tím co bylo možné fyzicky do týdne dodat nebylo o čem přemýšlet.

Výslednou volbou byl na kit Web51 prodávaný na www.hw.cz odkud jsem též získal procesor T89c51RD2, v té době nedostupný v běžné maloobchodní síti.

4.5Hardware Web 51 - DESIGN KIT
Základní parametry hardwaru Web51
  • síťový řadič RTL 8019AS s výstupem přes transformátor na twisted pair kabel,
  • procesor ATMEL T89c51RD2 - 64 kB FLASH, 1280 B RAM, 2 kB EEPROM, frekvence 22,1184 MHz,
  • standardně se používá ISP programování přes sériový port,
  • vnější I²C EEPROM od 24C32 (4k x 8) do 24C1024 (64k x 8),
  • MAX 232 osazen na základní DPS,
  • plošný spoj DESIGN verze obsahuje malé univerzální pole pro osazení jednoduché periférie a dvě LED diody se dvěmi tlačítky pro základní ovládání,
  • volně je k dispozici 16 I/O linek (celý port P1, část P3 a dva piny portu P2),
  • stabilizátor napětí 7805 pro vnější napájecí adaptér.
Blokové schéma kitu
Blokové schéma kitu Web51

Obr. 7.2: Blokové schéma kitu Web51
Schéma zapojení kitu
Schéma zapojení kitu Web51 verze 3.0

Obr. 7.3: Schéma zapojení kitu Web51 verze 3.0
Ethernetový řadič RTL 8019AS

Ethernetový řadič RTL 8019AS je osazen v minimalizovaném zapojení s konfigurací nastavenou pevně v jumper režimu. Odpor R7 uzemňuje pin IOCS16 a přepne při resetu obvod do osmibitového režimu. Vizuální sledování stavu komunikace na ethernetovském rozhraní umožňují LED diody D3 a D4, připojené přes R5 a R6. Dioda D3 indikuje příjem paketu, D4 indikuje kolizi na přenosovém médiu. Obvod má samostatný krystalový oscilátor tvořený krystalem Q2 = 20 MHz a kondenzátory C7 a C8.

Obvod RTL8019AS je zapojen v minimalizované verzi, tzn. bez externí paměti EEPROM 93C46, kterou používá např. síťová karta pro uložení konfigurace, MAC adresy, atd. V použitém řešení jsou tyto údaje uloženy přímo v EEPROM procesoru popř. ve firmware CPU (MAC adresa) a zčásti jsou realizovány přepnutím karty do jumper režimu. Celkem je třeba nastavit 16 signálů a většina je jich realizována výrobcem čipu jako sdílené s jiným signálem. Princip sdílení spočívá v tom, že ve stavu reset, kdy se vývody sloužící při normální funkci jako výstupy přepnou do třetího stavu, je možno přes jednoduché odporové děliče nastavit konfiguraci. Tyto děliče jsou realizovány odpory 100 kΩ proti zemi, realizovanými ve struktuře obvodu, a přes externí odpory 10 kΩ proti +5V. Těmito přepínači je nastavována adresa boot ROM, bázová I/O adresa, přerušení a typ použitého média. Neosadíme-li tyto přepínače dostáváme tyto implicitní hodnoty

  • boot ROM (BS4..BS0 = 00000) - disabled,
  • bázová I/O adresa (IOS3..IOS0 = 0) 300h,
  • přerušení (IRQ2..IRQ0 = 0) - int 2/9,
  • medium (PL1..PL0 = 0) TP/CX auto detekce se zapnutým 10BaseT linkovým testem,
  • Stav přepínače PnP je nezajímavý, vzhledem k přepnutí čipu pomocí JP = 1 do jumper módu. Přepínač AUI přepíná při autodetekci režim AUI/BNC a je rovněž nezajímavý.
Síťová část

UTP rozhraní je integrováno přímo na desce Web51. Celé zapojení je důsledně symetrizováno. Relativně nejsložitější je na celém zapojení obvod 10BaseT tranceiveru. Obvod RTL 8019AS v sobě obsahuje veškeré digitální a analogové obvody mimo vstupních/výstupních filtrů a oddělovacích transformátorů. Obvod proto vyžaduje připojení externího hybridního filtru/transformátoru. Doporučovaným obvodem je obvod 20F001N.

Schéma 20F001N

Obr. 7.4: Schéma 20F001N

Jak je vidět, obvod obsahuje dvojici dolních propustí s frekvencí 17 MHz a dva oddělovací transformátory. Toto zapojení slouží k odstranění vyšších harmonických vznikajících vlivem toho, že výstup z obvodu má digitální charakter a je potřeba mu "zaoblit" hrany tak, aby co nejvíce připomínal sinusovku a ne obdélník. Odfiltrováním harmonických signálů se přes UTP kabeláž přenáší pouze užitečný signál a nikoliv nežádoucí rušení.

Oproti demonstračnímu zapojení RTL 8019AS obvodu firmy Realtek bylo zapojení tohoto hybridu doplněno na výstupu přizpůsobovacím impedančním a filtračním obvodem složeným z R3/C5 a R4/C6. Řešení vstupních obvodů bylo důsledně symetrizováno. Kondenzátory C1 až C4 uzemňují pro střídavý signál středy oddělovacích transformátorů a slouží k potlačení nesymetrických rušících signálů.

Na straně vysílače signál prochází dvojicí RC článků R3/C5 a R4/C6 sloužících k impedančnímu přizpůsobení a základní filtraci vysílaného signálu. Signál dále prochází hybridním filtrem, popsaným v předchozí části na výstup, tvořený konektorem CON2.

Přijímaný signál prochází z konektoru CON2 přes hybridní filtr přímo do obvodů řadiče. Přijímač je na straně řadiče impedančně zakončen pomocí odporů R1 a R2. Tyto odpory by měly mít impedanci rovnu polovině impedance vedení, tj. 100R/2 = 50R.

Kondenzátory C1 až C4 slouží k potlačení nesymetrických rušivých signálů a uzemňují pro střídavý signál středy oddělovacích transformátorů. Kondenzátor C16 pro střídavý signál spojuje země číslicové části a UTP interfacu.

Zdroj

Zdroj integrovaný na desce vychází z klasického zapojení s obvodem 7805. Napájecí napětí z externího adaptéru je vedeno přes konektor CON4 na diodu D5 chránící celou desku před přepólováním na filtrační elektrolytický kondenzátor C101.

Obvod 7805 je v doporučeném zapojení uváděném výrobcem, C102 a C103 blokují celé zapojení před zákmity, dioda D7 chrání stabilizátor před poškozením při poklesu vstupního napájecího napětí pod úroveň napětí na výstupu. Kondenzátor C104 slouží jako hlavní výstupní filtrační kondenzátor. SMD keramické kondenzátory C105 a C106 blokují napájení procesoru a obvodu RTL 8019AS proti zákmitům. Blokující kondenzátor C108 je buď v keramickém nebo lépe speciálním odrušovacím pouzdře.

Procesor

Reset procesoru je tvořen v nejjednodušší verzi pouze RC obvodem D6, R13 a C11. Kondenzátor C11 resetuje procesor po zapnutí napájení. Dioda D6 slouží k vybití C11 při resetu zařízení krátkým vypnutím napájecího napětí. Při stavbě se ukázalo vhodné nespoléhat na integrovaný odpor v procesoru a doplnit tuto kombinaci ještě odporem cca 10 kΩ paralelně k diodě D6. Jako alternativní řešení lze použít integrovaný resetovací obvod DS1833 nebo ekvivalentní náhradu v pouzdře TO92.

Oscilátor je tvořen krystalem Q1 a kondenzátory C9 a C10. Použitý krystal je v miniaturním provedení HC49U/S.

K procesoru je připojena I2C EEPROM paměť. I²C sběrnice je zakončena pull up odpory R8 a R9. Jejich hodnota závisí na kapacitě a zatížení celé sběrnice. Je-li sběrnice použita externě je vhodné ji zakončit i na druhém konci, další dvojicí pull up odporů.

Komunikaci procesoru s okolím zabezpečuje sériová linka řízená interním UARTem. Logické úrovně TTL a RS232 jsou mezi sebou převáděny obvodem IC3. Obvod MAX232 či jeho ekvivalent v sobě obsahuje dvojici převodníků TTL/RS232, dvojici převodníků RS232/TTL a měnič 5V/±10V. Zabudovaný měnič napětí na principu nábojové pumpy potřebuje ke své činnosti pouze čtyři externí kondenzátory C12 až C15. Zapojení umožňuje doplnit komunikaci přes TxD/RxD i o jednoduché řízení toku dat pomocí signálů RTS/CTS. Další rozšiřování a programování procesoru je řešeno přes sériový port.

Vizuální komunikaci mezi uživatelem a programem v procesoru zabezpečují LED diody D1 a D2. Proud diodami je omezen pomocí sériových odporů R10 a R11.

5Softwarová realizace diplomové práce

Těžištěm diplomového projektu se stala softwarová implementace síťových protokolů do jednočipového mikropočítače Atmel T89c51RD2. Komplexnost celého projektu spolu s požadavky na rozšiřitelnost, modulárnost a transparentnost celého řešení vedly k použití vyššího programovacího jazyka C. Kvalitní překladač jazyka C pro jednočipové mikropočítače je v dnešní době schopen zcela nahradit pracné psaní zdrojových kódů v jazyku symbolických adres.

Softwarová realizace byla rozdělena do následujících kroků

  • seznámení s procesorem T89c51RD2 (architektura, periferie, programování, …),
  • návrh ovladače síťové karty s ethernetovým řadičem RTL 8019AS,
  • implementace síťových protokolů (ARP, IPv4, ICMP, UDP),
  • měření teploty s procesorem T89c51RD2,
  • UDP komunikace na bázi BSD soketů mezi serverem a procesorem T89c51RD2,
  • webové rozhraní pro vizualizaci naměřených teplot.
5.1Seznámení s procesorem T89c51RD2

Cílem tohoto bodu diplomové práce bylo získat představu o praktických možnostech procesoru a podpůrných nástrojů pro vývoj jednočipových aplikací. Jednalo se o napsání jednoduché aplikace, naprogramování procesoru metodou ISP a ověření správnosti funkce. Pod jednoduchou aplikací si představme schopnost ovládat zvolenou integrovanou periferie procesoru (UART, PCA, WATCHDOG, atd.). Závěrem bylo vybrání nejvhodnějších nástrojů a metodiky použití vedoucích k rychlému splnění zadání.

Pro vývoj aplikací jsem použil překladače C51-Keil (32) a SDCC (33). Práce s překladači je obdobná práci, kterou známe na PC s architekturou x86. Výsledný kód programu je vygenerován ve formě Intel-HEX a lze jej použít k naprogramování procesoru.

Procesor T89c51RD2 se programuje paralelně v programátoru nebo pomocí zabudované funkce ISP přímo přes sériové rozhraní PC. Paralelní programování jsem použil pouze pro nahrání nového zavaděče (bootloaderu) s podporou programování integrovaných pamětí FLASH a EEPROM. Originální software FLIP (Flexible In-system Programmer) firmy Atmel neumožňoval programování EEPROM a ovládání bylo zbytečně pomalé. Tento stav vyústil v návrh vlastní aplikace RD2- Flasher pro prostředí MS Windows odstraňující tyto nedostatky. Procesor lze programovat v závislosti na osazeném krystalu od 4800 do 115200 Baud/s.

Ověření správnosti funkce jsem rozdělil na soft- a hardwarovou část. Softwarová část je reprezentována výstupem dat na sériový port a zobrazením v terminálovém okně na PC. Správnost hardwarových funkcí jsem ověřoval digitálním osciloskopem HP 54645D.

5.2Návrh ovladače ethernetového řadiče RTL 8019AS

Naprogramování ovladače ethernetového řadiče RTL 8019AS byla jedna ze stěžejních částí DP. Ovladač slouží pro příjem a vysílání dat podle standardu Ethernet II a zahrnuje v sobě komunikaci jednočipového mikropočítače s řadičem a všemi ostatními zařízeními připojenými do kolizní domény.

Bylo nutné zvládnout následující kroky

  • studium literatury a stávajících implementací pro NE 2000 kompatibilní řadiče,
  • monitorování komunikace v sítích Ethernet II.,
  • základní v/v operace u řadiče RTL 8019AS,
  • inicializace řadiče RTL 8019AS,
  • vysílání a příjem dat,
  • vytvoření rozhraní pro vyšší vrstvy v rámci OSI-RM.

Od prvopočátku jsem se snažil vyhnout bezhlavému programování jednočipového mikropočítače a hledal jsem alternativní řešení jak zvládnout nelehký problém napsání ovladače.

První možnost bylo použít hw-emulátor. Výsledný kód z kompilátoru ve formě absolute object module file (OMF 51) se nahraje do hw-emulátoru, který je ho schopen patřičně interpretovat. OMF 51 vytváří vazbu mezi výsledným kódem programu (Intel-HEX) a zdrojovými kódy programu (přímé krokování ve zdrojovém kódu jazyka C a ASM). Tato varianta předpokládá dostupný hw emulátor a funkční DPS osazenou procesorem, řadičem a UTP rozhraním.

Druhá možnost vycházela z úvahy, že komunikace s řadičem RTL 8019AS je založena na jednoduchých v/v operacích. Proč tedy nepoužít funkční síťovou kartu a neodladit nejkritičtější části kódu přímo na PC? Tuto variantu jsem zvolil, protože jsem z počátku neměl k dispozici vývojový kit Web51. Programování na PC skýtalo nejmenší úskalí v porovnání se všemi ostatními možnostmi a osvědčilo se i při psaní dalších částí diplomové práce. Funkční zdrojové kódy jsem na závěr doplnil o části specifické pro finální překladač a architekturu x51.

5.2.1Literatura pro tvorbu ovladače

Originální dokumentace firmy Realtek (29) je čistě zaměřená na popis hardwaru řadiče RTL 8019AS. Výrobcem byla zcela opomenuta problematika interní struktury, softwarová inicializace a ovládání řadiče, kterou jsem musel nastudovat z cizích zdrojů.

Popis interní struktury NE 2000 kompatibilních řadičů jsem získal z informací zveřejněných firmou National Semiconductor (30). Získané materiály popisují vše potřebné pro porozumění vlastní funkce a programování řadiče.

Jako referenční zdroj kódu ovladače jsem použil obecný ovladač pro NE 2000 karty v operačním systému Linux (31). Uvedený zdrojový kód demonstruje kolik hardwarových chyb byli schopni výrobci NE 2000 kompatibilních karet napáchat. U řadiče RTL 8019AS se jedná o korektní implementaci a nebylo třeba provádět žádné dodatečné softwarové opravy.

5.2.2Monitorování komunikace v sítích Ethernet II.

Pro monitorování provozu na síti jsem použil PC s běžnou síťovou kartou v promiskuitním režimu. Z principů sítě Ethernet víme, že libovolný uživatel má neomezený přístup k datům přenášených v rámci jedné kolizní domény.

Na Internetu je možno získat celou řadu programů (34),(35) schopných zaznamenat, zobrazit a zpětně analyzovat vše co bylo vysíláno na síti. Tyto programy jsou označovány anglickým termínem sniffers. Získané ethernetové rámce se dají zobrazit ve formě výpisů ASCII či HEX. Dále můžeme vidět data rozložená do jednotlivých vrstev OSI-RM s doplňujícími komentáři k jednotlivým položkám o co se jedná. Většina programů též provádí automatické přepočítávání kontrolních součtů. Lze definovat filtrovací pravidla pro monitorování příjmu a vysílání mezi jednotlivými počítači. Systém filtrů umožňuje volit pouze protokoly, které aktuálně sledujeme a odseparovat je ze směti získané z reálného provozu na síti.

Softwarové řešení je velice levné v porovnání se speciálními síťovými analyzátory, které jsou navíc schopné provádět měření na fyzické vrstvě, což v našem případě nebylo nutné. Ukázky praktického použití snifferu jsou uvedeny dále v textu zabývajícím se problematikou implementace jednotlivých síťových protokolů.

5.2.3RTL 8019AS základní v/v operace

Jednočipový mikropočítač provádí následující v/v operace při komunikaci s řadičem

  • čtení a zápis registrů,
  • čtení a zápis paměti řadiče pomocí DMA kanálu,
  • programový reset řadiče.
Registry řadiče RTL 8019AS

Obr. 8.1: Registry řadiče RTL 8019AS

Celý řadič je ovládán přes čtyři banky registrů. Číslo registru je možno zadávat přímo, pomocí adresových vývodů A0..A4. Pro řízení a čtení stavu řadiče je použito prvních 16 registrů 0..15, další osmice 16..23 reprezentuje ve skutečnosti pouze jediný datový registr sloužící ke komunikaci s DMA. Zbývající osmice 24..31 je rovněž ve skutečnosti jediným registrem a slouží k programovému resetu čipu. Jednotlivé banky registrů není možno adresovat přímo, ale pouze pomocí 2 bankovacích bitů v registru 0, který je přístupný ve všech čtyřech bankách registrů.

Řadič v sobě obsahuje 16 kB RAM organizované ve formě 8 kB x 2. V osmibitovém režimu zapojení řadiče je k dispozici pouze 8 kB RAM. Paměť je z hlediska přístupu rozdělena na jednotlivé stránky o velikosti 256 B. Je-li paket menší než je násobek 256, je zarovnán na celou stránku.

Mapa paměti řadiče RTL 8019AS

Obr. 8.2: Mapa paměti řadiče RTL 8019AS

Poslední používanou v/v operací je programové resetování řadiče, které se vyvolá sekvencí čtení s následujícím zápisem na adresu resetovacího registru.

V/V operace jsou prováděny následujícími funkcemi ovladače

  • RTL8019_Write_Memory,
  • RTL8019_Read_Memory,
  • RTL8019_Read_Frame_Header,
  • RTL8019_Reset.
5.2.4Inicializace řadiče RTL 8019AS

Po zapnutí napájecího napětí je řadič ve stavu klidu (neschopný příjmu ani vysílání). Inicializace musí proběhnout podle pevně definovaných pravidel. Nedodržením předepsaného postupu se vystavujeme výskytu hazardních stavů. Detailní postup inicializace je popsán v lit. (30), (31).

Hlavní body inicializace řadiče RTL 8019as

  • hw a sw reset řadiče,
  • volba přístupového režimu 8 nebo 16 bitů,
  • nulování délky dat DMA přenosu,
  • přepnutí do monitorovacího a smyčkového módu (loopback),
  • nastavení vysílacího a přijímacího bufferu,
  • nastavení MAC adresy,
  • nastavení skupinové (multicast) adresy,
  • povolení vysílání a příjmu dat,
  • nulování požadavků o přerušení.

Inicializaci řadiče provádí funkce ovladače RTL8019_Init.

5.2.5Vysílání dat řadičem RTL 8019AS

Paměť řadiče se programově dělí na vysílací a přijímací část. Vzhledem k tomu, že řadič neobsahuje FIFO pro celý vysílaný rámec a vysílá rámec pomocí DMA kanálu z paměti, je nutno před sestavováním dalšího rámce do paměti řadiče počkat na skončení předchozího vysílání. V aplikacích kde může být toto čekání nežádoucí, lze nadefinovat více vysílacích bufferů, které se průběžně plní. Rámce < 64 B je třeba natáhnout na požadovanou minimální délku ethernetového rámce (chybějící paměťové místo je automaticky doplněno řadičem). Popisovaný ovladač využívá pouze jeden vysílací buffer, který leží na adresách 4000h - 45FFh a je tedy schopný odeslat max. 1536 B.

Sestavený ethernetový rámec v paměti řadiče RTL 8019AS

Obr. 8.3: Sestavený ethernetový rámec v paměti řadiče RTL 8019AS

Vysílání rámce

  • zápis rámce ve formátu Ethernet II. do paměti řadiče,
  • doplnění na minimální velikost u rámců < 64 B,
  • nastavení první vysílané stránky (Transmit Page Start Register),
  • počet vysílaných dat (Transmit Byte Count Register),
  • vyslání rámce.

Na vysílání rámce se podílejí následující funkce ovladače

  • RTL8019_Transmit_Frame,
  • RTL8019_Write_Memory,
  • RTL8019_Trigger_Send.
5.2.6Příjem dat řadičem RTL 8019AS

Přijímací část paměti je organizována jako kruhový buffer. Činnost kruhového bufferu řídí celkem 4 registry. První dvojice registrů, Page Start Register a Page Stop Register, reprezentuje hranice tohoto kruhového bufferu. Vyjdeme-li z obvyklé organizace paměti, bude jejich nastavení následující

Page Start Register46h (4600h)adresa první stránky
Page Stop Register60h (6000h)adresa poslední stránky + 1

Do tohoto bufferu ukazuje dvojice ukazatelů, reprezentovaných registry Boundary Register a Current Page Register. První z nich Boundary Register je registrem chránícím data nepřečtená z kruhového bufferu. Přijímač nesmí ukládat data do paměti nad tuto hranici. Při přečtení dat z obvodu je proto nutno jeho obsah nastavit vždy na adresu stránky o jednu menší než je adresa nepřečtených dat. Druhý z nich, Current Page Register je registrem, určujícím kam se budou zapisovat přijímaná data.

Příjem ethernetového rámce

Obr. 8.4: Příjem ethernetového rámce

Přijímač po přijmutí synchronizační sekvence zahájí přenos do FIFO fronty, současně s přenosem do FIFO je prvních šest bytů kontrolováno na schodu s MAC adresou uloženou v registrech obvodu, popř. na multicast adresu. Rámec s nevyhovující adresou je zahozen, v opačném případě je po naplnění FIFO do naprogramovaného limitu přesunut do kruhového bufferu. Jednotlivé rámce jsou v kruhovém bufferu uvozeny speciální hlavičkou obsahující následující položky.

  • stavové slovo (receive status) 1 byte,
  • pointer na další stránku v kruhovém bufferu (next packet pointer) 1 byte,
  • délka přijatého rámce (receive byte count) 2 byty.

Za hlavičkou následuje přijatý rámec ve formátu Ethernet II.

Přijatý ethernetový rámec v paměti řadiče RTL 8019AS

Obr. 8.5: Přijatý ethernetový rámec v paměti řadiče RTL 8019AS

V případě, že dojde k narušení integrity (přetečení) přijímacího bufferu, musí ovladač provést přesně definovaný postup oživení, který spočívá v

  • zastavení vysílání,
  • přepnutí do smyčkového módu (loopback),
  • restart řadiče,
  • vyčtení dat z přijímacího bufferu,
  • obnovení vysílání.

Detailní popis jednotlivých kroků lze nalézt v lit. (30).

Na příjmu rámce se podílejí následující funkce ovladače

  • RTL8019_Receive,
  • RTL8019_RX_Overflow,
  • RTL8019_Read_Frame_Header,
  • RTL8019_Read_Memory.
5.2.7Rozhraní pro vyšší vrstvy v rámci OSI-RM

Komunikace mezi jednotlivými vrstvami modelu OSI-RM je velice triviální. Ve stávající verzi hardwaru je k dispozici pouze 1024 B RAM, která je globálně sdílená mezi jednotlivými vrstvami. Vysílání a příjem dat je řešen sekvenčně. Přijatý rámec je přenesen z paměti řadiče do externí paměti procesoru, kde dojde ke zpracování a vytvoření odpovědi. Na závěr je odpověď zapsána zpět do řadiče a odvysílána. Zvolené řešení je dané stávající velikostí dostupné paměti a mělo by doznat v budoucnu změn. Pro dosažení optimální funkce protokolového zásobníku TCP/IP na bázi BSD soketů se počítá na jedno spojení 8 kB RAM.

Vysílání a příjem je realizován na principech popsaných v předchozím textu. Při vysílání vyšší vrstva sestaví do globální paměti data určená k vysílání (rámec Ethernet II se zapouzdřeným protokolem vyšší vrstvy). Následně funkce RTL8019_Transmit_Frame zapíše data do paměti řadiče a odešle je. Čtení přijatého rámce provádí funkce RTL8019_Receive v opačném pořadí než je tomu u vysílání.

5.3Implementace síťových protokolů

Volba rozsahu implementovaných protokolů vycházela z celkové koncepce zvoleného řešení popsaného v kapitole 6. Vybrané protokoly měly pokrýt oblast referenčního modelu OSI-RM. Na jednotlivých vrstvách byly implementovány následující protokoly

Linková vrstva (data link layer)
  • vysílání a příjem rámců podle standardu Ethernet II.,
  • ARP - Address Resolution Protocol,
Síťová vrstva (network layer)
  • IP verze 4 - Internet Protocol,
  • ICMP - Internet Control Message Protocol,
Transportní vrstva (transport layer)
  • UDP - User Datagram Protocol,
Aplikační vrstva (application layer)
  • TEMP - proprietární protokol pro měření teploty.

Teoretický základ potřebný pro samotnou implementaci je uveden v kapitole 5. Standardní síťové protokoly. V následujícím textu jsou uvedeny informace spojené s praktickou realizaci a problémy, kterým bylo třeba čelit na jednočipovém mikropočítači T89c51RD2.

5.3.1Address Resolution Protocol

Implementace protokolu ARP odpovídá plně požadavkům pro použití zařízení v sítích Ethernet II. Zařízení je schopné vyslat žádost o MAC adresu a odpovědět na jemu směřovaný dotaz. Počet záznamů v ARP cache je limitován dostupnou pamětí a bylo zvoleno číslo dva.

ARP dotaz

Obr. 8.6: ARP dotaz
ARP odpověď

Obr. 8.7: ARP odpověď
5.3.2Internet protokol verze 4

Realizovaná implementace má striktnější požadavky na formát přijatého datagramu. Všechny datagramy nesplňující následující požadavky nejsou dále zpracovány

  • délka IP hlavičky 20 B,
  • datagram není fragmentován na více částí,
  • max. velikost datagramu ≤ 250 B,
  • správný kontrolní součet.

Přijaté IP datagramy jsou podrobeny kontrole integrity formou výpočtu kontrolního součtu. Výpočet CRC je uveden v RFC 1071 (13) a je relativně výpočetně náročný pro 8-bitový mikropočítač. U jednočipového mikropočítače jsem se snažil proto tyto operace co nejvíce optimalizovat (proměnné v interní datové paměti) a tím snížit dobu odezvy celého systému.

5.3.3Protokol řídících hlášení ICMP

Protokol řídících hlášení ICMP byl implementován z důvodu diagnostiky připojeného zařízení. Velký důraz jsem kladl na zpracování odezvy posílané příkazu ping na PC. Tento příkaz se pro svou jednoduchost často používá pro demonstraci kvality a doby odezvy systému při uměle vygenerované zátěži. Klasický výpočet CRC u ICMP byl nahrazen modifikovaným algoritmem popsaným v RFC 1624 (18).

ICMP - echo request

Obr. 8.8: ICMP - echo request
ICMP - echo reply

Obr. 8.9: ICMP - echo reply
5.3.4User Datagram Protocol

Protokol UDP jsem upřednostnil před TCP pro jeho jednoduchost. Vytýkané nectnosti nespojové UDP komunikace jsem ošetřil na úrovni aplikace běžící na serveru. Ve finálním řešení splynula transportní a aplikační vrstva v jeden celek. Naměřená teplota se přímo zapouzdřuje do UDP datagramu a posílá na server.

UDP datagram - dotaz na aktuální teplotu

Obr. 8.10: UDP datagram - dotaz na aktuální teplotu
UDP datagram - odpověď s údajem o aktuální teplotě

Obr. 8.11: UDP datagram - odpověď s údajem o aktuální teplotě

6Měření teploty procesorem T89c51RD2

Venkovní teplota je snímána čidlem SMT160-30 (36), což je převodník teplota střída s převodním vzorcem DC = 0,32 + 0,0047 · t, kde DC je střída v rozsahu hodnot 0 - 1 (0 - 100 %) a t je teplota ve stupních Celsia.

Vlastnosti čidla SMT160-30
  • rozsah měřených teplot - 45 až 130 °C,
  • absolutní přesnost čidla ±0,75 °C,
  • linearita výstupu 0,2 °C,
  • digitální výstup,
  • délka kabelu k měřicímu čidlu až 20 metrů,
  • napájení 5 V,
  • odběr proudu typicky 15 mA, maximálně 20 mA,
  • cena obvodu je cca 100 Kč pro jeden kus.

Střída se měří na vstupu čítačem podporovaného programovatelného pole (PCA) jednočipového mikropočítače T89c51RD2. Přerušení je vyvoláno od náběžné a sestupné hrany signálu na pinu P1.3.

Měření střídy pomocí PCA

Obr. 8.12: Měření střídy pomocí PCA
Odvození vzorce pro výpočet teploty

T1 je stav log. 1 a T0 stav log. 0. Z důvodu usnadnění aritmetických operací na jednočipovém mikropočítači je odvozený vzorec na závěr upraven pro výpočty v celočíselné aritmetice. Výsledná teplota je v textovém formátu ASCII zapouzdřena do UDP datagramu a odeslána na server. Komunikace mezi jednočipovým mikropočítačem a serverem je řešena formou dotaz - odpověď.

Formát řetězce s údaji o teplotě

t = ±000.0 °C

Funkce programu byla ověřena simulací střídy signálu pro celý teplotní rozsah na funkčním generátoru METEX MS-9160.

6.1UDP komunikace na bázi BSD soketů

V programech používajících TCP/IP je uplatněna architektura klient-server. Server naslouchá a očekává navázání spojení (TCP) nebo příchod datagramů s žádostmi (UDP) ze strany klienta. Klient aktivně navazuje komunikaci s již čekajícím serverem a po obousměrné výměně dat se komunikace na popud jedné strany ukončí.

Aby bylo možné na jednom počítači provozovat více serverů používajících stejný protokol (TCP nebo UDP), je nutné nějakým způsobem tyto služby rozlišit. K tomu se používají tzv. porty. Port je číslo od 1 do 65535. Při komunikaci pomocí TCP nebo UDP má každá strana kromě IP adresy stanovené číslo portu. Dvojice IP adresa a port vytváří takzvaný soket. Pro navázání spojení je tedy nutný jeden soket na lokálním a jeden na vzdáleném počítači. Zatímco servery zpravidla naslouchají na předem stanoveném portu, klienti si mohou číslo lokálního portu sami zvolit.

V každém okamžiku může existovat nejvýše jedno spojení používající určitý protokol a dvojici soketů i v případě, že z víceuživatelského počítače jsou navázána dvě spojení týmž protokolem na tentýž vzdálený počítač (tj. na tentýž vzdálený soket), musí se obě spojení lišit alespoň číslem lokálního portu.

Berkeleyovské sokety (BSD sockets) (37), jsou jednou z nadstaveb API nad komunikačními protokoly. Sokety slouží jako nadstavba nad internetovými protokoly, dále nad tzv. Unix domain protokoly, které slouží pro komunikaci mezi procesy na jednom počítači a nad protokoly XNS (Xerox Network Systems).

Blokující a neblokující funkce

Funkce pro práci se sokety je možné rozdělit na blokující a neblokující. Blokující jsou takové, které v některých případech čekají na určitou událost (příchod dat po síti, otevření nebo uzavření spojení apod.). Naproti tomu neblokující funkce provedou požadovanou akci (jestliže došlo k nepředvídaným okolnostem, nastaví například chybový kód) a vždy ihned skončí. Je zřejmé, že musí být nějakým způsobem zajištěno, že blokující funkce někdy skončí (i když žádná data nepřijdou apod.). K ukončení funkce zpravidla dojde při překročení jistého časového limitu. Tento limit může být zadán explicitně (parametrem) nebo implicitně (globální proměnnou nebo konstantou).

Schéma komunikace mezi FreeBSD serverem a T89c51RD2

Komunikace mezi centrálním serverem a jednočipovým mikropočítačem probíhá na bázi UDP datagramů. Na straně jednočipového mikropočítače naslouchá služba na portu 2000. Každou minutu přijme požadavek o aktuální teplotu vyslanou programem UDP - teploměru spuštěným na FreeBSD serveru. Při práci se sokety jsou použity neblokující funkce pro čtení a zápis dat. Postupně se načte z každého zařízení deset teplot, vypočte průměr a výsledek reprezentuje teplotu za danou minutu. Kód programu udp_temp.c realizující popsanou problematiku je uveden jako součást příloh.

Schéma komunikace klient - server s BSD sokety

Obr. 8.13: Schéma komunikace klient - server s BSD sokety
Formát použitých datagramů s informacemi o teplotě

Požadavek o aktuální teplotu - server vyšle prázdný UDP datagram na port 2000 jednočipového mikropočítače. Zde se provede kontrola integrity přijatého datagramu. V případě, že je vše v pořádku, odešle se datagram s odpovědí obsahující aktuální teplotu.

Odpověď s aktuální teplotu - odpověď jednočipového mikropočítač obsahuje v datové části UDP datagramu textový řetězec ve formátu ASCII popsaný v kapitole 5.3.4.

Získaná teplota se ukládá do Round Robin databáze a každý den je reprezentován jednou databází. Jména jednotlivých souborů jsou odvozena podle následujícího pravidla YYYYMMDD.RRD, kde jednotlivé položky znamenají

  • YYYY - rok (year),
  • MM - měsíc (month),
  • DD - den (day),
  • RRD - označení Round Robin databáze.
Embedded Ethernet ver 0.1.0 - PC Mar 26 2002, 12:32:27
Temperature source: arrow.vabo.cz
17-05-2002 09:51:00 : 23.9 °C
17-05-2002 09:52:00 : 25.1 °C
17-05-2002 09:53:00 : 23.6 °C
17-05-2002 09:54:00 : 23.2 °C
17-05-2002 09:55:00 : 23.7 °C
17-05-2002 09:56:00 : 23.1 °C
17-05-2002 09:57:00 : 22.1 °C
17-05-2002 09:58:00 : 21.9 °C
17-05-2002 09:59:00 : 21.9 °C
17-05-2002 10:00:00 : 21.8 °C
17-05-2002 10:01:00 : 22.8 °C
Obr. 8.14: Výstup programu na terminál při aktualizaci databáze

Databáze je vytvořena vždy na začátku nového dne a hodnoty jsou průběžně aktualizovány každou minutu. Detailní popis vlastností a práce s Round Robin databází (RRD) je uveden v lit. (39).

6.2Webové rozhraní pro vizualizaci dat

Naměřené hodnoty uložené v databázi jsou vhodné k numerickému zpracování. Pro člověka je však mnohem názornější sledovat průběh teplot ve formě xy - grafu. Vytvořením vhodného webového rozhraní lze tyto informace volně sdílet komukoliv na Internetu. Celá filozofie řešení diplomového projektu postavená na OS FreeBSD vedla jednoznačně k použití webového serveru Apache (40) a skriptovacího jazyka PHP (41).Velká výhoda Apache a PHP spočívá v jejich nezávislosti na používaných platformách. Výsledkem běhu PHP skriptu je obyčejný HTML dokument, který umí zobrazit každý prohlížeč (odpadají problémy s kompatibilitou).

RRDTool nástroj pro práci s Round Robin databází umožňuje přímé generování grafů ve formě rastrového obrázku (JPEG, PNG). Detailní vzhled grafu je čistě v režii programátora. Samotný průběh teploty byl doplněn údaji o maximální, minimální, průměrné a aktuální teplotě. Webový kalendář (42) obsahuje odkazy na jednotlivé databáze a kdykoliv lze zpětně zobrazit výsledky dřívějších měření. Výsledné řešení je dostupné na adrese http://jukebox.vabo.cz.

Naměřená teplota ve formě grafu

Obr. 8.15: Naměřená teplota ve formě grafu
Webový kalendář

Obr. 8.16: Webový kalendář

7Závěr

Zadání diplomové práce v sobě spojuje několik oblastí informačních technologií. Zahrnuje problematiku teorie lokálních sítí, operačních systémů UNIX, webových technologií a návrhu jednočipových aplikací. Tím se mě naskytla možnost pro široké působení a tvůrčí činnost při samotném zpracování diplomové práce.

Na druhou stranu si to vynutilo provést důsledné studium teorie, analýzu a porovnání dostupných metod připojení 8- a 16-bitových jednočipových mikropočítačů do lokálních sítí a Internetu. Implementace síťových služeb a protokolů je relativně triviální záležitostí na dostatečně výkonných 32- bitových procesorech, které jsou často navíc vybaveny vlastním operačním systémem. Cílem navrhovaného řešení však byla kategorie opačného charakteru. Jednalo se o středně výkonné 8-bitové jednočipové mikropočítače s omezenými prostředky (výkon, paměť, atd.).

Postup řešení byl dán pevně stanoveným harmonogramem plnění jednotlivých bodů zadání. Na základě analýzy dostupné součástkové základny byl zvolen perspektivní jednočipový mikropočítač Atmel T89c51RD2. Přestože jádro procesoru je založeno na klasické architektuře x51 máme k dispozici celou řadu nových vlastností a rozšíření. Dnešní trend vyráběných procesorů jednoznačně směřuje k použití vyšších programovacích jazyků. Přímo na procesoru jsou integrovány dostatečně veliké paměti typu RAM a FLASH. Komplexnější projekty, mezi které můžeme směle zahrnout i zde předkládanou diplomovou práci, mají své těžiště v oblasti návrhu softwaru. Náklady spojené s vývojem, údržbou a rozšiřováním projektů napsaných v jazyku symbolických adres vedly k přechodu na vyšší programovací jazyky. Díky svým vlastnostem a možnostem se stal standardem pro psaní jednočipových aplikací jazyk C.

Stěžejní částí práce bylo naprogramování ovladače ethernetového řadiče RTL 8019AS. Ovladač slouží pro příjem a vysílání dat podle standardu Ethernet II a zahrnuje v sobě komunikaci jednočipového mikropočítače s řadičem a všemi ostatními zařízeními připojenými do kolizní domény. Postupně následovaly další vrstvy architektury OSI-RM. Limitujícím faktorem při implementaci síťových protokolů byla velikost dostupné paměti RAM (1024B) na procesoru.

Velký důraz byl kladen na otestování stability a spolehlivosti celého řešení obzvláště při zahlcení sítě během vysoké zátěže. Jednočipový mikropočítač byl zapojen do lokální sítě na Katedře automatizovaných systémů velení a informatiky v areálu kasáren Šumavská. Úspěšně byly provedeny jak lokální, tak i vzdálené komunikační testy z areálu internátu Chodská 17A.

Funkčnost rozhraní Ethernet II jednočipového mikropočítače je demonstrována na příkladu měření teploty. Venkovní teplota je snímána čidlem SMT160-30, což je převodník teplota - střída. Po provedení výpočtu aktuální teploty je výsledek zapouzdřen do UDP datagramu a odeslán na server. Průběh teplot se ukládá do databáze a ve formě grafu je přístupný z libovolného webového prohlížeče.

Zpracováním diplomové práce jsem získal praktické zkušenosti z oblasti připojování jednočipových mikropočítačů do lokálních sítí a Internetu. Zadání bylo splněno a nabité znalosti by měly posloužit jako základ pro disertační práci, kde bych chtěl pokračovat v problematice Embedded Networks.

V budoucnu by měly další kroky směřovat k plné implementaci protokolové sady TCP/IP. Již dnes je jasné, že některé náročné aplikace, budou vyžadovat použití výkonnějších procesorů s patřičnou paměťovou kapacitou. Zde bych se chtěl zaměřit na oblast embedded operačních systémů jako jsou uClinux (Embedded Linux) a Excalibur NIOS. Většina současných řešení je postavena pro přenosové rychlosti 10 Mb/s což již dlouho stačit nebude.

8Literatura

  • [1] A RESEARCH AGENDA FOR NETWORKED SYSTEMS OF EMBEDDED COMPUTERS. Embedded, Everywhere. 1 vyd. Washington, DC: National Academy Press, 2001. 214 s. ISBN 0 309 07568 8.
  • [2] JANEČEK, J.; BÍLÝ, M. Lokální sítě. 1. vyd. Praha. Skripta ČVUT, 1996. 156 s.
  • [3] IEEE. IEEE Std 802.3 - Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications, 1998 Edition, 1262, ISBN 0-7381-0330-6.
  • [4] KÁLLY, F.; PENIAK, P. Počítačové sítě a jejich aplikace. 1. vyd. Praha: Grada, 1999. 312 s. ISBN 80 7169 407 X.
  • [5] PUŽMANOVÁ, R.; ŠMRHA, P. Propojování sítí s TCP/IP. 1. vyd. České Budějovice: Kopp, 1999. 204 s. ISBN 80 7226 193 2.
  • [6] DOSTÁLEK, L.; KABELOVÁ, A. Velký průvodce protokoly TCP/IP a systémem DNS. 1. vyd. Praha: Computer Press, 1999. 418 s. ISBN 80 7232 080 7.
  • [7] DOČKAL, J. Počítačové síťě. 1. vyd. Brno: VA Brno, 1999. 352 s.
  • [8] POSTEL, J. RFC 791. c2002[cit.2002-14-05]. Internet Protocol. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc0791.txt>
  • [9] POSTEL, J. RFC 792. c2002[cit.2002-14-05]. Internet Control Message Protocol. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc0792.txt>
  • [10] POSTEL, J. RFC 768. c2002[cit.2002-14-05]. User Datagram Protocol. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc0768.txt>
  • [11] INFORMATION SCIENCES INSTITUTE UNIVERSITY OF SOUTHERN CALIFORNIA. RFC 793. c2002[cit.2002-14-05]. Transmission Control Protocol. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc0793.txt>
  • [12] PLUMMER, D. RFC 826. c2002[cit.2002-14-05]. Ethernet Address Resolution Protocol. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc0826.txt>
  • [13] BRADEN, R. RFC - 1071. c2002[cit.2002-14-05]. Computing the Internet Checksum. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1071.txt>
  • [14] DEERING, S. RFC - 1112. c2002[cit.2002-14-05]. Host extensions for IP multicasting. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1112.txt>
  • [15] BRADEN, R. RFC 1122. c2002[cit.2002-14-05]. Requirements for Internet hosts - communication layers. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1122.txt>
  • [16] BRADEN, R. RFC 1123. c2002[cit.2002-14-05]. Requirements for Internet hosts - application and support. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1122.txt>
  • [17] DEERING, S. RFC - 1256. c2002[cit.2002-14-05]. ICMP Router Discovery Messages. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1256.txt>
  • [18] RIJSINGHANI, A. POSTEL, J. RFC 1624. c2002[cit.2002-14-05]. Computation of the Internet Checksum via Incremental Update. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1624.txt>
  • [19] POSTEL, J. RFC - 1700. c2002[cit.2002-14-05]. Assigned Numbers. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1700.txt>
  • [20] REKHTER, Y. RFC - 1918. c2002[cit.2002-14-05]. Address Allocation for Private Internets. [online] Dostupný z WWW: <http://www.ietf.org/rfc/rfc1918.txt>
  • [21] GALLUN, CH. Selecting the Right Microcontroller Unit. Circuit Cellar, March 2001. Vol. 5.
  • [22] FUJITSU. c2002[cit.2002-14-05]. Fujitsu Microelectronics Europe - Homepage. [online] Dostupný z WWW: <http://www.fme.fujitsu.com/>
  • [23] MICROCHIP. c2002[cit.2002-14-05]. Microchip Technology Inc. - Homepage. [online] Dostupný z WWW: <http:// www.microchip.com/>
  • [24] RABBIT SEMICONDUCTOR. c2002[cit.2002-14-05]. Rabbit Semiconductor - Homepage. [online] Dostupný z WWW: <http://www.rabbitsemiconductor.com/>
  • [25] ATMEL. c2002[cit.2002-14-05]. Atmel Corporation - Homepage. [online] Dostupný z WWW: <http://www.atmel.com/>
  • [26] ATMEL. T89C51RD2. c2002[cit.2002-14-05]. 8051-Architecture - Data Sheets. [online] Dostupný z WWW: <http://www.atmel.com/>
  • [27] HW SERVER. c2002[cit.2002-14-05]. Projekt Web51 - Homepage. [online] Dostupný z WWW: <http://web51.hw.cz/>
  • [28] EGNITE SOFTWARE GMBH. c2002[cit.2002-14-05]. Ethernut Project - Homepage. [online] Dostupný z WWW: <http://www.ethernut.de/>
  • [29] REALTEK. Communications Network ICs. c2002[cit.2002-14-05]. RTL8019AS - ISA Full-Duplex Ethernet Controller with Plug and Play Function. [online] Dostupný z WWW: <http://www.realtek.com.tw/>
  • [30] NATIONAL SEMICONDUCTOR CORPORATION. Communications Network ICs. c2002[cit.2002 14 05]. DP8390D/NS32490D NIC Network Interface Controller. [online] Dostupný z WWW: <http://www.national.com/>
  • [31] BECKER, D. Linux Network Drivers. c2002[cit.2002-14-05]. NE 2000 driver. [online] Dostupný z WWW: <http://www.scyld.com/network/>
  • [32] KEIL SOFTWARE, INC. c2002[cit.2002-14-05]. C51-Keil - Homepage. [online] Dostupný z WWW: <http://www.keil.com/>
  • [33] SANDEEP, D. c2002[cit.2002-14-05]. Small Device C Compiler - Homepage. [online] Dostupný z WWW: <http://sdcc.sourceforge.net/>
  • [34] eEye Digital Security. Network traffic analyzer. c2002[cit.2002-14-05]. Iris™ Network Traffic Analyzer. [online] Dostupný z WWW: <http://www.eeye.com/>
  • [35] DEGIOANNI, L., RISSO, F., VIANO, P. . Network traffic analyzer. c2002[cit.2002-14-05]. WinDump tcpdump for Windows. [online] Dostupný z WWW: <http://windump.polito.it/>
  • [36] SMARTEC BV. Smart Sensors and Smart Interfaces. c2002[cit.2002-14-05]. Temperature Sensor SMT160 30. [online] Dostupný z WWW: <http://www.smartec.nl/>
  • [37] FreeBSD DOCUMENTATION PROJECT. FreeBSD Developers' Handbook. c2002[cit.2002-14-05]. The Sockets Model. [online] Dostupný z WWW: <http://www.freebsd.org/>
  • [38] FreeBSD GROUP. FreeBSD Project. c2002[cit.2002-14-05]. FreeBSD advanced operating system. [online] Dostupný z WWW: <http://www.freebsd.org/>
  • [39] OETIKER, T. RRD Tool. c2002[cit.2002-14-05]. RRD Tool - Homepage. [online] Dostupný z WWW: <http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/>
  • [40] APACHE SOFTWARE FOUNDATION. Apache projects. c2002[cit.2002-14-05]. Apache HTTP Server Project. [online] Dostupný z WWW: <http://www.apache.org/>
  • [41] PHP GROUP. Apache projects. c2002[cit.2002-14-05]. PHP Project. [online] Dostupný z WWW: <http://www.php.net/>
  • [42] WILKINSON, D. PHP Calendar. c2002[cit.2002-14-05]. PHP Calendar Class. [online] Dostupný z WWW: <http://www.cascade.org.uk/software/php/calendar/>
  • [43] SKALICKÝ, P. Procesory řady 8051. 1. vyd. Praha: BEN, 1997. 112 s. ISBN 80 86056 13 9.
  • [44] HEROUT, P. Učebnice jazyka C. 3. vyd. České Budějovice: Kopp, 1999. 272 s. ISBN 80 85828 21 9.
  • [45] STALLMAN, R., MCGRATH, R. GNU Make. c2002[cit.2002-14-05]. GNU Make A Program for Directing Recompilation. [online] Dostupný z WWW: <http://www.gnu.org/manual/make/>

9Přílohy

AProgramová dokumentace

A.1Příkaz make

Základním cílem příkazu make (45) je sestavit soubor v postupných krocích. Jestliže je k finálnímu spustitelnému souboru nutné zpracovat velké množství zdrojových souborů, pak máme možnost po změně jednoho zdrojového souboru znovu spustitelný soubor sestavit, aniž by jsme museli překládat všechny zdrojové soubory. Příkaz make si zaznamenává jména souborů, které je nutno před sestavením přeložit. Dochází tedy ke značné úspoře času, zejména v případě, když takto překládáme velmi rozsáhlé programy. Sled jednotlivých instrukcí prováděných příkazem make je uložen v souboru makefile.

V následujícím příkladu si ukážeme použití příkazu make a strukturu souboru makefile.

Obsah souboru makefile pro vývoj jednočipových aplikací v SDCC na PC

######################################################################
#             89c51RD2 EEPROM demo application ver 0.1.0             #
######################################################################
VER     = 0.1.0 07.04.2002
NAME    = EEPROM
IHEX    = eeprom.hex

CC      = sdcc
RM      = @rm
BIN2HEX = @bin2hex
HEX2BIN = @hex2bin
RD2F    = @rd2f
TERM    = @serialterm
CLS     = @cls

COM     = COM1
FBAUD   = 115200
CBAUD   = 19200
PSEN    = 1

LFLAGS = --stack-after-data --model-small --xram-loc 0x0000
CFLAGS = $(LFLAGS) -c --debug

image: cmp_msg main.rel v24.rel
	$(CC) $(LFLAGS) main.rel v24.rel

cmp_msg:   
	@echo --------------------------------------------------------
	@echo Compiling $(NAME) project for AT89c51RD2 version $(VER).
	@echo --------------------------------------------------------

flash_msg:   
	@echo ---------------------------------------
	@echo Programming AT89c51RD2 microcontroller.
	@echo ---------------------------------------

main.rel: main.c 
	$(CC) $(CFLAGS) main.c

v24.rel: v24.c
	$(CC) $(CFLAGS) v24.c

 
flash: flash_msg 
	$(HEX2BIN) main.ihx main.bin 
	$(BIN2HEX) main.bin $(IHEX)
	$(RD2F) -f $(IHEX) -c $(COM) -b $(FBAUD) -p $(PSEN)
	$(CLS)
	$(TERM) $(COM)  $(CBAUD)
	
term: 
	$(CLS)
	$(TERM) $(COM)  $(CBAUD)

pause:
	@pause

all: image pause flash

clean:
	@$(RM) -f *.asm *.cdb *.rel *.ihx *.lst *.map *.rst *.sym \
*.lnk *.lib *.bin

V uvedeném souboru makefile si všimněme následujících cílových objektů

  • all — překlad, sestavení a naprogramování jednočipového mikropočítače,
  • flash — naprogramování jednočipového počítače,
  • clean — odstranění temporárních souborů vytvořených během překladu a sestavení.

Jednotlivé cílové objekty voláme z příkazové řádky jako parametry příkazu make

  • make all,
  • make flash,
  • make clean.

Řada lidí považuje příkaz make za prostředek k vytvoření cílových kódů a k sestavení spustitelných programů. Obecně lze říct, že make je univerzální program k sestavení cílových objektů na základě nezbytných předpokladů.

A.2RD2 - Flasher

Program slouží primárně k programování procesoru Atmel T89c51RD2 přes sériový port v operačním systému MS Windows. Lze jej však použít pro naprogramování libovolného procesoru, který umožňuje použití zavaděče s implementovaným komunikačním protokolem popsaným v katalogovém listu procesoru 89c51RD2.

Ovládání programu je řešeno pomocí parametrů z příkazové řádky. Komunikaci mezi PC a programovaným procesorem lze provádět ve dvou módech. Mód 0 posílá celý řádek načtený z textového souboru intel hex a následně čeká na odpověď. Mód 1 vyšle znak a čeká na odpověď.

Běh programu lze přerušit stisknutím kláves CTRL-C nebo CTRL-BREAK.

Testované platformy

Windows 95, Windows 98se, Windows 2000 Server + SP2, Windows XP Professional

Možnosti sériové komunikace na straně PC

Program je schopen využít libovolný volný sériový port, který je mu dán k dispozici operačním systémem. Zkontrolujte, prosím nastavení vyrovnávací paměti FIFO u sériových portů. V případě že je vypnuta, tak ji zapněte.

Podporované přenosové rychlosti pro sériovou komunikaci
110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 56000, 57600, 115200
Pozn.: Nastavená přenosová rychlost sériového portu na PC musí byt podporována krystalem připojeným k programovanému procesoru.

Zapojení programovacího kabelu

Procesor je připojen běžným sériovým kabelem (TxD, RxD, GND). Komunikace nevyužívá žádné formy řízení toku dat. Zapojením vodiče RTS (pin 7) a následným propojením s pinem PSEN u procesoru T89c51RD2 lze přímo řídit průběh programování z obslužného softwaru na PC.

Test funkčnosti zavaděče a sériového kabelu

Zavaděč programu se aktivuje uzemněním pinu 29 (PSEN) během resetu procesoru. Následně zavaděč provádí autodetekci přenosové rychlosti během něhož PC vysílá po sériové lince periodicky znak 'U'. Po zesynchronizování posílá zavaděč všechny přijaté znaky zpět do PC. Manuální test funkčnosti kabelu a zavaděče lze provést s libovolným sériovým terminálem. Vypneme lokální odezvu odesílaných znaků. Držíme klávesu 'U' a čekáme na odezvu od zavaděče.

Programováni FLASH paměti procesoru

U programovaného procesoru aktivujeme zavaděč (uzemníme PSEN a vyresetujeme procesor). Procesor musí být napájen ze stabilizovaného zdroje 5V s dostatečnou proudovou rezervou. Při nižším napájení může docházet ke stochastickým jevům v průběhu programování a komunikaci s PC.

Upozornění: Procesor se nenaprogramuje správně pokud jsou řádky v souboru Intel HEX zpřeházené. Jedná se o chybu na straně zavaděče, který pošle odpověď, že došlo k úspěšnému naprogramování zaslaného řádku. Naprogramovaná aplikace se nespustí. Chybu lze odstranit použitím přiložených utilit a provedením transformace souboru HEX->BIN->HEX.

Programováni EEPROM paměti procesoru

Postup programování paměti EEPROM je shodný s programováním paměti FLASH. Soubor Intel HEX je třeba pouze doplnit o informaci pro zavaděč, udávající kmitočet použitého krystalu. Od verze 0.1.5 lze informace o kmitočtu v MHz zadat přímo z příkazové řádky pomocí parametru -q.

Ovládání PSEN bitu z PC

Možnost ovládání PSEN bitu z PC, předpokládá zapojení kabelu s RTS vodičem a připojení na PSEN pin u programovaného procesoru. Parametr -p při spouštění ovládacího softwaru na PC musí mít hodnotu '1'. Dále postupujeme podle pokynů uvedených v programu.

Textový výstup programu

Parametrem -t lze zvolit barvu, kterou použije program při výstupu na obrazovku. K dispozici je základních 16 barev používaných pro zobrazování v textovém režimu na VGA adaptéru.

Tipy, triky, praxe

Zobrazení konzolové aplikace na celou obrazovku ve Win9x

Zvýšení výkonu a stability lze dosáhnout spouštěním RD2-Flasheru v zobrazení na celou obrazovku. Konzolové aplikace jsou v operačním systému Win9x spouštěny pomocí programu “C:\WINDOWS\SYSTEM\CONAGENT.EXE”. Změnou vlastností pro tento program lze globálně nastavit chování všech konzolových aplikací (např. zobrazení na celou obrazovku).

A.3Implementace Embedded Ethernetu s T89c51RD2

Z důvodu přehlednosti jsem rozdělil zdrojové kódy do několika vzájemně logicky navazujících částí. Integrované vývojové prostředí uVision2 využívá pro správu projektů vlastní manager projektů. IDE uVision2 je součástí produktu C51-Keil firmy Keil.

Struktura zdrojových programů

Obr. A.1: Struktura zdrojových programů

Popis jednotlivých zdrojových souborů, uložených v adresáři projektu embedded ethernetu

  • arp.c, arp.h — implementace ARP,
  • const.h — globálně sdílené konstanty programu,
  • delay.c, delay.h — časování a čekací smyčky,
  • ee.uv2 — projekt IDE - uVision2,
  • icmp.c, icmp.h — implementace ICMP,
  • ip.c, ip.h — implementace IPv4,
  • main.c — hlavní smyčka programu,
  • rtl8019.c, rtl8019.h — RTL 8019as paketový ovladač,
  • temp.c, temp.h — měření okolní teploty,
  • udp.c, udp.h — implementace UDP.

Výsledkem překladu projektu je soubor ve formátu Intel HEX, který se naprogramuje do cílového procesoru. Popis ISP programování je uveden v předešlém textu.

UDP - Teploměr

Program provádí sběr teplot z jednočipového mikropočítače pomocí UDP protokolu a ukládání dat do Round Robin databáze. Komentovaný zdrojový kód programu udp_temp.c je uložen na přiloženém CD. K sestavení programu je použit kompilátor GCC a jednotlivé prováděné kroky jsou automatizované za pomoci souboru makefile.

  • make — překlad a sestavení programu,
  • make clean — odstranění temporárních souborů vytvořených během překladu a sestavení.

Program využívá komunikaci na bázi neblokujících BSD soketů a byl úspěšně provozován na operačních systémech Linux a FreeBSD.

A.4Webové rozhraní

Webové rozhraní je postaveno na serveru Apache a skriptovacím jazyka PHP s nainstalovanou podporou pro práci s PNG obrázky. Uložení skriptů na serveru dodržuje následující konvenci

  • ~/public_html/ — php skripty a statické html stránky,
  • ~/public_html/img — obrázky,
  • ~/public_html/RRA — jednotlivé Round Robin databáze a program UDP-Teploměru.

Popis jednotlivých zdrojových souborů

  • access.log — statistika přístupů na web,
  • anygraph.sh — generování grafů z databáze,
  • cale.php3 — stránka s kalendářem,
  • calendar.php3 — skript pro výpočet obsahu kalendáře,
  • cont.html — stránka s kontaktními informacemi,
  • docu.html — stránka s dokumentací,
  • index.php3 — úvodní stránka,
  • news.html — stránka s novinkami,
  • styly.css — definice kaskádních stylů,
  • temp.php3 — stránka s grafem teploty,
  • tempgraph.php3 — skript pro generování grafu teploty,
  • tempgraph.png — teplotní graf.

BUživatelská dokumentace

B.1Zapojení jednočipového mikropočítače

Při zacházení se všemi polovodičovými součástkami dbejte zásad manipulace s obvody citlivými na poškození elektrostatickým nábojem. Instalaci provádějte pouze při vypnutém napájecím napětí. Nedodržením uvedených pravidel může dojít k trvalému poškození citlivých obvodů.

Charakteristika

Reálné možnosti zařízení se odvíjejí od typu zvoleného jednočipového mikropočítače a doplňující součástkové základny. Výkon většiny x51 procesorů, ani použité připojení řadiče RTL neumožňuje aplikace, které vyžadují mohutné datové toky. Návrh HW se orientuje hlavně na běžná měření, ovládání nebo vyhodnocování v aplikacích, kde je třeba redukovat náklady vzhledem k desítkovým a větším sériím.

Praktické použití si lze představit např. v následujících oblastech
  • jednoduchá zařízení ovládaná přes TCP/IP, UDP,
  • komunikační moduly pro přístroje,
  • sběr dat a jejich zpřístupnění po síti,
  • prodloužení sériového portu RS 232/422/485,
  • připojení běžných spotřebičů k počítačové síti,
  • ...
Technické parametry ethernetového zařízení
  • síťový řadič RTL 8019AS s výstupem přes transformátor na twisted pair kabel,
  • procesor ATMEL T89c51RD2 - 64 kB FLASH, 1280 B RAM, 2 kB EEPROM, frekvence 22,1184 MHz,
  • ISP programování přes sériový port,
  • vnější I2C EEPROM od 24C32 (4k x 8) do 24C1024 (64k x 8),
  • MAX 232 osazen na základní DPS,
  • malé univerzální pole pro osazení jednoduché periférie a dvě LED diody se dvěmi tlačítky pro základní ovládání,
  • volně je k dispozici 16 I/O linek (celý port P1, část P3 a dva piny portu P2),
  • stabilizátor napětí 7805 pro vnější napájecí adaptér.
Technické parametry čidla SMT160-30
  • rozsah měřených teplot - 45 až 130 °C,
  • absolutní přesnost čidla 0,75 °C,
  • linearita výstupu 0,2 °C,
  • délka kabelu k měřicímu čidlu až 20 metrů,
  • napájení 5 V.
Zapojení konektorů
Rozhrarní RS232

Procesor je připojen běžným sériovým kabelem (TxD, RxD, GND). Komunikace nevyužívá žádné formy řízení toku dat. Terminálový program na PC musí mít nastaveny přenosové parametry 19200, N, 8, 1.

Rozhraní Ethernet II

UTP rozhraní je integrováno přímo na desce. U propojovacího kabelu zapojte piny 1,2,3 a 6 pro použití v 10 Mb/s lokální síti.

Teplotní čidlo SMT160-30

Digitální výstup teplotního čidla je připojen na vstup jednočipového mikropočítače P1.3. Maximální délka kabelu k měřicímu čidlu je omezena na 20 metrů.

Napájecí napětí

Celé zařízení lze napájet z libovolného stejnosměrného zdroje schopného dodat napětí 8 V a proud max. 200 mA.

Spuštění zařízení

Po zapnutí napájecího napětí dojde k automatickému spuštění a provádění programu jednočipového mikropočítače. Na sériový port jsou průběžně posílány diagnostické a monitorovací informace o celém zařízení.

Embedded Ethernet ver 0.1.0 May 17 2002, 09:39:09             14:56:07

t = 20.9 °C
Obr. B.1: Výstup dat na sériový port a zobrazení v terminálovém okně
B.2Obslužný software na PC serveru

Obslužný software na PC je spuštěn na počítači s operačním systémem třídy Unix komunikující s jednotlivými jednočipovými mikropočítači. Server je připojen do lokální 10 Mb/s sítě podle standardu Ethernet II. Zvolené řešení je postaveno na architektuře klient - server. Získané informace se na serveru zpracovávají, ukládají a poskytují na požádání dalším klientům přes webové rozhraní.

Požadavky na systém
  • procesor třídy i386+,
  • 16 MB RAM,
  • 250 MB pevný disk,
  • síťová karta 10 Mb/s
  • operační systém Linux, FreeBSD,
  • webový server Apache, PHP, RRDTool.
UDP - teploměr

Komunikace mezi centrálním serverem a jednočipovým mikropočítačem probíhá na bázi UDP datagramů. Na straně jednočipového mikropočítače naslouchá služba na portu 2000. Každou minutu přijme datagram s požadavkem o aktuální teplotu vyslanou programem UDP - teploměru spuštěným na serveru. Při práci se sokety jsou použity neblokující funkce pro čtení a zápis dat. Postupně se načte z každého zařízení deset teplot, vypočte průměr a výsledek reprezentuje teplotu za danou minutu. Spustitelný binární soubor programu UDP - teploměru udp_temp je uložen v adresáři ~/public_html/RRA.

Ovládání programu UDP - teploměru

Spuštění programu udp_temp provedeme z příkazové řádky

nohup udp_temp arrow.vabo.cz &
  • nohup - spustí příkaz odolný proti signálu hangup s výstupem nesměřujícím na terminál. Příkaz nohup nespouští automaticky zadaný příkaz v pozadí. Uživatel to musí udělat explicitně ukončením příkazového řádku znakem `&'. Výstup programu je přesměrován do souboru nohup.out.
  • udp_temp - UDP - teploměr, program akceptuje jeden parametr z příkazové řádky udávající adresu jendočipového mikropočítače (DNS záznam nebo IP adresa). Přednastavená hodnota IP adresy je 160.216.1.47 což odpovídá DNS záznamu arrow.vabo.cz.
Zobrazení výstupu programu

Přesměrovaný výstup programu udp_temp do souboru nohup.out zobrazíme přes

tail -f nohup.out
Embedded Ethernet ver 0.1.0 - PC Mar 26 2002, 12:32:27
Temperature source: arrow.vabo.cz
17-05-2002 09:51:00 : 23.9 °C
17-05-2002 09:52:00 : 25.1 °C
17-05-2002 09:53:00 : 23.6 °C
17-05-2002 09:54:00 : 23.2 °C
17-05-2002 09:55:00 : 23.7 °C
17-05-2002 09:56:00 : 23.1 °C
17-05-2002 09:57:00 : 22.1 °C
17-05-2002 09:58:00 : 21.9 °C
17-05-2002 09:59:00 : 21.9 °C
17-05-2002 10:00:00 : 21.8 °C
Obr. B.2: Výstup UPD - teploměru v terminálovém okně

tail [-n # -f] [soubor] - příkaz vypisuje konec souboru, n zobrazí posledních # (standardně 10) řádků souboru, pokud neuvedeme název souboru tak se bere standardní výstup. Parametr -f vypisuje obsah vstupního souboru i po dosáhnutí konce souboru a zobrazuje nové údaje přidávané průběžně do souboru.

B.3Webové rozhraní

Funkčnost celého zařízení je demonstrována na příklade měření venkovní teploty. Vizualizace výsledků je dělána formou grafu. Získané teploty naměřené UDP - teploměrem se ukládají do Round Robin databáze, která poskytuje data pro závěrečnou vizualizaci měření na webu. Graf teploty je doplněn statistickými údaji o maximální, minimální, průměrné a aktuální teplotě za daný den. Webové rozhraní bylo koncipováno pro použití na veřejném Internetu a proto jsou všechny informace uvedeny v anglickém jazyce.

Úvodní stránka webového rozhraní

Obr. B.3: Úvodní stránka webového rozhraní

Intuitivní ovládání je založeno na šesti tlačítkách tvořících pomyslné menu v levé části obrazovky

  • About — úvodní stránka projektu,
  • Temperature — graf dnes naměřených teplot,
  • Calendar — webový kalendář, umožňuje zobrazit grafy naměřené v minulosti,
  • Documentation — dokumentace o projektu,
  • News — aktuality a novinky,
  • Contact — kontaktní informace na autora.