DALI stack

FAQ


+ Wie hoch ist der Speicherbedarf RAM, Flash, persistenter Speicher?

Speicherbedarfsübersicht

An persistenten Speicher benötigen wir im Moment ca. 526 Byte

 

+ Gibt es eine Tabelle für den Speicherbedarf je Mikrocontroller?

s. Tabelle unter: Wie hoch ist der Speicherbedarf RAM, Flash, persistenter Speicher.
Der Speicherbedarf sollte für alle Typen von Mikrocontrollern ähnlich sein. Es hängt unteranderem vom benutzten Compiler und den dazugehörigen Bibliotheken ab.

 

+ Die Größe der DALI 2-Release-Bibliothek, die mit der Anwendung verknüpft werden muss, kann bei unterschiedlichen Mikroprozessoren geringfügig abweichen.

Auf embedded Systemen hat man i.A. nur statische Libraries

 

+ Wieviel Speicher benötigt ein einfaches Control Gear DT 6 (LED Modul)?

s. Tabelle unter: Wie hoch ist der Speicherbedarf RAM, Flash, persistenter Speicher

 

+ Ist es möglich den DALI stack auf zwei Controller aufzuteilen, sodass die Lower-Level-Treiber auf einen „Low-Cost-Controller“ ausgeführt werden?

Dies wird von uns nicht unterstützt. Der Low-Level-Treiber ist für das Timing innerhalb des APIs zuständig, dieses Timing ist kritisch, eine zusätzliche Kommunikation zwischen zwei Prozessoren wäre ein Widerstand im wichtigen Timing.

 

+ Ist es möglich zwei Instanzen des DALI stacks in einem Cortex-Controller zu betreiben?

Ja, wenn es unterschiedliche Typen sind -> also z.B. ein Device und ein Gear.

 

+ Wie sieht die Schnittstelle zu den Lower-Level-Treiber aus?

Der Zugriff wird via Callbacks mit einem Datenpuffer der die Daten und Zeitstempel enthält realisiert. API-LL wird hier direkt ausgeführt d.h. Änderungen werden sofort im Hintergrund angestoßen. Empfangene Frames werden in einer Queue zwischengespeichert, welche vom Vordergrundprogramm bearbeitet werden müssen.

 

+ Welche HW-Ressourcen und Interrupt-Ressourcen werden benötigt? (z.B. Timer,….)

  • s. Tabelle unter: Wie hoch ist der Speicherbedarf RAM, Flash, persistenter Speicher
  • Es werden zwei GPIOs benötigt. Einen als Input (DALI_RX) und einen als Output (DALI_TX). Der DALI_RX-Pin muss interruptfähig sein.
  • Einen Timer mit einer Auflösung von 1µS (Micro-Sekunde) und den dazugehörigen Timerinterrupt.
  • Die Interrupts des LowLevelDrivers müssen die gleiche und höchste Priorität im System haben
 

+ Wie hoch ist die Interrupt Verweildauer bzw. wie lange werden ggf. Interrupts gesperrt?

Die folgenden Werte gelten für eine Cortex M4-MCU mit 168 Mhz Takt. Dies kann linear auf andere Taktfrequenzen übertragen werden.

a) Timerinterrupt:
2.7µs alle 10000µs im Idle-Zustand.
4.1µs pro Bit beim Senden bei einer darauf folgenden Idle-Zeit von 430µs bzw. 840µs.

b) Levelchangeinterrupt:
Typisch : 2.2µs pro Levelchange. Selten 3.3µs im Maximum.

Beim Empfang wird nur die Zeit b) benötigt.
Beim Senden die Summe aus a) + b).

 

+ Hat der DALI stack bestimmte Timing-Anforderungen an das System?

Das Benutzerprogramm muss die Funktion „dalill_processQueues()“ mindestens alle 5ms aufrufen. Der Aufruf darf nicht blockiert werden (z.B. durch das Speichern von persistenten Daten).

 

+ Welcher Aufwand ist erforderlich, um die Bibliotheksdateien zu portieren? ANSI, C++?

Der DALI stack ist in ANSI-C + GNU Extensions programmiert. Die Verwendung des DALI stacks ist für C++-programmierte Applikationen möglich, indem das Define „__cplusplus“ gesetzt wird.

 

+ Wie ist die Bedienung für Multitasking-Umgebungen wie RTOS?

