|
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
Download
Web51-C – Getting Started
Podrobný manuál, popisující které kompilery (SDCC a Keil uC51) je třeba použít a jak zkompilovat příklady. Popis vývoje a odladění aplikací v Keilu i SDCC kompileru. Krok-za-krokem popis, jak otestovat aplikaci SNMP Thermo Meter..
Web51-C – Evaluation version
Testovací verze v samorozbalitelném Instalátoru pro Win32. obsahuje :
- Full source code of the UDP stack
- Ethernet controller driver in .LIB version only
- SNMP demo examples as .HEX files only, no source code
Blokové schéma projektu Web51-C
Demo verze
ANSI C - SNMP vývojový systém
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 8bitový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é periférie - ethernetový řadič RTL8019as.
Adresový prostor |
Použito |
0x0000 – 0xFBFF |
FLASH 63 kB (CODE) |
0xFC00 – 0xFFFF |
Bootloader 1 kB |
Tab.1 Paměťový podsystém Web51-C – interní paměť programu CODE
Adresový prostor |
Použito |
0x0000 – 0x7FFF |
SRAM 32 kB (XRAM) |
0x8000 – 0x801F |
RTL8019as Ethernet controller |
0x8020 – 0x80FF |
Free for the additional HW |
0x8100 – 0xFFFF |
The 0x8000 – 0x80FF address space overlapping |
Tab.2 Paměťový podsystém Web51-C – externí paměť dat XRAM
Adresový prostor |
Použito |
Adresový prostor |
Použito |
0x0000 – 0x03FF |
SRAM 1 kB (XRAM) |
0x0000 – 0x07FF |
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 8bitové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.
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 2 (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é periférie
Šíř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é periférie v příkladu „SNMP
I/O Thermometer“ fungují pouze, pokud je z JAVA aplikace (nebo z obecného
SNMP clienta) nastaven pro periférie mód „special“, v režimu „paralel“
lze přistupovat pouze přímo na 8bitový 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é periférie,
včetně LCD displeje.
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í. 8bitové 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. 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 Compiler), 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
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.
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.
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).

fig. 1: Keil C51 - µVision2 IDE
ETH_ADDR MY_ETH_ADDR = {{0x00, 0x0A, 0x59, 0x00, 0x00, 0x00}};
// Web51 MAC adresa
IP_ADDR MY_IP_ADDR = {{192,168,6,68}}; // Web51 IP adresa
IP_ADDR GW_IP_ADDR = {{192,168,6,254}}; // maska podsítě
IP_ADDR NETMASK = {{255,255,255,0}}; // IP adresa brány
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.
Jméno souboru |
Popis |
| WEB51 |
vstupní data pro debugger |
| WEB51.HEX |
sestavený kód programu |
| WEB51.M51 |
symbol table |
| WEB51.OPT |
aktuální nastavení µVison2 (otevřené soubory, velikost oken,
…) |
| WEB51.UV2 |
soubor projektu |
| EESETUP.C |
zdrojový kód programu (Eeprom Setup) |
| EESETUP.LST |
výpis programu po provedení sestavení |
Poznámka: 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). .

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 ]; /* The memory for the received UDP datagram */
data WORD EthProt; /* The type of the detected protocol */
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.) */
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,...
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).

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.

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.

Obr. 5: Přijatá data modulem Charon I zobrazená na sériovém portu
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 client – 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 |
Popis |
Délka [B] |
0x000 |
Web51 MAC adresa |
6 |
0x006 |
Web51 IP adresa |
4 |
0x00A |
maska podsítě |
4 |
0x00E |
IP adresa brány |
4 |
0x012 |
IP adresa DNS serveru |
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 IP – 192.168.6.254
Zdrojový kód příkladu : web51c\app\00.eeprom.setup.
Poznámka: Implementace SNMP protokolu využívá vlastní(adaptivní)
uspořádání paměti eeprom, který není slučitelný s popisem uvedeným v
tabulce 4.
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.
Example 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.
Example 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
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čí 3vodič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.HW-group.com
.
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 :
RD2F -f snmp.hex -c COM1 -b 115200 -m 0 -p 1 -t 2 -q 18 -i 32 -v 1
Aplikace „SNMP I/O Thermometer„
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.
Objednávky
Několik kusů vývojového kitu držíme skladem, takže jej můžeme odeslat během 1-2 dnů. Objednávejte prosím přes náš Internetový obchod obchod.HW.cz
Kompletní dodávka obsahuje
- Charon I&II Development Board
- Charon I embedded module
- Napájecí adaptér 9V / 300 mA
- RS-232 LapLink kabel (2x DB9F křížený)
- Tištěný manuál První kroky
- CD se softwarea a zdrojovými kódy k UDP stacku, a všem příkladům...
Aktuální cenu najdete v našem obchod.HW.cz
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.
Literatura & zajímavé odkazy
|