Fra harde µ-sekunder via mjuke sekunder til forte år Sann tid i industrien

  • View
    34

  • Download
    2

Embed Size (px)

DESCRIPTION

Fra harde -sekunder via mjuke sekunder til forte r Sann tid i industrien. NTNU, fag TTK 4145 Real-Time Programming Gjesteforelesning, 2004, 2005 og 2006. yvind Teig http://home.no.net/oyvteig/ Autronica Fire and Security (AFS) - A Kidde company. Oppdatert 15.nov.06. - PowerPoint PPT Presentation

Transcript

  • Fra harde -sekunder via mjuke sekunder til forte r

    Sann tid i industrien

    NTNU, fag TTK 4145 Real-Time ProgrammingGjesteforelesning, 2004, 2005 og 2006

    yvind Teighttp://home.no.net/oyvteig/

    Autronica Fire and Security (AFS)- A Kidde companyOppdatert 15.nov.06

    T (2004)

  • Softblinking - harde -sekunder I iBook og i en ny embedded enhet fra AutronicaAlle kan se at dette er en lysdiodeEt avbrudd hvert 100 -sekundkan f den til blinke sakte hvert 2-3 sekundTips: pulsbreddestyring av lysdiodenHard sanntid - men sanntidsprogrammering? Sto ikke i spekenSjefene hardblunka litt...men det tok jo bare en par timers arbeid...etter at jeg likevel mtte polle noe hvert 100 -sekund!

    T (2004)

  • FagbakgrunnNTH, 1975HW designSW designEmbedded systemer hele tidaPublisert en del (se hjemmesida mi)http://home.no.net/oyvteig/ Du finner referanser til alt jeg har nevnt i denne forelesningen i artikler der
  • FirmabakgrunnAutronica, LadeSamme sted, fem logoerAutronica - brs - Whessoe - NaviaSplitt og bli rik:Kongsberg + AFS= To selvstendige firmaJeg har jobbet i alle disse firmaeneAnsatt i Autronica Fire and Security (AFS)AFS ble eid av Kidde (2004) som blekjpt av United Technologies UTC (2005)

    NB! Punktene i denne forelesningen str for egen regning!

    T (2004)

  • Pappesken (1)HW/SW for 30 r assemblerPL/M Modula-2MPP-Pascal

    occam

    Coccam, et ddt sprk, ja velmen (pstand):i forhold til concurrencydilter UML bare etter.!C++?EC++?ETC++?Java?

    T (2004)

  • Pappesken (2)Som sagt, nesten 30 rIkke en kjedelig dag!?Meningsfylt!?Sanntidsprogrammering er gy!Og det kommer bare til bli mer og mer av det!Papirtape (NTH, 1975)Sann tidgr ganske fort!.!

    T (2004)

  • Pappesken (3).!1978: Ikke noe kjresystem, ren assembler 1979: MPP Pascal med prosessbegrep og kjresystem 1980: PL/M med NTH-utviklet kjresystem 1982: Assembler med hjemmesnekret kjresystem 1988: PL/M med hjemmesnekret kjresystem 1988: Modula-2 med kjpt kjresystem

    1990: occam med prosessbegrep og kjresystem 1995: C med VxWorks 2003: C med hjemmesnekret SDL (&CSP) kjresystem

    Dieselaggregat start/stopp ndstrm

    Protokollkonvertering, radarbasert nivmling og brannv.

    Maskinromsovervking

    Brannvarsling

    Brannvarsling

    Brannvarsling

    Motormlinger og effektberegninger

    Brannvarsling

    Brannvarsling

    T (2004)

  • ALTALTi occamalti Limboselecti Adaaccept if/fii Promelaalti UML 2.0 (semantikken?)

    selecti Unix er ikke det samme! (ingen guarder)

    T (2004)

  • ALT != ifOm flere guarder er sannedvs. man er klar til motta p flere kanalerskal det ikke velges som ved if-then-else

    Man skal velge ikke-deterministiskikke-deterministisk = tilfeldig

    Finnes som sagt i UML 2.0 (ogs i UML sine state maskiner, helt rimelig - for en state maskin kan betraktes som en prosess)

    T (2004)

  • Lange rOO er fra sekstitalletI bruk n, men lite i embeddedSanntidsmekanismer fra 60-70+ tallet. Semafor etc. i bruk siden daCSP etc. fra 70-tallet. Lite i bruk (enn?)UML 2.0 snart ute stort og uten aksjonssprkJava synchronized det frste allment brukte sprket som overhodet har noe concurrency-tankegang innebygd..men som er livsfarlig bruke!..og som det gr an bygge CSP opp!

    Hallo, dette gr da ikke fort!

    T (2004)

  • MeldingskanalerSynkron, blokkerende (occam eller CSP-skall)EnveisSynkron, blokkerende (Ada)Toveis

    Asynkron ikke-blokkerende (SDL)EnveisAsynkron ikke-blokkerende (socket)Toveis

    Alle typeneKan brukes..Br brukes!

    T (2004)

  • Asynkron vs. synkron komm. (1)Asynkron du kan ikke forhindre at du kan miste data(Buffer overflyt)Du m programmere det ikke miste data nr du trenger det(Vent p kvitteringsmelding)

    Synkron du mister aldri data(Blokkering)Du m programmere det tillate miste data nr du trenger det(Aksepter alltid og kast (gjerne i egen overflowbuffer))

    T (2004)

  • Asynkron vs. synkron komm. (2)Asynkron komm. og buffer overflyt p dette nivetfr hele systemet til krsje!

    Og du kan ikke lett designe bort dette problemet!

    Synkron komm. og vranglsfr ogs hele systemet til krsje!

    Men du kan designe bort lukkede sirkler av avhengighet!

    T (2004)

  • En liten og ny boksAtmelATMega1282003Maskebrent8052 fra1988Softblinkpower on2003CEgenutviklet SDL kjresystem - asynkrone meldingerEgenutviklet CSP lag opp: synkrone og blokkerende kanaler

    1988-90PL/M-51Egenutviklet mailboksbasert kjresystem

    I begge prosessoreneKooperativ schedulingInterrupt tar det som trengs av preemption

    T (2004)

  • Roller (1):to sjeferSynkrone kanaler og to initiativtakere?Bruk f.eks. to synkrone kanaler og en asynkron signalkanal

    Eller bygg om den ene asynkrone kanalen med to synkrone og en bufferprosess (Buffer)Da vil man kunne sende en asynkron melding

    T (2004)

  • Roller (2):familiebildeALTMASTERSLAVERene meldings- leverandrerDataflytreninger:

    T (2004)

  • Roller (3): opp og ned og ned og oppValg av rolle spiller egentlig ingen rolleSlik designet jeg det, menjeg kunne f.eks. ha latt retningen snu i 5:P_BS100_Sim

    Hovedsaken er f data dit du skalUtenpollingdeadlock

    T (2004)

  • Roller (4): bortoverprodusent forbruker

    T (2004)

  • OverflytbufferP_A sender til P_Bog P_B til P_AKontroll p overflyt uten meldingskoverflyt

    T (2004)

  • Sekvensdiagram (SD)Fine saker!

    T (2004)

  • Fra semaforer til en stor mainprosessSemaforer er relativt vanskelig bruke rettDerfor, inn med meldingsker! (bra)Da fles de asynkrone bestOg man lager trder som sender tilen diger mainprosess

    Huff og huff!

    Ikke ha trdvegring!Lag en prosess per (stor) funksjon!Ikke ha synkronkanalvegring! De er ikke s stive!

    Den der mainen blir som regel alt for komplisert og det blir alt for mange hendelser hndtere, og tilstander som gr i beina p hverandre, og meldinger som snakker i munnen p hverandre, og det er ikke like lett oppdage slikt bestandig, inni masse kode, for du har jo ikke egentlig designet dette, det bare gror og gror..(?)

    T (2004)

  • Men lysdiodeblinking, da?Inne i denne main prosessen er det vel kurant hndtere en timer sammen med det andre for kunne blinke bare en lysdiode av og p?

    Jada!

    Men om flere nsker styre denne blinkingen..og ha mer systematisk kontroll p den?

    Bort med main prosessen!Inn med en egen prosess som pakker inn og beskytter denne delte resursenEller flere lysdioder som skal blinke i taktEller enda litt flere pulserende utganger

    Da fr du en utgangsdriver, et mye mer skalerbart konsept

    T (2004)

  • Kanallag over asynkront meldingssystemcase ST_STATE_IN_ALT_030_032_104_105_A: { { bool_a alt_taken; g_ALT_BS100_Sim = CHAN_ALT_ENABLED_ON_A; alt_taken = FALSE; ALT_CHAN_IN_ASYNC_SIGNAL_F (ContextPtr->Guard_032, g_chan_032, S_EVENT_ALT_032_A, &alt_taken); ALT_CHAN_IN_ASYNC_SIGNAL_F (ContextPtr->Guard_104, g_chan_104, S_EVENT_ALT_104_A, &alt_taken); ALT_CHAN_IN_F (ContextPtr->Guard_030, g_chan_030, ContextPtr->ALCP_030i, S_EVENT_ALT_030_A, &alt_taken); ALT_CHAN_IN_F (ContextPtr->Guard_105, g_chan_105, ContextPtr->ASSP_Inner_105i, S_EVENT_ALT_105_A, &alt_taken); ALT_TIMER_IN_F (ContextPtr->Guard_Timer, ContextPtr->Timeout_mS, TU_MS_A, S_EVENT_TIMEOUT_A, &g_ALT_BS100_Sim, &alt_taken); ContextPtr->State_Previous = ST_STATE_IN_ALT_030_032_104_105_A; ContextPtr->State = ST_STATE_IN_ALT_030_032_104_105_END_A; ... DEBUG_PRINT_BS100_SIM_1_A } break; }Makroer i C og CSP-lag opp SDLDette er P_BS100_Sim hovedventestedKok fra SPoC (occam til C oversetteren)

    T (2004)

  • Process i dette systemetvoid P_BS100_Sim (void) { ContextPtr_a ContextPtr = (ContextPtr_a)g_ThisExtPtr; switch (ContextPtr->State) { ... ST_INITIALIZING_A (Initialize) ... ST_STATE_IN_ALT_030_032_104_105_A ... --> ST_STATE_IN_ALT_030_032_104_105_END_A ... ST_STATE_OUT_031_A ... ST_STATE_OUT_033_A ... ST_STATE_OUT_110_A ... ST_STATE_OUT_999_A ... ST_STATE_OUT_999_HW_PIN_A ... ST_STATE_OUT_999_PRINT_A ... ST_STATE_OUT_END_A /// ... ST_STATE_STOPPED_A, (crash) ... default, (crash) } ... Common action: get more to do from workpool }Kommunikasjons-fase-tilstanderObs foldende programeditor... Inneholder C-kode

    T (2004)

  • Kommunikasjons-fase-tilstanderForsk p beskrive demi noen SDL-liknendekrusedullerLegg merke til work poolet tabelldrevet oppslagsverkProsessen skal jo ikke bareevent-drives utenframen ogs ta egne initiativ

    T (2004)

  • Mimre, mimretransputer 4x20Mbit/S linker, rtx scheduler og 1S prosess svitsjetidmerRAMDisplaykortLysflerKommKomm20 bit a/dLoaderkortPIC1995occam (her)C (UK)Inni 20kg EX boks med vinduLiterate programmingWord -> foldendeInstallert: ingen! - ikke alt man lager blir noe av!

    T (2004)

  • CSP for Java = JCSPDenne koden henger ikke sammen, jeg har bare samlet noen godbitlinjerMen om du synes den ser spennende ut, se:http://www.cs.kent.ac.uk/projects/ofa/jcsp/http://home.no.net/oyvteig/pub/pub_details.html#ProtocolDesign import jcsp.awt.*; import jcsp.lang.*;

    public class Protocolclass MyProducer implements CSProcess private fi