Fra harde µ-sekunder via mjuke sekunder til forte år
Øyvind Teig: sann tid i industrien

 

Gjesteforelesning, 20. nov. 2007
NTNU, fag TTK 4145 Sanntidsprogrammering (Real-Time Programming)

Autronica Fire and Security (AFS)

  • 320 ansatte, 565 mill NOK omsetning (2007)
  • På Lade, her i Trondheim
  • Samme sted, for meg - seks logoer
  • Autronica - børs - Whessoe - Navia
  • AFS ble etablert som datterselskap til Autronica AS og solgt til Williams (UK, 1998)
  • Autronica AS ble fusjonert sammen med Seatex til Navia Maritime (1998) som ble kjøpt av Kongsberg Maritime (NO, 2000)
  • Williams ble splittet i Kidde og Chubb (UK). AFS ble med inn i Kidde, (UK, 2000). Maritim brann (og meg) hos Kongsberg ble solgt til AFS, sammen med Autronica-navnet (2002)
  • Kidde kjøpt av United Technologies / UTC (US, 2005)
  • "A UTC Fire & Security Company" - United Technologies Corporation, 210000 ansatte med selskap som bla.a. Otis, Pratt & Whitney, Hamilton Sundstrand, Carrier og tidligere Kidde (nå UTC Fire & Security, som vi er en del av)

Bare så det er sagt (1)

Punktene i denne forelesningen står for min regning!

(Likevel: takk for korrekturlesning og kommentarer fra kolleger!)

Øyvind Teig (CV)

  • NTH, 1975
  • Autronica, 1976-nå (studentjobbing der fra 1972)
  • HW og SW (mest SW)
  • Har jobbet med embeddedsystemer hele tida
  • Publisert en del - relativt uvanlig i industrien
  • Hjemmesiden min: http://home.no.net/oyvteig

Pappesken (SW)

  • HW/SW for 30+ år i den pappesken
  • Diverse assembler (78-80)
  • PL/M (80-90)
  • Modula-2 (88-90)
  • MPP-Pascal (82-88)
  • occam (90-01)
  • C (02-nå)
  • Java (97-00)
  • Perl (02)
  • Øverst til høyre (fra diplomen 1975)
  • Papirtape inneholder programmet fremdeles
  • Sann tid - går alt for fort!

Pappesken (mimre)

  • Ikke en kjedelig dag på mer enn 31 år!
  • Meningsfylt!
  • Sanntidsprogrammering er gøy!
  • Og det kommer bare til å bli mer og mer av det!

Pappesken (sanntidsmetodikk & produkt)

Lange år

Etter forelesningen ønsker jeg..

SDL + CHAN_CSP lag = "kanaler"


  • Alt dette er kode som vi har utviklet sjøl. Først SDL (FSM-kjøresystem), så CHAN_CSP laget oppå

Kanal-lag teknologi i

  • 1988-90
    • PL/M-51
    • Egenutviklet mailboksbasert kjøresystem
  • Flere occam-system med transputer (90-95)
  • Flere occam-system med SPoC og Texas DSP (95-00)
  • 2005-nå
    • Samme system i deler av ny brannsentral :
    • I sløyfeprosessoren, som vi kaller "AutroLooper"

  • C og egenutviklet SDL kjøresystem - asynkrone meldinger
  • Egenutviklet CSP lag oppå, gir synkrone og blokkerende data-kanaler. Kooperativ scheduling

Artikler om kanal-laget

Porto Edinburgh Surrey
Ercim-2005 - Porto CPA-2006 - Edinburgh CPA-2007 - Surrey

Hvorfor vi lagde kanal-laget

Hvorfor vi ikke burde ha gjort det

Hvorfor vi hadde gjort det igjen

Protokoller

Applikasjons/mis\match

Prosess-orientert programmering (POP)

API and ALT i vårt kanal-lag

API funksjoner er pakket i makroer:
#define CHAN_INIT_F (CHAN,SENDER,RECEIVER,ALTTAKEN)
#define CHAN_IN_F (CHAN,DATA,EVENT)
#define CHAN_IN_VARLEN_F (CHAN,LEN,DATA,EVENT)
#define ALT_CHAN_IN_F (GUARD,CHAN,DATA,EVENT,ALTTAKEN)
#define ALT_CHAN_IN_VARLEN_F (GUARD,CHAN,LEN,DATA,EVENT,ALTTAKEN)
#define ALT_CHAN_IN_ASYNC_SIGNAL_F (GUARD,CHAN,EVENT,ALTTAKEN)
#define CHAN_OUT_F (CHAN,DATA,EVENT)
#define CHAN_OUT_VARLEN_F (CHAN,LEN,DATA,EVENT)
#define CHAN_OUT_ASYNC_SIGNAL_F (CHAN,RESCHEDULEME)
#define CHAN_IN_ASYNC_SIGNAL_F (CHAN,EVENT)|
#define ALT_TIMER_IN_F (GUARD,TIME,UNIT,EVENT,ALTSTATE,ALTTAKEN)
#define FSM_RESCHEDULE_F (EVENT)
Eksempel på en ALT:
case ST_STATE_IN_ALT_200_202_204_301_A:
{
// CP er "ContextPtr"
ALT_CHAN_IN_ASYNC_SIGNAL_F (CP->Guard_202i, g_chan_202, S_EVENT_ALT_202_A, &alt_taken);
ALT_CHAN_IN_ASYNC_SIGNAL_F (CP->Guard_204i, g_chan_204, S_EVENT_ALT_204_A, &alt_taken);
ALT_CHAN_IN_F (CP->Guard_200i, g_chan_200, CP->Chan_200i, S_200_A, &alt_taken);
ALT_CHAN_IN_F (CP->Guard_301i, g_chan_301, CP->Chan_301i, S_301__A, &alt_taken);
ALT_TIMER_IN_F (CP->Guard_Tim, CP->Tim, TU_MS_A, S_TIME_A, &g_ALT_LH &alt_taken);
//
CP->State = ST_STATE_IN_ALT_200_202_204_301_END_A;
} break;

"Fra meldingskø til readykø"

Bufferoverflyt

Blokkerende prosesser

Et av problemene vi oppdaget med vår ALT

Data-komm. som alltid funker (1)

Data-komm. som alltid funker (2)

occam akkurat nå

CSP bibliotek

Sanntidspatologi

Vranglås også i asynkrone system

Likevel

ALT - vakker mekanisme

  • ALT i occam
  • alt i Limbo
  • select i Ada (to-veis)
  • accept if/fi i Promela (N-buffer)
  • alt  i UML 2.0 (men semantikken..)
  • select  i Unix (men asynkron..)

Bare så det er sagt (2)

"Kontortilordningsfaktor"

"Office Mapping Factor"

The Office Mapping Factor

Spillregler

Prosess-innkapsling sjekkliste (beta)

Asynkron komm. er "vidt åpen"

Asynchronous communication is “wide open”

Synkron komm har “dør” som kan lukkes

Synchronous communication has “door”

Halvt det ene og det andre: sender-side helling

For høy kohesjon og for lav kobling == ikke bra

Testing av systemet

Konklusjon

Kontakt

Autronica Fire and Security
http://home.no.net/oyvteig/ http://www.autronicafire.com