Jste zde

Co to je Ethernut

Cílem tohoto článku je shrnutí všech podstatných vlastností tohoto malého real time operačního systému s podporou mnoha základních Ethernetových protokolů (IP, ICMP, TCP, UDP, HTTP, DHCP, SNTP a dalších), který se stále vyvíjí a s tím se postupně objevují nové možnosti použití.

Modulární architektura

Modulární architektura operačního systému(Nut/OS) a jeho síťové vrstvy(Nut/Net) nám umožňuje sestavit operační systém s podporou síťové vrstvy, ale i bez ní. Takto lze sestavit systém, který dokáže efektivně řešit požadovaný problém s minimálními požadavky na paměť RAM a FLASH.

Modulární architektura se neomezuje jen na podporu samotné síťové vrstvy, jakožto rozšíření vlastností operačního systému, ale je využita i v případě podpory speciálních protokolů aplikační vrstvy síťového modelu:

  • HTTP – vytvoření malého webového serveru v našem zařízení
  • DHCP – automatická konfigurace IP adresy a masky našeho zařízení z DHCP serveru
  • SNTP – synchronizace času operačního systému se zdrojem přesného času v internetu nebo lokální síti
  • a další…

 

Má Ethernut smysl i pro aplikace mimo Ethernet ?

S Ethernutem lze vytvářet i malé aplikace jen s podporou základních vlastností operačního systému bez síťové vrstvy. Výhodou Nut/OS jsou zdarma poskytnuté nástroje ne nepodobné standardním operačními systémům a tím i pohodlí a nebývalá rychlost vývoje aplikací oproti projektům, kde není žádný operační systém použit.

Proč použít OS?
Programátor projektu bez operačního systému se sice nemusí nic nového učit, ale často musí vytvářet to, co je již v operačních systémech obsaženo a mnoho funkcí tak musí napsat od podlahy. V dnešní době velké konkurence a krátkého času na vývoj projektů je použití operačního systému, jako je Nut/OS s jeho síťovou vrstvou Nut/Net, výhodné a lze dosáhnout zajímavých výsledků v krátkém čase...

 

Podpora ovladačů periferních zařízení

Architektura nut/OS je postavena na driverech

  • USART
  • Ethernet
  • AHDL
  • TWI - I2C
  • VS1001K - Driver MP3 dekodéru VS1001K
  • A další...

Ovladače tvoří standardní rozhraní dané periferie za pomocí DCB (Device Control Block) struktury. Na konkrétní ovladač následně můžeme otevřít datový proud a pracovat s danou periferií pomocí standardních vstupně/výstuních funkcí.
DCB se stává jakýmsi mostem mezi řídicími funkcemi konkrétní periferie a sadou standardních funkcí.
Ovladače lze libovolně upravovat a vytvářet své vlastní!

Volně dostupné zdrojové kódy

Projekt Ethernut je šířen pod GNU GPL licencí, kromě jedné výjimky.... Toto je neocenitelné pro výslednou cenu produktu. Tato skutečnost nepřináší jen ekonomické výhody, ale také možnost modifikovat jednotlivé součásti operačního systému nebo jeho síťové vrstvy. Vývojářům tak umožňuje napsat bez větších problému podporu nového protokolu síťové vrstvy nebo modifikovat stávající protokol pro potřeby konkrétní aplikace…

Celý projekt Ethernut je postaven na jazyce ANSI C, který ve výsledku zefektivňuje práci celého projektu, ale také umožňuje portaci Nut/OS a Nut/Net na různé cílové platformy. V současnosti jsou preferovány procesory rodiny AVR (ATmega128), ale pracuje se i na portu pro procesory ARM, Hitachi a mnohé další.

 

Aplikační rozhrání Nut/OS:

  • Nut/OS je postaven na kooperativním (nepreemptivním) plánování CPU. Poskytuje tak aplikacím rozhraní pro správu threadů. Jednotlivé thready lze spouštět, zastavovat, řídit jejich prioritu…
  • Pro práci s časově závislými událostmi a řízení meziprocesních vazeb nabízí Nut/OS rozhraní pro zpracování a generování událostí…
  • Většina funkcí aplikačního rozhraní umožňuje definovat požadovaný timeout, jako maximalni dobu pro dokončení operace. Práce s těmito funkcemi je pohodlnější, ale také šetří paměť a přispívá k větší přehlednosti kódu...
  • Často potřebujeme obsluhovat určité děje v periodických intervalech. Tyto požadavky řeší aplikační rozhraní časovačů(timerů). Lze vytvářet timery s jednorázovým, ale i periodickým časováním…
  • Práce se všemi vstupy/výstupy v Nut/OS, ale i Nut/Net je přístupná přes datové proudy. Můžete tak psát programy, které pracují s proudem dat, jehož zdrojem je port UART, TCP spojení se vzdáleným klientem, nebo třeba jen soubor uložený v paměti procesoru. Přitom používáte standardní funkce fprintf,fscanf,fread,fwrite,fgetc,fputc atd…
  • Nut/OS umožňuje uložit při překladu do programové paměti soubory. K těmto souborům lze přistupovat jako k datovému proudu. Samozřejmě že jen pro čtení, nikoliv pro zápis. Pro práci s čtením dat takového souboru z FLASH paměti procesoru je důležitá sada stanadrdních funkcí, které jsou upraveny přímo pro tuto činnost. Snižuje se tak množství potřebné paměti RAM, protože se vyčítají data přímo z FLASH paměti... 
  • Samozřejmostí v Nut/OS je podpora práce s dynamicky přidělovanou pamětí…

