HW group
Web51-C první kroky
Web51-C - první kroky Web51-C je vývojový kit pro tvorbu vestavných Ethernetových UDP a SNMP aplikací na bázi 8051 procesorů. Web51-C je rozšíření projektu Web51 původně tvořeného v assembleru do jazyka C. Výsledné embedded ethernet aplikace lze kompilovat volným kompilátorem SDCC nebo komerčním Keil C51. Projekt Web51-C lze zkompilovat na původní HW (od cca 1kB interní RAM na novějších x51 procesorech, jako je T89C51RD2. Pro funkce SNMP je ale potřeba použít větší externí RAM. Základ doporučeného hardwarového řešení tvoří vestavný modul Charon I poskytující dostatečnou paměťovou a výpočetní kapacitu. Tento popis vás krok za krokem provede instalací a otestováním některých aplikací Web51-C. Vzhledem ke značným možnostem poslední demonstrační aplikace „SNMP I/O Thermometer“ lze upravit a velmi rychle použít ji jako finální řešení.
Základní vlastnosti Web51-C •
Zdrojové kódy v ANSI C
•
Používá standardní 8051 MCU a RTL8019AS Ethernet řadič
•
Plně otevřená HW i SW platforma
•
Veškeré příklady lze testovat na zdokumentovaných Charon I + Development Kit nebo Charon I + Charon I&II Development Board
•
Vše k dispozici ve zdrojových kódech
•
Implementován UDP stack
•
Příklady kompatibilní pro volné SDCC (Small Device C Compiler)
•
Příklady kompatibilní pro komerční Keil C51
•
Funkční SNMP aplikace „SNMP I/O Thermometer“ s JAVA vizualizací
•
Podrobný popis, starting guide.
•
Rychlý návrh a vývoj aplikací
•
Velmi levné HW řešení, vhodné pro velké série
1 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Blokové schéma projektu Web51-C Demo verze
ANSI C - SNMP vývojový systém
2 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Hardwarové řešení projektu Základ hardwarového řešení 8051 kompatibilní (dále x51) procesor a řadič Ethernetu RTL8019AS. V našich aplikacích používáme vestavný modul Charon I, jehož schéma a popis najdete v přílohách této dokumentace. Charon I je osazen 8-bitovým mikroprocesorem T89c51RD2 firmy Atmel. Obecně lze ale samozřejmě použít jakýkoliv jiný x51 MPU. Paměťový podsystém tvoří •
integrovaná paměť FLASH 64 kB (kód programu),
•
integrovaná paměť EEPROM 2 kB (konfigurační parametry),
•
externí paměť SRAM 32 kB (dynamické přidělování paměti),
•
přímo mapované periferie - ethernetový řadič RTL8019as.
Adresový prostor 0x0000 – 0xFBFF 0xFC00 – 0xFFFF
Použito FLASH 63 kB (CODE) zavaděč (bootloader) 1 kB
Tab.1 Paměťový podsystém Web51-C – interní paměť programu CODE
Adresový prostor 0x0000 – 0x7FFF 0x8000 – 0x801F 0x8020 – 0x80FF 0x8100 – 0xFFFF
Použito SRAM 32 kB (XRAM) ethernetový řadič RTL8019as volný pro rozšiřující hardware zrcadlení adres 0x8000 – 0x80FF
Tab.2 Paměťový podsystém Web51-C – externí paměť dat XRAM
Adresový prostor 0x0000 – 0x03FF
Použito SRAM 1 kB (XRAM)
Adresový prostor 0x0000 – 0x07FF
Použito EEPROM 2 kB
Tab.3 Paměťový podsystém Web51-C – interní paměť dat XRAM a EEPROM Programování paměti FLASH a EEPROM se provádí metodou ISP přes sériový port mikroprocesoru viz kapitola „Programování firmwaru do modulu Charon I“. Tato metoda nevyžaduje žádný další podpůrný hardware a zcela eliminuje použití klasického programátoru. Ethernetový řadič RTL8019as je zapojen v minimalizovaném zapojení bez nutnosti použití externí paměti EEPROM 93c46. Komunikace s řadičem probíhá v 8-bitovém režimu, umožňující adresovat 8 kB SRAM integrované uvnitř řadiče. Paměť je určena pro příjem a vysílání ethernetových rámců. Po přijetí ethernetového rámce, řadič automaticky generuje požadavek o přerušení pro řídící mikroprocesor. K připojení zařízení do lokální sítě 10BaseT slouží konektor RJ-45.
3 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Doporučený HW pro ladění příkladů Testovací příklady jsou určeny pro moduly Charon I a standardně fungují s dodávanými vývojovými kity : Charon I DK
(Development Kit) je jednoduchý a levný vývojový kit, ve kterém lze otestovat pouze základní periferie, neobsahuje posuvné registry atd..
Charon I&II DB
(Development Board) je vývojový kit, na němž najdete přímé výstupy, ale také SHIFT registry pro externí rozšířené vstupy a výstupy, LCD displej připojený také přes posuvné registry, přímý výstup na 1-Wire. Charon I&II obsahuje také periferie, které podporuje pouze Charon II (druhou sériovou linku RS-232, JTAG, SERIAL FLASH až 4 MB, ISP programovací rozhraní..).
Poznámka :
Modul lze použít v jakékoliv základní desce, která připojí galvanicky oddělený Ethernet a napájení.
V příkladech použité periferie Šířka binárních vstupů a výstupů je dána počtem použitých posuvných registrů, které se připojí kaskádně za sebe. Rozšířené periferie v příkladu „SNMP I/O Thermometer“ fungují pouze, pokud je z JAVA aplikace (nebo z obecného SNMP clienta) nastaven pro periferie mód „special“, v režimu „paralel“ lze přistupovat pouze přímo na 8. bitový vstupně/výstupní port P1. •
Sériová linka RS-232 (data z RS-232 jsou odeslána do SNMP clienta jako trapy)
•
0 .. 32 binárních vstupů
•
0 .. 32 binárních výstupů
•
až 4x teploměr 1-Wire
Aplikaci „SNMP I/O Thermometer“ doporučujeme ladit na vývojové desce Charon I&II DB, která má vyvedeny všechny potřebné periferie, včetně LCD displeje.
4 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Softwarové řešení Od prvopočátku bylo jasné, že projekt Web51-C musí být směřován do oblasti jednoduchých embedded ethernet zařízení. 8-bitové mikroprocesory řady 8051 jsou bohužel kvůli své hardwarové architektuře dosti limitovány co do možností dosažitelného maximálního výpočetního výkonu. Je třeba šetřit s dostupnými prostředky a celé řešení uzpůsobit použitému mikroprocesoru. Seznam základních požadavků na navrhovaný systém lze shrnout do následujícího výčtu: • • • • • •
použití vyššího programovacího jazyka, možnost dynamické správy paměti, přístup k periferiím pomocí vyhrazených funkcí, implementace základních síťových protokolů, snížit dobu odezvy systému na minimum, transparentnost celého řešení.
Proč použít jazyk C? Jazyk C byl navržen k systémovému (nízkoúrovňovému) programování. Díky tomu se prosadil všude tam, kde je třeba přímo ovládat libovolný hardware. V jazyce C je napsaná celá řada operačních systému, uživatelských a mikroprocesorových aplikací. Překladače jazyka C existují pro většinu dostupných typů procesorů. Výhody jazyka C • • • • •
jednoduchá přenositelnost zdrojových kódů programu (multiplatformnost), přehlednost zdrojových kódů programu a celkové zjednodušení při správě složitých projektů, rychlejší vývoj aplikací (použití standardních knihoven), nástroje na optimalizaci a validaci výsledného kódu programu, zavedený programovací jazyk, podporovaný výrobci hardwaru (mikroprocesorů) a softwaru (kompilátorů).
Nevýhody jazyka C • • •
vyšší cena kvalitního vývojového prostředí, relativně větší nároky na paměť dat a programu výsledné aplikace, složitější na osvojení oproti ostatním vyšším programovacím jazykům.
Implementace jazyka C u mikroprocesorů řady 8051 Díky neutuchající oblibě mikroprocesorů řady 8051 je k dispozici dostatečné množství kompilátorů jazyka C. Základní vlastností jazyka C je, že využívá intenzivně práce se zásobníkem (předávání parametrů, lokální proměnné, návratové adresy funkcí, reentrivní funkce atd.). To je kamenem úrazu u mikroprocesorů řady 8051, která není vybavena vhodným zásobníkovým systémem. Úspěšnost implementace jazyka C u mikroprocesorů řady 8051 závisí na tom, jak se daný výrobce kompilátoru vypořádal s tímto nelehkým problémem. V další fázi se pak řeší specifické problémy s implementací jazyka C na 8-bitový mikroprocesor řady 8051. 5 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Volba kompilátoru jazyka C Základním kritériem při výběru kompilátoru jazyka C bylo • • •
jádro systému Web51-C musí být možno sestavit nejméně ve dvou kompilátorech (komerční/volně dostupný), vývoj aplikací musí být možný na platformě MS Windows a Linux, výsledný systém Web51-C musí umožňovat vývoj aplikací s minimálními investicemi do programového vybavení.
GNU kompilátor SDCC (Small Device C Compiller) vyvíjený skupinou nadšenců si v porovnání s komerčními produkty vede docela obstojně. Svými vlastnostmi výsledného kódu programu se řadí do střední třídy kompilátorů. Chybí spousta vymožeností, které je dána absencí IDE a s tím spojený komfort při vývoji. Rozšířená syntaxe jazyka C používaná u mikroprocesorů řady 8051 je u SDCC a Keil C51 shodná. To umožňuje psát programy, které lze jednoduše přeložit v obou kompilátorech. Při realizaci složitějších projektů, je však třeba počítat se zvýšeným úsilím, ze strany vývojáře k dosažení patřičného výsledku. Keil C51 je odbornou veřejností považován za jeden z nejlepších kompilátorů pro 8051 mikroprocesory. Je to pravda a na celém produktu je vidět několik let intenzivního vývoje, který má za sebou. Pokud vážně uvažujete o nákupu komerčního kompilátoru, tak by jste při výběru neměli opomenout Keil C51. Poznámka:
Překladač Keil C51 používá pro ukládání dat do paměti metodu velkého endiánu (Big Endian) na rozdíl od SDCC, které využívá metodu malého endiánu (Little Endian).
Adresářová struktura projektu Projekt Web51-C je rozdělen do následujících adresářů web51c\app ... uživatelské aplikace (např. demonstrační příklady) web51c\bin ... podpůrné programy využívané systémem Web51-C (např. RD2-Flasher) web51c\dev ... ovladače jednotlivých hardwarových zařízení (např. ethernetový řadič RTL8019as) web51c\doc ... dokumentace web51c\include ... hlavičkové soubory systému Web51-C web51c\lib ... předkompilované knihovny (např. udp, snmp knihovna) web51c\net ... zdrojové kódy systému Web51-C
6 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Implementované síťové protokoly Volba rozsahu implementovaných protokolů vycházela z celkové koncepce zvoleného řešení. Vybrané protokoly pokrývají 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) - používá se při znalosti cílové IP adresy stanice pro nalezení příslušné fyzické adresy rozhraní MAC.
Síťová vrstva (network layer) • •
IP (Internet Protocol) - klíčový protokol, provádí vysílání datagramů na základě síťových adres obsažených v jejich záhlavích a poskytuje síťovou službu bez spojení. ICMP (Internet Control Message Protocol) - protokol řídících hlášení, slouží k přenosu specifických zpráv týkajících se chyb a zvláštních okolností při přenosu datagramů.
Transportní vrstva (transport layer) •
UDP (User Datagram Protocol) - poskytuje mechanismus pro koncový přenos dat mezi dvěma stanicemi. Nabízí transportní službu bez spojení.
Aplikační vrstva (application layer) • • • •
SNMP (Simple Network Management Protocol) – protokol podporující přenos informací pro management sítí. Slouží k monitorování aktivních prvků sítě, dálkové řízení a změny konfigurace sítě. DNS (Domain Name System) – umožňuje mapování jmen stanic na IP adresy. WOL (Wake On Lan) – zapnutí stanice na lokální síti. Různé proprietární protokoly použité v uživatelských aplikacích (např. měření teploty).
V současné verzi tvoří jádro systému UDP protokolový zásobník nad kterým jsou provozovány další síťové protokoly. Jádro lze přeložit jak v SDCC tak i Keil C51. Jednou z hlavních aplikačních úloh kde je systém Web51-C využíván, je monitorování zařízení na síti pomocí protokolu SNMP. Implementace SNMP protokolu byla provedena pouze pro kompilátor Keil C51.
7 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Vývoj a ladění aplikací Vývoj aplikací se provádí na platformě MS Windows nebo Linux. Programátor může volit mezi kompilátorem SDCC (překlad pomocí souborů makefile) nebo Keil C51 (integrované prostředí µVision2). Pro pochopení principů práce se systémem Web51-C je k dispozici celá řada demonstračních příkladů v adresáři web51c\app.
Tvorba aplikací v Keil C51 Sestavení aplikace se provádí v µVision2 IDE, které sdružuje management projektu, editaci zdrojových kódů, překladač, linker a debugger v jeden celek. Instalace programu je obdobná běžně používanému postupu známého z prostředí MS Windows.
Volba hardwarové platformy Systém Web51-C lze v současné době provozovat na procesorech T89c51RD2 a AT89c51ED2. Volba cílové hardwarové platformy se provádí pomocí direktivy pro podmíněnou kompilaci v menu Project ! Options for Target ! C51 ! Preprocesor Symbols. direktiva pro procesor T89c51RD2 direktiva pro procesor AT89c51ED2
__T89C51RD2__ __AT89C51XD2__
V prostředí µVision2 IDE lze přímo zvolit cílovou platformu pomocí menu Select Target, kde je k dispozici na výběr „Web51 – T89c51RD2“ nebo „Web51 – AT89c51xD2“.
Konfigurace paměti eeprom mikroprocesoru T89c51RD2 Systém Web51-C používá pro uložení konfiguračních parametrů interní paměť eeprom mikroprocesoru T89c51RD2 viz příklad 1. Pro správnou funkci je nezbytně nutné tuto paměť následujícím způsobem nakonfigurovat. Zdrojové soubory příkladu 1 jsou sdruženy v rámci projektu web51.uv2. Projekt obsahuje informace potřebné pro překladač a linker. Projekt otevřeme v menu Project ! Open Project, kde zadáme cestu \web51c\app\00.eeprom.setup a vybereme projekt web51.uv2. V levém okně vidíme jednotlivé části které projekt obsahuje: •
složka SRC – zdrojový kód programu eesetup.c (EEPROM SETUP),
•
složka INC – hlavičkové soubory systému Web51-C,
•
složka LIB – použité knihovny Web51Udp.LIB (celý systém Web51-C včetně UDP protokolového zásobníku). ETH_ADDR IP_ADDR IP_ADDR IP_ADDR
MY_ETH_ADDR MY_IP_ADDR GW_IP_ADDR NETMASK
= = = =
{{0x00, 0x0A, 0x59, 0x00, 0x00, 0x00}}; // Web51 MAC adresa {{192,168,6,68}}; // Web51 IP adresa {{192,168,6,254}}; // maska podsítě {{255,255,255,0}}; // IP adresa brány
8 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Obr. 1: Keil C51 -
µVision2 IDE
Hodnoty IP adres je třeba nastavit tak, aby odpovídaly použitým adresám v dané lokální sítí do které se modul Charon I připojuje. Sestavení programu provedeme v menu Project ! Build target čímž dojde k vytvoření několika souborů s informacemi o výsledcích překladu. Jméno souboru WEB51 WEB51.HEX WEB51.M51 WEB51.OPT WEB51.UV2 EESETUP.C EESETUP.LST
Poznámka:
Popis vstupní data pro debugger sestavený kód programu tabulka symbolů aktuální nastavení µVison2 (otevřené soubory, velikost oken, …) soubor projektu zdrojový kód programu (Eeprom Setup) výpis programu po provedení sestavení
V dolní části obr.1 je vidět výsledek kompilace. Knihovna Web51Udp.LIB obsahuje i některé funkce, které nejsou v programu použity. V důsledku toho kompilátor ohlásí 14 varovných hlášení. Nejedná se o chybu, pouze nás kompilátor upozornil, že tyto funkce nejsou použity a zabírají zbytečně místo v paměti kódu programu. Uživatel má možnost označit v souboru \include\config.h funkce, které se nemají přidávat do knihovny Web51Udp.LIB a tím potlačit výskyt těchto chybových hlášení. Tento krok však vyžaduje znovusestavení knihovny a je doporučen zkušenějším uživatelům.
Nahrání firmwaru (soubor web51.hex) do modulu Charon I lze provést pomocí souboru flash.bat (uložen ve stejném adresáři jako projekt). 9 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Web51c – Embedded Ethernet Project ver 1.0.0 May 20 2003, 21:20:13 - Keil 7.05 Old T89c51RD2 eeprom settings. Web51 network interface parameters MAC addres IP address Gateway Netmask
: : : :
00:0A:59:00:00:01 192.168.2.6 192.168.2.1 255.255.255.0
New T89c51RD2 eeprom settings. Web51 network interface parameters MAC addres IP address Gateway Netmask
: : : :
00:0A:59:00:00:00 192.168.6.68 192.168.6.254 255.255.255.0
Obr. 2: Výstup programu na sériový port 9600, N, 8, 1 Nyní je paměť eeprom nakonfigurována. O tom, že data byla správně zapsána do paměti eeprom se můžeme přesvědčit pokud vyresetujeme modul Charon I.
První aplikace v systému Web51-C Následující popis uvádí základní principy použití systému Web51-C. Na jednoduchém příkladu UDP klienta bude demonstrována komunikace mezi PC a modulem Charon I. Program přijímá data vyslaná z PC na IP adresu modulu port 2000. Obsah UDP datagramu je zobrazen na standardní výstup (sériový port). Projekt otevřeme v prostředí µVision2 (viz postup uvedený v předchozím příkladě). Zdrojový kód příkladu je uložen v adresáři web51c\app\02.udp.client.
Funkce main Celý program je obsažen v souboru udpclient.c. Nejdříve musíme vyhradit paměť pro příjem UDP datagramů (ethernetových rámců). u_char EthFrmBuf[ ETH_FRM_SIZE ]; data WORD EthProt;
/* paměť pro přijatý UDP datagram */ /* typ zjištěného protokolu */
Následuje inicializace systému Web51-C •
nastavení sériového portu (9600,N,8,1),
•
načtení konfigurace z eeprom,
•
inicializace ARP CACHE protokolu ARP,
•
inicializace ethernetového řadiče RTL8019as. W51SystemInit(); /* inicializace systému Web51-C */ W51VerStrComp(); /* zobrazení aktuální verze systému na standardní výstup */ W51SysInfo(); /* zobrazení konfigurace (MAC, IP adresa atd.) */ 10 / 24
16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Hlavní smyčku programu se dělí na následující dvě části: Zpracování požadavků od ethernetového řadiče – program testuje výstup RTL8019as, jestli nedošlo k příjmu ethernetového rámce. Pokud jsou data k dispozici načtou se funkcí W51EthReadData() do paměti XRAM. Z přijatého datagramu se určí typ zapouzdřeného protokolu (ARP, IP atd.) a podle toho se postupuje při dalším zpracování. •
W51ArpInput() – zpracování ARP dotazu/odpovědi,
•
W51IpValid() – ověření intergrity IP datagramu (CRC, cílová IP adresa atd.),
•
W51IcmpInput() – zpracování ICMP dotazu/odpovědi,
•
W51UdpValidCRC() – ověření intergrity UDP datagramu (platné CRC),
•
W51UdpValidPort() – platný(otevřený) UDP port na systému Web51-C,
•
W51DisplayUdpData() – zobrazení UDP datagramu na standardní výstup. if( RTLIrq0 ) // check for received ethernet data // test RTL8019as interrupt request line { W51EthReadData( &EthFrmBuf[0] ); // read data from ethernet controller EthProt = MAKEWORD(EthFrmBuf[12], EthFrmBuf[13]);
}
// --- decode received ethernet frame data --- // if(EthProt == 0x0806) W51ArpInput( (ARP_FRAME *) EthFrmBuf ); // ARP if(EthProt == 0x0800) // IPv4 {if( W51IpValid((IPv4_FRAME *) EthFrmBuf)) {if( EthFrmBuf[23] == IP_Prot_ICMP ) // ICMP W51IcmpInput((ICMP_FRAME *) EthFrmBuf); if( EthFrmBuf[23] == IP_Prot_UDP ) // UDP { if( W51UdpValidCRC( (UDP_FRAME *) EthFrmBuf)) { // decode received UDP datagram here if(W51UdpValidPort((UDP_FRAME *)EthFrmBuf)) // available UDP port { W51DisplayUdpData( (UDP_FRAME *) EthFrmBuf); } } } } }
Management systému Web51-C – správa ARP cache, nalezení příslušné fyzické adresy rozhraní MAC pro danou IP adresu (ARP resolver). W51ArpManagement(); // updata arp cache, resolve remote hosts,...
11 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Test funkčnosti aplikace Sestavení programu provedeme v menu Project ! Build target, výsledný soubor web51.hex nahrajeme do modulu Charon I. Dostupnost modulu nejdříve ověříme pomocí programu ping (např. ping 192.168.6.68). Zasílá požadavek na ozvěnu hostiteli 192.168.6.68 s 32 bajty dat: Odezva Odezva Odezva Odezva Odezva Odezva
od od od od od od
192.168.6.68: 192.168.6.68: 192.168.6.68: 192.168.6.68: 192.168.6.68: 192.168.6.68:
bajty=32 bajty=32 bajty=32 bajty=32 bajty=32 bajty=32
čas=5ms čas=4ms čas=4ms čas=4ms čas=4ms čas=4ms
TTL=64 TTL=64 TTL=64 TTL=64 TTL=64 TTL=64
Obr. 3: Odezva systému Web51-C na ping K testování funkce programu na PC slouží aplikace udp_client.exe uložená v adresáři web51c\app\02.udp.client\udp.client.pc. Aplikace čte data ze standardního vstupu (klávesnice) a posílá na IP adresu modulu port 2000.
Spuštění programu UDP klient na PC: udp_client 192.168.6.68. -=[ Web51 Demo Application ver 0.1.0 (C) 2002 by www.HW.cz ]=UDP client sends data to remote Web51 board via UDP protocol. Local host : 192.168.6.67 - 192.168.6.67 Remote host : 192.168.6.68 - 192.168.6.68 Enter any characters or press ESC to terminate program. Web51-C project based on T89c51RD2 and RTL8019as.
Obr. 4: Program udp_client.exe spuštěný na PC Zadáme testovací řetězec „Web51-C project based on T89c51RD2 and RTL8019as.“ a na obr. 5 vidíme data přijatá modulem Charon I. Web51c - Embedded Ethernet Project ver 1.0.0 May 20 2003, 21:20:13 - Keil 7.05 -=[ Web51 UDP Client - Demo Application ver. 0.2.0 (C) 2003 by www.HW.cz ]=UDP client receives data from PC via UDP protocol on port 2000 and displayes it on serial port. Web51 network interface parameters MAC addres : 00:0A:59:00:00:00 IP address : 192.168.6.68 Gateway : 192.168.6.254 Netmask : 255.255.255.0 Received data Web51-C project based on T89c51RD2 and RTL8019as.
Obr. 5: Přijatá data modulem Charon I zobrazená na sériovém portu 12 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Demonstrační příklady systému Web51-C Systém We51-C obsahuje dále uvedené demonstrační příklady řešených aplikací •
EEPROM – konfigurace paměti EEPROM systému Web51-C.
•
Wake On Lan - zapnutí stanice na lokální síti pomocí UDP datagramu.
•
UDP klient – příjem UDP datagramu a jeho zobrazení na standardní výstup.
•
UDP server – vysílání UDP datagramu na danou IP adresu.
•
UDP echo server – příjem a následné zpětné vyslání UDP datagramu.
•
ICMP ping – test dostupnosti vzdáleného počítače pomocí ICMP zpráv.
•
SNMP I/O Thermometer – použití SNMP protokolu pro monitorování teploty, ovládání vstupů a výstupů.
Poznámka:
Systém Web51-C využívá pro standardní vstup/výstup sériový port mikroprocesoru T89c51RD2. K zobrazení dat posílaných na sériový port lze použít libovolný sériový terminál. Stačí pouze nastavit přenosové parametry 9600, N, 8, 1 a vypnout řízení toku dat.
Příklad 1 – EEPROM Systém Web51-C používá pro uložení konfiguračních parametrů (IP adresa, maska, brána atd.) interní paměti eeprom mikroprocesoru T89c51RD2. Adresa 0x000 0x006 0x00A 0x00E 0x012
Popis Web51 MAC adresa Web51 IP adresa maska podsítě IP adresa brány IP adresa DNS serveru
Délka [B] 6 4 4 4 4
Tab.4 Struktura paměti eeprom systému Web51-C Program provede následující nastavení konfiguračních parametrů systému Web51-C • • • •
Web51 MAC - počáteční MAC adresa vyhrazená projektu Web51 00:0A:59:00:00:00. Web51 IP adresa – 192.168.6.68 Maska podsítě – 255.255.255.0 IP adresa brány – 192.168.6.254
Zdrojový kód příkladu : Poznámka:
web51c\app\00.eeprom.setup.
Implementace SNMP protokolu využívá vlastní(adaptivní) uspořádání paměti eeprom, který není slučitelný s popisem uvedeným v tabulce 4.
13 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Příklad 2 – Wake On Lan (WOL) Technologie Wake On Lan (Magic Packet Technology) byla vyvinuta firmami AMD a Hewlett Packard. WOL umožňuje zapnutí počítače na lokální síti pomocí speciálního UDP datagramu (ethernetového rámce). UDP datagram musí obsahovat sekvenci 6 x FFh za kterou je zopakována 16 x MAC adresa počítače, který má být probuzen. Počítač musí obsahovat síťovou kartu a základní desku podporující funkci WOL, která musí být zároveň povolena v BIOSu počítače. Zdrojový kód příkladu :
web51c\app\01.wake.on.lan.
Příklad 3 – UDP klient Program přijímá data vyslaná z PC na IP adresu Web51 zařízení port 2000. Obsah UDP datagramu je zobrazen na standardní výstup (sériový port). K testování funkce programu na PC slouží aplikace udp_client.exe, která čte data ze standardního vstupu (klávesnice) a posílá vše na Web51 zařízení. Aplikace je napsaná v jazyce C a lze ji sestavit pomocí kompilátoru MS Visual C++ nebo volně dostupného kompilátoru LCC-WIN32. IP adresa zařízení Web51 lze zadat jako parametr programu např. udp_client.exe 192.168.6.68. Zdrojový kód příkladu :
web51c\app\02.udp.client.
Příklad 4 – UDP server Program vysílá každou sekundu UDP datagram z Web51 zařízení na IP adresu PC klienta port 4000. UDP datagram obsahuje informace o teplotě (simulovaná teplota inkrementující se po 0,1°C při každém odeslání). K testování funkce programu na PC slouží aplikace udp_server.exe, která přijímá vyslaná data z Web51 zařízení. Aplikace je napsaná v jazyce C a lze ji sestavit pomocí kompilátoru MS Visual C++ nebo volně dostupného kompilátoru LCC-WIN32. Zdrojový kód příkladu :
web51c\app\03.udp.server.
Příklad 5 – UDP echo server Program čte data z libovolného UDP portu, zobrazí je na standardní výstup a odpoví (pošle originální datagram) co nejrychleji zpět. Jedná se o rozšíření příkladu 3 a demonstrace běžné situace, kdy obslužný systém funguje formou dotaz – odpověď. K testování funkce programu na PC lze použít např. aplikaci udp_client.exe. Zdrojový kód příkladu :
web51c\app\04.udp.echo.server.
14 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Příklad 6 – ICMP ping Program testuje dostupnost vzdáleného počítače pomocí ICMP zpráv echo request a echo reply. Jedná se o obdobu příkazu ping (Packet Internet Grouper) běžně používaného na PC. Zdrojový kód příkladu :
web51c\app\05.icmp.ping.
Příklad 7 – SNMP Příklad demonstruje detailní popis použití SNMP na jedné rozsáhlé aplikaci, která ovládá binární vstupy, výstupy, LCD display, sériovou linku RS-232 a 1-Wire teploměr. Celý příklad je k dispozici v rámci projektu Web51-C, k jeho zkompilování je ale již třeba kompilátor Keil C51, verze pro SDCC zatím není k dispozici, s pomocí zdrojových kódů pro Keil C51 ji nelze vytvořit. V poslední kapitole najdete podrobný popis jak začít používat aplikaci „SNMP I/O Thermometer“, která je případně k dispozici i jako samostatný text pro tento příklad.
Zdrojový kódy příkladů k problematice SNMP jsou uloženy v adresářích • • • •
web51c\app\10.snmp.LED, web51c\app\10.snmp.LED_table web51c\app\ 10.snmp.LED_variable_all web51c\app\10.snmp.serial_io
15 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Programování firmwaru Atmel Flip Modul Charon je defaultně dodáván s firmwarem Konvertor Ethernet / RS-232, takže nejdříve je nutné nahrát do modulu nový firmware, který obsahuje tuto SNMP aplikaci. Upload firmware do procesorů T89C51RD2 a následovníků se provádí programem Flip od výrobce procesorů – firmy Atmel. Program stáhnete buď na oficiálních stránkách Atmelu, nebo odzkoušenou starší verzi 1.6, kterou vidíte na obrázku najdete na : www.HWgroup.cz na stránce DOWNLOAD mezi užitečnými utilitami.
PSEN – programování Připojte modul Charon k sériové lince RS-232 a osaďte jumper PSEN. Pozici jumperu PSEN najdete vyznačenu na vývojové desce (Charon I&II DB vlevo dole – spodní pozice „Forced“, Charon I DK pod ledkami LINK a POWER). Po osazení jumperu zapněte napájecí napětí, vyberte ve Flipu typ procesoru (Device ! Select ! T89C51RD2) pak načtěte firmware uložený v souboru s příponou .HEX Nastavte programování po sériovém portu RS-232 (Settings ! Communication ! RS-232). Pokud program zahlásí chybu, zkontrolujte osazení jumperu PSEN, použité kabely pro připojení RS-232 (stačí 3. vodičové připojení RxD, TxD, GND), (u Charon I&II DB zkontrolujte zda jste osadili jumper RESET do pozice x51) a případně modul resetujte. - Před programování nezapomeňte zaškrtnout i políčka ERASE a BLANK CHECK. - Po naprogramování a verifikaci odpojte program Atmel Flip ze sériového portu. - Odstraňte jumper PSEN a proveďte reset zařízení. - Pokud aplikace podporuje SETUP režim, osaďte jumper SETUP (T0) a proveďte reset zařízení. Pro nastavení v SETUPu spusťte libovolný sériový terminál (TeraTerm, Terminal, v nejhorším případě HyperTerminál z Windows), nebo náš program „Ethernet Converter SETUP“, který lze také stáhnou ze stránky DOWNLOAD na www.HWgroup.cz. 16 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Programování firmwaru – RD2-Flasher Program „RD2-Flasher“ slouží k programování mikroprocesoru Atmel T89c51RD2 metodou ISP přes sériový port v operačních systémech MS Windows. Jedná se o konzolovou aplikaci určenou pro snadnou integraci do libovolného vývojového prostředí (Keil µVision2, SDCC atd.). Zdrojové kódy programu jsou k dispozici v rámci projektu Web51. RD2-Flasher představuje alternativní řešení k originálnímu softwaru FLIP. Ve spojení se zavaděčem (plně kompatibilní s FLIPem) vyvinutým v rámci projektu Web51 umožňuje přímo programovat eeprom paměť mikroprocesoru T89c51RD2. Umí navíc přepnout modul Charon I přímo do programovacího režimu pomocí ovládání pinu PSEN mikroprocesoru vývodem CTS z RS232. Postup ISP programování Nastavení jumperu PSEN se shoduje s postupem uvedeným u programu FLIP. Detailní popis použití RD2-Flasheru je uveden na adrese http://www.hw.cz/software/rd2_flasher/flasher22.html. Příklad nahrání souboru snmp.hex do modulu Charon I : RD2F -f snmp.hex -c COM1 -b 115200 -m 0 -p 1 -t 2 -q 18 -i 32 -v 1
17 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Aplikace „SNMP I/O Thermometer„ – první kroky RS-232 SETUP pro aplikaci SNMP I/O Thermometer Poté, co nahrajete do modulu aplikaci „SNMP I/O Thermometer“, nastavte parametry sériového kanálu 9600 Bd 8N1, no handshake. Ověřte, zda jste osadili jumper SETUP a odstranili jumper PSEN. Zresetujte modul.
POZOR – DŮLEŽITÉ Po každém nahrání nového firmware, nebo jeho updatu, je NUTNÉ provést nejprve RESET TO DEFAULT, abyste inicializovali hodnoty v konfigurační paměti EEPROM. Proveďte příkaz : d ... load default setup Po jeho provedení a opětovném načtení menu nastavte IP adresu, Gateway, Masku a „target trap adress“. t ... enter target trap address Target trap adress je adresa, kam se budou odesílat UDP pakety se SNMP TRAPy. Jedná se tedy o jedinou adresu, která bude s modulem komunikovat. Pravděpodobně sem nastavte vaší IP adresu. Pokud používáte DHCP, nebo si ji nepamatujete, nejsnáze ji zjistíte spuštěním v příkazovém řádku „IPconfig“ – Systém Windows vypíše DNS, IP, MASK a GATEWAY. Další možnosti jsou 0.0.0.0 = vypnuto, 255.255.255.255 = UDP broadcast. v ... set port value Definuje hodnotu I/O portu po zapnutí napájení. Lze tak definovat například vypnutí nějakých zařízení po restartu systému… Hodnota se nastavuje v desítkové soustavě v rozsahu 0..255 p ... switch port type Mění typ práce s porty mezi direct – přímý přístup na I/O port a shifted – použití posuvných registrů a 1-Wire teploměru. Pokud používáte Charon I&II DB nastavte si verzi s ... Web51 system info Vypíše aktuální nastavené síťové parametry (MAC, IP, GW, MASK) Po nastavení potřebných parametrů, odstraňte jumper SETUP a modul restartujte.. Do sériového portu modul vypíše : „EEPROM loading, preserving MAC, getting“.
Závěr Firmware modulu je nyní nastaven. Je čas připojit se k modulu po SNMP! Pokud si chcete být jisti, že modul skutečně na síti funguje, zkuste si pingnout na jeho IP adresu, ping je součást ICMP a funguje samozřejmě i na UDP a SNMP zařízeních, které nepodporují TCP/IP. 18 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Instalujeme a spouštíme JAVA aplikaci „Thermometer“ Pro obsluhu modulu Charon I, který komunikuje po SNMP můžete používat libovolný SNMP client (browser), protože MIB tabulka je přiložena k aplikaci, ale pokud se SNMP začínáte použijte naši JAVA aplikaci „Thermometer“ která vám vše přehledně zobrazí s pomocí grafiky a zároveň v ní lze snadno a rychle modul nastavovat.
Základní pojmy kolem jazyka JAVA JAVA ještě není běžně rozšířena, proto se vám pokusíme vysvětlit pár základních pojmů : JAVA SDK (Software Development Kit) Obsahuje překladač souborů .java na soubory .class a vše potřebné proto, abyste mohli začít vyvíjet v JAVĚ aplikace. Pokud potřebujete hotové aplikace jen používat, nepřidělávejte si starosti s instalací kompletního balíku. JRE – JAVA runtime enviroment Základní prostředí, které umí JAVA kód spustit a JRE tak potřebujete k tomu, abyste mohli jakoukoliv JAVA aplikaci vůbec pustit. Poslední dobou firma SUN, která JAVU vymyslela hodně propaguje tzv. Java Web Start 1.2. Jedná se o jakýsi další balík rozšíření, který umožňuje spouštět aplikace z jediného souboru, nebo přímo z Internetu atd. Poslední dobou je standardně obsažen v základním JRE. .java Textový zdrojový kód aplikace, jedná se tedy o textový kód. .class Tzv. „byte code“ = univerzální spustitelný kód, který není závislý na platformě CPU. Vzniká přeložením původního textového zdrojového souboru .java. .jar Několik souborů .class sloučených do jednoho souboru .jar = finální spouštěná aplikace. Aplikace je pak jediný soubor, nepotřebujete tolik otevřených souborů, případně komprimovat programy atd.
19 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Poslední verzi ovládající JAVA aplikace Thermometer si lze stáhnout z Internetu: http://www.dfsoft.cz/Charon/
Jak pracovat s aplikací „Thermometer“ K tomu, abyste vůbec spustili soubor „sThermometer.jar“ potřebujete mít napřed nainstalovaný buď JAVA SDK, nebo JRE. Ten není defaultně součástí Windows, tak si jej stáhněte z Internetu : http://java.sun.com/products/javawebstart/download-windows.html Po nainstalování podpory pro JAVA aplikace již na .JAR soubor na disku stačí kliknout a aplikace se spustí sama. Aplikaci také můžete spustit z výše uvedené WWW stránky. Pro uložení IP adresy a proměnných slouží soubor „charon_properties.txt“ ve stejném adresáři : max=50 graph_time=1 min=-20 timeout=5000 IP=192.168.6.16
Aplikace používá freeware Westhawk což je implementace SNMP protokolu pro JAVA aplikace. 20 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Ovládání aplikace Thermometer Před spuštěním JAVA aplikace nastavte IP adresu modulu Charon v textovém souboru.
Options Pokud IP adresu modulu nenastavíte v charon_properties.txt, program bude hlásit, že modul nenalezl. IP lze nastavit ještě v menu „Options ! Host IP“, spolu s timeoutem po kterém SW nahlásí chybu SNMP komunikace. V „Options“ dále nastavíte parametry grafu teploty (rozsah grafu a časy mezi měřeními).
Thermo Nastavuje alarmy = hodnoty, při kterých SNMP zařízení (modul Charon) nečeká na dotaz klienta (zde JAVA aplikace) na teplotu a sám hlásí překročení povoleného rozsahu. Hodnota alarmu je zobrazena vlevo na stupnici teploměru červenou a modrou šipečkou. Hlášení o alarmu se vypisují v textovém okně nad grafem s průběhem teploty. Vyzkoušejte alarmy – nastavte horní mez teploty (červená šipka) na cca 31°C a vezměte teploměrové čidlo do ruky, teplota poroste a při překročení nastavené meze se objeví hlášení : „04:35:07 [0] '31.13 °C' Temperature High from 192.168.6.16“ Klimatická poznámka : Pokud je 32 – 36 °C běžná teplota, ve které se pohybujete, použijte spodní mez na cca 15°C a kostku ledu. ☺.
TEA Tea je algoritmus pro kryptování dat, pokud potřebujete zabezpečit autorizaci protistrany. 21 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Ethernet Toto menu slouží ke vzdálenému nastavení parametrů modulu. Kromě standardních IP parametrů, které lze definovat i v SETUPu přes RS-232 (IP adresa modulu, Maska, Gateway) lze nastavit také přijímací port modulu (defaultně 2000) a IP adresu a port kam jsou odesílány SNMP Trapy (IP adresa počítače kde běží JAVA aplikace, nebo standardní SNMP klient). Specialitou je „Allowed IP adress range“ což je rozsah adres s nimiž modul komunikuje.Rozsah se definuje hodnotou IP adresy a její maskou, jako v klasických sítí pro rozlišení komunikace v lokální síti / komunikaci přes Gateway.
Serial Menu pro nastavení parametrů sériové linky RS-232 na modulu. Parametr „serial timeout“ řídí „paketizer“ (algoritmus, který souvislý tok dat z RS-232 rozkládá na jednotlivé pakety, které odesílá do Ethernetu). Parametr definuje maximální délku mezery za posledním přijatým znakem, která se má respektovat, než je z přijatých dat vytvořen paket a odeslán po SNMP. Počet timeout znaků je tedy vlastně časové zpoždění, ale udává se ve znacích, aby jej uživatel nemusel přepočítávat při změně baudové rychlosti. Pokud je tedy na 9600 Bd nastaveno serial timeout = 7 a přijde souvislý paket 15 znaků (trvá cca 15 ms), čeká po posledním znaku modul dalších 7 ms (7 ms = cca 7 znaků na 9600 Bd) než přijatých 15 bytů sbalí a odešle jako SNMP trap. Poznámka : Všechny vzdáleně nastavené parametry modul ukládá do interní EEPROM a po spuštění je aplikace znovu z modulu po SNMP načítá, takže nemusíte mít obavu o ztrátu konfigurace.
Port Menu port nastavuje typ přístupu k 8. bitovému I/O portu na modulu Charon. •
Parallel I/O port P1 je použit jako přímých 8 pinů. Šířka portu má pak smysl 1..9, kdy 9. bit je vstup INT0 (druhý jumper vedle jumperu SETUP). Pokud nastavíte šířku 4, jsou automaticky horní 4 piny přiřazeny jako síťová indikace, podle následujících funkci : - P1.4 – PING - P1.5 – ARP - P1.6 – SNMP - P1.7 – UDP V přímém režimu nelze port dále rozšířit a nelze používat 1-Wire sběrnici, ani posuvné registry.
•
Special I/O port je rozšířen pomocí posuvných registrů a dalších periferií podle dokumentace „Rozšíření sériových portů modulů Charon“, což je plně kompatibilní se schématem k doporučené vývojové desce Charon I&II Development Board. - I/O porty lze rozšířit až na 32 vstupů a výstupů - Na P1.0 lze připojit až 4x 1-Wire teploměr Popisované aplikace SNMP I/O Thermometer nepodporuje rozšíření o A/D převodníky (LCD displej zatím není, ale bude brzy podporován), což zmíněná specifikace umožňuje. 22 / 24
16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Použití aplikace s obecným SNMP clientem Pokud budete chtít použít aplikaci s obecným SNMP clientem, budete potřebovat MIB tabulku k aplikaci v modulu Charon. Tuto tabulku najdete buď v adresáři příkladů k originálnímu „ANSI C SNMP Development System“ nebo je ke stažení spolu s .HEX souborem a zde popsanou aplikací sThermometer.jar Pro ověření funkce nebo pro reálnou aplikaci lze použít libovolný SNMP Client. Po nainstalování clienta, je třeba nahrát do příslušného adresáře .mib soubor. K tomu aby jej SNMP client vzal k dispozici je třeba nahranou tabulku přikompilovat k výběru používaných MIB. Po úspěšném přikompilování by měl client SNMP zařízení Web51 rozpoznat a zobrazit strom s proměnnými, které obsahuje.
23 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz
HW group
Web51-C první kroky
Závěr Projekt Web51 má za sebou již několik let vývoje a stovky aplikací, což se positivně promítá do jeho současného stavu. V oblasti implementace síťových technologií do embedded zařízení si našel své stále místo. Verze Web51-C rozšiřuje stávající možnosti projektu zvláště v oblasti managementu sítí. Implementace SNMP protokolu otevírá cestu k monitorování aktivních prvků sítě, dálkovému řízení a změně konfigurace sítě. Použití programovacího jazyka C zpřehledňuje a zpřístupňuje celý systém většímu okruhu vývojářů. Programování v jazyku C má za následek rapidní snížení doby vývoje aplikací v porovnání s psaním v assembleru.
Literatura & zajímavé odkazy •
[1] Modul Charon I http://www.hwgroup.cz/products/charon1/
•
[2] Projekt Web51 - http://web51.hw.cz/
•
[3] Keil C51 – http://www.keil.com/
•
[4] SDCC – http://sdcc.sourceforge.net/
•
[5] RD2-Flasher http://www.hw.cz/software/rd2_flasher/flasher22.html
•
[6] Atmel FLIP – http://www.atmel.com/
•
[7] Charon I - SNMP I/O Thermometer – http://www.hwgroup.cz/products/charon1/snmp/
•
[8] LCC-WIN32 – http://www.cs.virginia.edu/~lcc-win32/
•
Vše o SNMP - http://www.snmplink.org/
•
http://www.castlerock.com - SNMPc Network Manager
•
SNMP Client který lze licencovat na 30. denní trial verzi - http://www.mg-soft.com
•
Server se zajímavými nápady kolem SNMP - http://www.pcmeasure.com
•
CodeGen - Generátor kódu, parser a merger - program analyzuje MIB a generuje kostru kódu podle zadané šablony. Usnadňuje vytváření MIB - http://www.dfsoft.cz/products.htm
Související dokumentace •
web51c\app\Readme.txt Všechny SNMP aplikace mají propracované readme v angličtině.
•
Charon I&II Development Board – Schémata a popis rozšířeného vývojového kitu.
•
Charon I – Dokumentace – Schéma a popis samotného modulu a programování
•
Projekt Web51 - http://web51.hw.cz/
•
www.Hwgroup.cz - Dokumentace k finálním produktům a řešením.
24 / 24 16.10.2003
Rumunská 26, Praha 2, 120 00 – Tel. 222 511 918
www.HWgroup.cz