Komunikačný protokol NOWP (Network objects word protocol) - jadra systému
Sieťový multiprocesorový operačný systém NOW (Network Object World) vykonáva riadenie procesov pre ostatné softvérové vrstvy programu. Jeho súčasťou sú softvérové moduly:
- Inicializácie – inicializujú interné štruktúry operačného systému
- Prerušenia – zabezpečujú systémovú správu prerušení. Obsahujú prerušenia od:
-
- komunikačných kanálov DMA
- matematických HW operácií
- operácií so zásobníkom
- adresovania
- správnosti funkcie oscilátorov
- výnimky pre smerníky štruktúr
- systémové časovače a synchronizácie behu procesov operačného systému
- reálny čas
- Virtuálnu pamäť, jej správu a rozdelenie
- nFAT – súborový systém na úschovu dát, so systémom rovnomerného umiestňovania blokov dát pamäti
- Hodiny reálneho času. Zabezpečujú reálny čas a kalendár. Sú implementované interne v mikrokontroléri hardvérovo, alebo softvérovo cez funkcie RTC. Synchronizáciu zabezpečuje externý kryštál 32kHz
- Správu verzií
- Časovanie a taktovanie procesov a chodu NOW-OS
- Registre – obsahujú globálne aj lokálne premenné systému, ako aj aplikačných funkcíí modulov aplikácií, systémových modulov (nie modulov NOW-OS), a driverov
- Pomocné funkcie NOW-OS
- Systémový cyklický buffer pre presúvanie dát medzi modulmi a NOW-OS
- Správu udalostí a autonómie. FIFO buffer pre prijaté správy
- Správu príkazov. Štruktúru File system (Súborový systém) pre prijaté pakety, smerovacie funkcie
- Správu zariadení. Načítavanie, evidenciu, adresovanie, smerovanie, identifikáciu a popis zoznamov elementov
- API rozhranie NOW-OS. Funkcie pre drivery, moduly a aplikácie
-
Dynamicky vytvárané objekty pre prácu aplikácií
s NOW-OS.
Architektúra systému je stavebnicová. Základ je jadro a konfiguračné súbory pre jadro a hardvér a aplikácie. Každé zariadenie ktoré obsahuje mikrokontrolér, pracuje vnútorne podla tejto logiky:
Architektúra je koncipovaná ako multiprocesorová decentralizovaná a tak NOW-OS môže bežať na viacerých mikrokontroléroch, ktoré medzi sebou komunikujú protokolom NOWP Operchip. Komunikácia medzi procesormi, ako aj vo vnútri jedného mikrokontroléra je zabezpečovaná protokolom NOWP Operchip na rôznych fyzických komunikačných vrstvách. Komunikáciu automaticky zabezpečí jadro operačného systému.
1. Úvod
Dokument je špecifikáciou principu komunikácie jadra operačného systému NOW-OS so softvérovými modulmi operačného systému.
Systém OPERCHIP vycháza z princípu decentralizovaného riadenia, kde všetky zariadenia komunikujú medzi sebou priamo, alebo cez WEB server. Vačšina zariadení sú jednoduché, fungujúce v systéme ako rozširujúce porty. Ostatné zariadenia, sú maximálne jednoduché. Každé zariadenie pracuje autonómne a tým je zabezpečená núdzová funkčnosť pri výpadku komunikačnej siete.
Protokol NOWP pracuje nad protokolom TCP/IP – ETH.
2. Vymezenie pojmov
2.1.1. Typové označenie zariadenia (DeviceType)
Kódové označenie zariadenia alebo projektu. Za dvojbodkou je číslo verzie typu zariadenia.
Príklad: „BinaryLight:1“
2.1.2. PN (Part Number)
Identifikuje typovou radu výrobku, charakterizuje vlastnosti výrobku. Je dané pred výrobou a je súčasťou etikety výrobku spolu s SN. Nie je možné ho meniť. Hodnota je reťazec.
PN môže byť zhodné s Typovým označením zariadenia.
2.1.3. EAN (EAN-13)
Je jednoznačný kód pridelovaný združením GS1 pre 1 typ výrobku. Viac Wiki. Pre produkty Operchip platí, že na systémovej, etikete výrobku uvádzame minimálne výrobné číslo : PN + SN. V prípade že výrobky budeme distribuovat cez obchodnú siet, tak aj EAN kód.
Platí vztah 1 EAN = 1 PN.
2.1.4. SN (Serial Number)
SN číslo je „podčíslom“ výrobného čísla a je unikátnym pre každý jeden kus výrobku daného typu. Je dané pri výrobe a je súčasťou systémovej etikety výrobku spolu s PN. Hodnota je číslo typu Unsigned 64-bit integer.
Platí vztah 1 PN = n SN.
2.1.5. Výrobné číslo
Je tvorené PN a SN a je to jednoznačný identifikátor každého kusu výrobku na celom svete. Je dané vo výrobe, nie je možné ho meniť.
Pre projekty Operchip je SN 8 znakové číslo v šestnástkovej sústave. Všetko su ASCII znaky.
Príklad: PN: SC4B-001, SN: 00002030, spolu SC4B-001000A2023
2.1.6. IP Adresa
Dynamická adresa HW zariadenia TCP-IP protokolu ETH. IP adresa je zariadeniu prideľovaná automaticky po pripojení zariadenia do siete DHCP serverom.
2.1.7. UDN (Unique Device Name)
Ide o jednoznačnú unikátnu identifikáciu zariadenia. Je unikátna pre celý svet.
V našom prípade sa skladá z PN, čísla elementu a SN.
Príklad: SC4B-001.05.00002030
2.1.8. DCID (Device Component ID)
Jednoznačné označenie hardwérového zariadenia alebo prvku v rámci jednej sústavy vo forme 16 bitovej adresy. Toto číslo je pridelené každému HW elementu pri prvom zapojení do sústavy a HW element si ho uchováva aj pri vypnutí napätia. Ak dôjde k presunu HW komponentu z jednej sústavy do druhej, je toto číslo predelené znovu. Funguje to analogicky jako adresácia IP. DCID prideľuje web server.
DCID je na úrovni serveru zviazané s UDN.
Hodnota typu je 2byte (Unsigned 16-bit integer)
2.1.9. HW Zariadenie (HW Device)
Hardvérový prvok sústavy, ktorý je pripojený priamo v systéme a komunikuje protokolom NOW Operchip.
2.1.10. HW Prvok (Element)
Môže byť aj HW zariadenie alebo akékoľvek zariadenie zapojené v sústave. Platí, že nemusí priamo komunikovať protokolom NOW Operchip, ale aj iným protokolom alebo vôbec nekomunikuje. V sústave môže figurovať ako virtuálny prvok na ktorého sa ale vzťahuje protokol NOW Operchip.
2.1.11. Paket
Je “balík“ dát o veľkosti a štruktúre špecifikovanej použitým protokolom.
2.1.12. Správa (Message)
Správa je jeden ucelený balík dát odoslaný odosieľateľom príjemcovi.
Požiadavka (request) .. je signál, ktorý vyslal HW prvok.
Odpoveď (answer) .. je odpověď na požiadavku.
2.1.12. Udalosť (Event)
Udalosť (event) .. je udalosť vyslaná HW prvkom.
4. Hlavička protokolu a formát zprávy (message)
- Sender DCID: DCID Odosieľateľa. 16bit.
- Receiver DCID: DCID Príjemca správy. 16bit.
-
Command
ID
: Číselný a jednoznačný identifikátor príkazu
alebo udalosti. 16bit.
MSB
bit15 | bit14 | bit13 | bit12 | bit11 | bit10 | bit9 | bit8 |
1 - error flag 0 - no flag |
1 - event flag 0 - no flag |
1 - answer flag 0 - no flag |
cmd | cmd | cmd | cmd | cmd |
LSB
bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
cmd | cmd | cmd | cmd | cmd | cmd | cmd | cmd |
- Data Length: Dĺžka rozšírenej datovej časti. 16bit.
- Dáta: Datová časť môže obsahovať čokoľvek - parametre pre príkaz, dáta .... Maximálna dĺžka je 65536 bytes.
Základné príkazy musí vedieť obslúžiť každý HW element:
1. GetProtocolVersion
Požadavek na zaslání verze komunikačního protokolu zařízení.
Formát paramterů odpovědi:
- Řetězcová konstanta „NOWP v1.0 “
-
- (podle které poznáme, ze zařízení komunikuje správným protokolem)
- Verze protokolu – řetězec
-
- Verze protokolu charakterizuje stáří protokolu tj. počet podporovaných funkcí. Momentálně je verze 1.
2. GetDescription
- DeviceType: Typové označení zařízení – řetězec // UPnP compatible
- Device name: Názov zariadenia, ktorý je aj na štítku - reťazec
- RevisionOrVersion: Revize nebo verze zařízení – řetězec
- ProductionNumber: Výrobní číslo – řetězec
- UDN: UDN // UPnP compatible
- FirmwareSignature: Označení firmware – řetězec
- FirmwareVersion: Verze firmware – řetězec
- ProductionDate: Datum výroby – řetězec
-
- formát: 4:YYYY.MM.DD
- Manufacturer: Výrobce – řetězec // UPnP compatible
-
- default: www.positro.com, nebo „EXPANDER“
- SupportedProtocols: Podporované protokoly
-
- Seznam protokolů, které zařízení podporuje
3. GetHwElementCount()
Vrátí počet podřízených elementů, které jsou podřízeny přímo.
Formát paramterů odpovědi:
- Count - UInt16 (2 byte) – Počet podřízených elementů.
4. GetHwElementDCID(UInt16 aSubElementIndex)
Zařízení na tento dotaz odešle odpověd (DCID a UDN) o svém podřízeném zařízení, které je na daném indexu aSubElementIndex.
Formát paramterů odpovědi:
5. SetHwElementDCID(UInt16 aSubElementIndex, UInt16 aNewDCID)
Podřízenému elemetu s indexem aSubElementindex přidělí nové DCID. Zařízení/Komponenta si zapamatuje svůj nový DCID a zároveň změnu oznámí všem připojeným (navázaným) HW komponentám. Po oznámení, své staré DCID zapomene.
Výsledkem je odpověď bez parametrů, nebo Error.
6. Ping
Slouží pro udržení spojení, nebo pro zjištění životaschopnosti navázaného spojení. Příjemce reaguje odpovědí s nulovými Daty.
Nemá vstupní parametre.
7. GetLastErrors
Jako odpověď na tento příkaz zařízení zašle seznam posledních chyb. Seznam chyb není nijak limitován délkou, záleží na zařízení, kolik chyb je schopno držet v paměti. Doporučeno je posledních 10, minimálně však 1. Formát je daný formátem příkazu Error a způsobem zapsání dat do kolekce.
8. Reset
Zařízení se musí restartovat, nebo nastavit do defaultních hodnot. Před restartem však odpovídá pomocí StandardReply s nulovými Daty.
Typy zariadení sú typizované virtuálne elementy na ľubovolnom HW zariadení. Napríklad "TemperatureSensor:1". Typ zariadenia má balíčky funkcií pomocou ktorých je možné komunikovať s virtuálnym elementom protokolom NOWP. Typ zariadenia je nezávislý na hardvéri.
Balíček funkcií je súbor funkcií ktoré podporuje konkrétnu službu. Napríklad "_SensorHistory:1". Súbor určitých balíčkov funkcií je typ zariadenia. Napríklad "NoiseSensor:2". Typ zariadenia je konkrétny HW element. Napríklad "Senzor hluku". HW element je virtuálny prvok na ľubovoľnom hardvéri a komunikuje sa s ním protokolom NOWP. Napríklad komunikácia s konkrétnym senzorom na ľubovoľnom hardvéri. Tento konkrétny senzor má svoju DCID adresu a funkcie definované typom zariadení a k nemu priradenými balíčkami funkcií. Balíčky funkcií sú normované a rovnaké pre akýkoľvek hardvér. Týmto je zabezpečená úplná nezávislosť systému komunikácie s hardvérovým zariadením.