Das API funktioniert unter RTOS. Dort wird das „DaliProcessQueues“ in einem eigenen Thread ausgelagert - um diesen Thread für ankommende Daten vom Bus zu aktivieren, gibt es den CallBack „SignalToThread“ den der LowLevelDriver nach dem Erhalt von Daten aufruft. Alle Actions für das API müssen aus diesem Thread aufgerufen werden, da das API nicht multithreadingfähig ist. Die Interrupts des LowLevelDrivers müssen in einem RTOS die gleiche und höchste Priorität haben.

 

+ Im Handbuch wird erwähnt, dass mehrere DALI-Geräte in einer Firmware instanziiert werden können. Sind auch gleiche Device Types (konkret zwei oder mehrere DT 6 LED-Module) möglich?

Es ist möglich, ein Control Gear und ein Control Device bzw. ein Input Device auf einem System zu instanziieren. Gleichartige Gerätetypen sind jedoch nicht im parallelen Betrieb möglich. Eine Erweiterung wäre grundsätzlich vorstellbar, sodass auch zwei DT6/8 Control Gears instanziiert werden können.

 

+ Bei den Mindestanforderungen sind 32MHz Taktfrequenz angeführt. Wieviel Prozent der Rechenleistung werden bei einem Mikrocontroller durch den DALI stack verwendet?

Dies kann nicht eindeutig beantwortet werden. Unter Last (z.B. Dimm-Prozess) ca. 15% und im Ruhezustand <1%. data-preserve-html-node="true" Bei höheren Taktfrequenzen entsprechend weniger.

 

+ Die DALI 2-Bibliothek erfordert die Unterstützung eines nichtflüchtigen Speichers von 526 Bytes. Was wird im nichtflüchtigen Speicher gespeichert? Wann erfolgt eine Speicherung (Normalbetrieb, Stromausfall usw.)? Gibt es eine API zur Unterstützung des nichtflüchtigen Zugriffs?

Der DALI-Standard spezifiziert eigene Variablen und die dazugehörende Ablage in persistenten oder flüchtigen Speicher z.B. ist definiert, dass die „shortAddress“ in einem NVM (Non-volatile memory) gespeichert wird. Arbeitsvariablen wie z.B. der Inhalt des DTR0 (Data Transfer Register 0) nach einem Neustart des System nicht mehr erhalten bleiben.

Persistente Variablen werden in einem festlegbaren Zeitintervall geschrieben und persistenter Speicher auf eine bestimmte Anzahl von Lese-/ und -Schreibzugriffe begrenzt. Um die Lebenszeit des Speichers zu schonen kann eine Speicherung der persistenten Daten auch so konfiguriert werden, dass bei einem Brown-Out bzw. beim Herunterfahren des Systems eine Speicherung durchgeführt wird.

Wir stellen keine API zur Verfügung, der DALI stack stellt nur Callbacks zur Verfügung, mit deren Hilfe die Kundenapplikation aufgefordert wird die persistenten Daten zu sichern.

 

+ Wie werden die Bibliotheken oder die Software geliefert? Library? (Wenn ja, welche Compiler werden unterstützt?)? Ist eine Dokumentationen zur Portierung vorhanden?

  • Es gibt zwei Modelle für die Software-Lieferung des DALI stacks.
    i. Source-Files, dabei kann der Kunde die Source-files verändern/anpassen
    ii. Als statische Library, hierbei erhält der Kunde die Header-Datei „libdali.h“ sowie die bereits kompilierten Objekt-Files des stacks in der Library-Datei „liblibdali.a“
  • Die Tool-Chain muss bereit gestellt werden, sofern diese nicht bereits bei MBS vorhanden ist.
  • Die Libraries werden bereits fehler- und warnungsfrei übersetzt (mit GCC, IAR-Compiler und Keil-Compiler mit aktivierter GNU-Extension).
  • In der Regel bedarf es keiner Portierung für den High-Level des DALI stacks, dieser ist Hardware-unabhängig. Die einzigen Portierungen die durchgeführt werden müssen, sind die hardwarenahen Routinen in dali_ll_hal.c, die dem Low-Level Treiber als Callbacks zur Verfügung gestellt werden müssen.
 

+ DALI Multi-Master: Wie gestaltet man ein Multi-Master-System? Ist dies Teil des DALI-Standards?

Mit den entsprechenden Parametern kann ein System als Control Device Multi-Master konfiguriert werden. Sobald ein Multi-Master bzw. sobald ein Input-Device (Vom Prinzip her ebenfalls ein Multi-Master) im Bus ist, darf kein Single-Master vorhanden sein - dies ist Teil des DALI-Standards.