OpenTag

OpenTag
Utvecklare JP Norair
Skrivet i C
OS-familjen Inbäddat operativsystem
Arbetstillstånd Nuvarande
Källmodell Öppen källa
Initial release 2011 ; 12 år sedan ( 2011 )
Senaste släppningen 0.4.0 / 8 november 2012 ; 10 år sedan ( 2012-11-08 )
Marknadsföringsmål Trådlösa sensornätverk
Tillgänglig i engelsk
Plattformar MSP430 , STM32
Typ av kärna Exokernel
Licens OpenTag-licens
Officiell hemsida OpenTag wiki

OpenTag är en DASH7- protokollstack och minimalt realtidsoperativsystem (RTOS), skrivet i programmeringsspråket C. Den är utformad för att köras på mikrokontroller eller radiosystem på ett chip (SoC) . OpenTag konstruerades för att vara ett mycket kompakt mjukvarupaket. Men med korrekt konfiguration kan den också köras i vilken POSIX- miljö som helst. OpenTag kan också tillhandahålla all funktionalitet som krävs för alla typer av DASH7 Mode 2-enheter, snarare än bara den självbetitlade "tagg"-typ slutpunktsenhet.

Designfilosofi

OpenTag implementerar DASH7 Mode 2, som specificerar ett monolitiskt system som omfattar OSI- lager ett till sex, en del av lager sju, såväl som applikationslagret . OpenTag är designad för att vara lätt och kompakt, eftersom den är avsedd att köras på resursbegränsade mikrokontroller. Som ett monolitiskt system implementerar det inte olika lager av OSI-modellen på ett sätt som gör att de kan distribueras på system som skiljer sig från den typiska, och nästan universella, MCU + RF-transceiver- arkitekturen , som används av WSN- och M2M - noder. Men OpenTag RTOS använder en exokernel- arkitektur (från och med version 0.4), så en monolitisk kärna krävs inte. Applikationer som utvecklats för OpenTag kan säkert referera till biblioteket eller komma direkt åt hårdvaran, vilket anstår exokernel-designmodellen.

Funktioner

  • Den har en lätt förebyggande multitasking exokernel RTOS.
  • De flesta kärnor använder fasta prioriterade uppgifter.
  • Den innehåller en komplett DASH7 Mode 2-protokollstack, inklusive
    • Fjärrvakning;
      • Native frågeprotokoll; och
      • UDP & SCTP anpassningsskikt.
  • Den använder ett Wear-nivellerande , Flash -baserat lättviktsfilsystem ( Veelite).
  • Den har ett internt C-baserat API .
  • Den har ett externt NDEF-baserat meddelande-API för klient-server- interaktion.

Genomförande

OpenTag implementerar en multitasking realtidskärna designad specifikt för att implementera DASH7. Användaruppgifter kan hanteras av kärnan, och de kan föregripa kärnan, även om de måste tilldelas vid kompilering. Schemaläggningsfrekvensen, eller kärnupplösningen, är implementeringsberoende, men den måste vara minst 1024 Hz och den måste vara en heltalsmultipel av 1024 Hz.

Kärnhändelser använder callbacks för att anropa anpassad programkod, som kallas "applets". Omfattande mallar används för att tillhandahålla återuppringningsfunktioner som är effektiva för inbäddade miljöer. Sålunda kan återuppringningar i OpenTag vara dynamiska (tilldelas under körning), eller så kan de vara statiska, vilket kräver tilldelning vid kompileringstid men minskar overhead. Eftersom OpenTag implementerar en exokernel kan användaruppgifter antingen hanteras helt av kärnan, de kan hanteras delvis av kärnan och delvis av externa händelser, eller de kan hanteras helt av externa händelser. Kommunikation mellan uppgifter och kärnan åstadkoms genom ett API av systemanrop och ett meddelanderörgränssnitt.

OpenTags externa API använder en förenklad klient-servermodell och NDEF för datainpackning. NDEF-omslaget används särskilt för trådbunden kommunikation mellan klient och server, där klienten vanligtvis är en mänsklig gränssnittsenhet och servern är OpenTag SoC. Det interna API:et exponeras på ett 1:1-sätt med det externa API:t, vilket gör att klienten kan agera ungefär som en extern process av OpenTag-kärnan.

Enheter som stöds

I skrivande stund är det mesta av OpenTag-hårdvaran implementerad på Texas Instruments CC430- eller MSP430- enheter, som är godkända för användning med OpenTag. Aktuella OpenTag-källträd stöder dock många andra MCU:er och RF-sändtagare, såsom olika typer av STM32-, CC11xx- och Semtech SX12xx-komponenter.