Tento krátký přehled je jen letmým odrazem skutečných možností Nut/OS. Pro podrobnější informace odkazuji na detailní manuál Nut/OS…

Síťová vrstva

Podpora síťové vrstvy je zahrnuta pod názvem Nut/Net. Nabízí podporu protokolu IP s jeho servisními protokoly:

  • ICMP - sloužící pro testování přítomnosti zařízení v síti a podporu chybových zpráv…
  • ARP - překlad adresa(IP)=>adresa(MAC) 
  • Podpora transportních protokolů:
    • TCP/IP stack - řízený datový proud zajišťující trasportní službu se spojením (zabezpečný přenos dat)
    • UDP/IP - trasportní služba bez spojení (nezabezpečný přenos dat)
    • PPP – Transportní protokol protokolu IP s podporou doplňkových služeb pro řízení přenosu...
  • Servisní protokoly vyšší úrovně:
    • DHCP - automatická konfigurace IP adresy a masky našeho zařízení z DHCP serveru
    • DNS – podpora jmenných serverů 
  • Aplikační protokoly:
    • HTTP – tento protokol (verze 1.0) je snad nejzajímavější. Dovoluje nám velice jednoduše napsat http server, který pak poskytuje na své IP adrese možnost konfigurovat naše zařízení pomocí webové stránky nebo nám takto může poskytovat informace např. o výsledcích měření v naší aplikaci. S tímto úzce souvisí CGI (Common Gateway Interface) skripty(viz dále)…

 


HTTP server a CGI skripty…

Podstatnou vlastností celé implementace http serveru v projektu Ethernut je možnost vytvořit stromovou strukturu adresářů a souborů složených z html stránek.

Jednotlivým adresářům lze přiřazovat hesla, o která je požádan http klient v případě přístupu na požadovanou stránku uloženou v heslem chráněném adresáři…
Mnohem důležitějším faktem je, že CGI skripty lze generovat dynamicky a tak vytvářet stránky s aktualizovanými údaji pro uživatele…

Přitom práce s CGI skripty je naprosto jednoduchá, vystačíte si s minimem dodatečných znalostí, pokud již umíte pracovat s datovými proudy pomocí standardních funkcí jazyka ANSI C a umíte HTML…

Nemusíte nutně kupovat vývojový SW…

Pokud zvolíte platformu Nut/OS a Nut/Net pro své aplikace, tak máte obrovskou výhodu v tom, že můžete vlastní vývoj provádět na:

  • Windows (ICCAVR ImageCraft, nebo free vývojový nástroj AVRGCC)
  • Linuxu (AVR GCC)


Nástroje pro vypálení programu jsou opět zdarma a pro:

  • Windows (AVR Studio – dodává přímo výrobce www.atmel.com)
  • Linux (UISP)

Členové vašeho týmu tak mohou pracovat na své oblíbené platformě…

 

Instalace Nut/OS a vývojového prostředí

Celý projekt Ethernut(Nut/OS a Nut/Net + sada příkladů) se distribuuje jako jedinný soubor v tzv. stabilních verzích…Projekt Ethernut se však vyvíjí neustále a tak je možné přes tzv. CVS server(server pro správu verzí) získat bezplatně aktualizované opravy jednotlivých součástí projektu Ethernut…

V posledních verzích Ethernut podporuje inteligentní konfigurační utilitu (Nut/OS Configurator), která umožňuje automatické nastavení celého projektu. Lze nastavovat typ cílového procesoru, typ ethernetového řadiče a mnoho dalších parametrů systému. Přitom aplikace, které jsou odladěny na procesorech rodiny AVR lze s minimem úprav převést na procesor ARM a další.

Podrobné informace o instalaci Nut/OS a vývojových prostředků uvádí detailně EthernutSoftwareManual. Český popis instalace Nut/OS, AVR GCC a postup kompilace a vypálení výsledného programu do modulů CharonII, které jsou s projektem Ethernut kompatibilní se připravuje...

Hotová řešení

Výhodou použití Ethernutu jsou volné zdrojové kódy, velké kusy hotového kódu, ale také existující HW, který lze koupit hotový za přiměřenou cenu a lze se tak soustředit pouze na Váš SW projekt.

Protože pro začátečníka může být zorientování se na první pohled složité, uvádíme výpis HW, který je k dispozici:

  • Ethernut 1.3 - Jednodesková verze s ATmega128, 10 MBit Eth, 32 kb SRAM
  • Ethernut 2.1 - Jednodesková verze s ATmega128, 100 MBit Eth, 512 kb SRAM, 512 kb SPI FLASH.
  • Medianut 1.1 - Rozšiřující deska na základní Ethernut desku, která obsahuje HW pro přehrávání MP3 atd. Lze tak udělat např. Ethernut radio..  
  • Charon 2 - vestavný (embedded) modul
  • Charon 2 DK - vývojový kit pro Charon 2 - Charon 2 DK
  • Hyperion Unit - Kovová krabička se dvěma sériovými porty a Ethernetem, se základní deskou a modulem Charon 2.

 

 

 

 

 

 

 

 

 

 

Marek Pavlů
marekpavlu@mybox.cz

DOWNLOAD & Odkazy

  • www.ethernut.de - Projekt Ethernut
  • www.atmel.com - Výrobce cílového procesoru z rodiny AVR
  • www.hwgroup.cz – Výrobce modulů Charon II kompatibilních s projektem Ethernut, HW STK500 (ISP programátoru), vývojových desek pro moduly CharonII a cílových aplikací založených na projektu Ethernut a další…
Hodnocení článku: