Jump to content

Recommended Posts

Geschrieben

Hallo,

 

ich habe meinen Master Brick im Schlafzimmer in einer Blechdose. Bei Dunkelheit sieht man aber noch ein wenig das Leuchten der blauen LED.

Könnte man nicht in der API eine Möglichkeit entwerfen, das LED Licht zu deaktivieren bzw. wo könnte man die Master Brick Firmware anpassen, um das LED zu deaktivieren.

Ich fände dies wäre elaganter als die LEDs abzukleben.

 

Vielen Dank,

Stefan

 

Edit:

Seit Master Firmware 2.3.2 kann man die LED per API deaktivieren.

Geschrieben

Ich habe mir den Master Brick Quellcode angeschaut. Die LED kann man einfach deaktivieren, indem man in bricklib/utility/init.c einfach in Zeile 58 led_on(LED_STD_BLUE); auskommentiert und dann den veränderten Quelltext kompiliert und auf das Master Brick flasht.

Ich werde dies nächste Woche mal ausprobieren und darüber berichten.

 

Der Nachteil natürlich ist, dass man nicht erkennen kann, ob sich das Master Brick im Bootloader Modus befindet.

Geschrieben

Ich habe jetzt das Plugin mit der beschriebenen Codeänderung kompiliert und es funktioniert nicht. Jemand eine Idee wie der Programmcode verändert werden müsste, damit man ein Master Brick ohne leuchtende blaue LED im Betrieb hat?

Geschrieben

"Funkioniert nicht" bedeutet: Firmware läuft, aber LED ist noch an?

 

Es gibt noch eine "led_tick_task", die die blaue LED auch einschalten kann. Man kann ja auch vereinzelt beobachten, dass die blaue LED kurzzeitig im Betrieb aus-/eingeschaltet wird bei bestimmter Datenübertragung.

 

Vielleicht passiert das schon recht früh nach dem init und damit geht die LED wieder ein.

Geschrieben

Hallo Stefan,

 

technisch kann ich dir leider nicht helfen, aber Dein Anliegen moechte in Unterstuetzen.  :)

 

Bist Du sicher, dass du richtig kompiliert hast. Laueft die Firmware denn sonst oder geht gar nichts.

 

An dieser Stelle moechte ich gerne die 1,5 Jahre alte Ueberlegung nochmals in Spiel bringen, ob man die Status LED nicht selbst setzen/nutzen kann. Irgendwie ist der Thread damals sang und klanglos "untergegangen".  :(

 

Status LEDs ansprechen

 

Der Loetkolben

Geschrieben

remotecontrol hat recht, du musst in init.c in

void brick_tick_task(void *parameters)

noch die Zeile

led_tick_task(tick_type);

auskommentieren. Ansonsten bleibt das blinken der LED anhand der übertragenen Datenmenge aktiv.

Geschrieben

Perfekt, jetzt funktioniert es endlich. Danke für die Antworten. Wer hätte gedacht, dass es so schwierig ist eine Funktionalität zu entfernen.

 

@Loetkolben

Meine Idee um die Status LEDs anzusprechen wäre, dass man Funktionen schreibt, die auf folgende Funktion zurückgreifen und damit die LEDs an- und ausschalten können.

 

void led_on(const uint8_t led_num)

void led_off(const uint8_t led_num)

 

led_num kann mindestens folgende Werte annehmen, in Klammern steht die Bedeutung, die meiner Meinung nach, die LEDs haben:

LED_EXT_BLUE_0 (Brick startet)

LED_EXT_BLUE_1 (Brick startet)

LED_EXT_BLUE_2 (Brick startet)

LED_EXT_BLUE_3 (Brick startet)

LED_STD_BLUE (Brick läuft nicht im Bootloadermodus)

LED_STD_RED (Fehler)

 

Wie man genau dann diese neuen Funktionen des Bricks über die API anspricht weiß ich nicht. Ich denke am besten man vollzieht dies nach, indem man sich eine Methode wie setEthernetMACAddress bzw. set_ethernet_mac_address (je nach Programmiersprache der API) anschaut.

 

Ich hoffe, ich konnte etwas weiterhelfen und habe nicht nur Sachen erzählt, die du eh schon weißt.

Geschrieben

Ich wurde von Nic angesprochen wie meine Entwicklungsumgebung für die Firmwareentwicklung aussieht.

 

Ich habe mich an die Anleitung http://www.tinkerforge.com/de/doc/Software/Firmwares_And_Plugins.html#firmwares-and-plugins gehalten. Ich habe keine IDE benutzt, sondern die Textfiles mit dem Editor editiert.

 

Dabei sind jedoch folgende Stolpersteine aufgetreten (unter virtualisierten Ubuntu 13.04 64 bit):

Es wurden 32 bit Bibliotheken benötigt https://sourcery.mentor.com/GNUToolchain/kbentry62 beschreibt hierfür die nötigen Schritte.

In der Konsole wurden mir danach weitere Abhängigkeiten gezeigt, die ich installiert habe.

Bei der Installation von CodeSourcery wurde es nicht richtig in den PATH gesetzt.

Geschrieben

Ich hoffe, ich konnte etwas weiterhelfen und habe nicht nur Sachen erzählt, die du eh schon weißt.

 

Hallo Stefan,

 

danke fuer die Info, aber ich habe keine Erfahrung mit Firmwareprogrammierung. Deine Infos sind hilfreich wenn man es schafft die Firmware zu kompilieren.  ;)

 

Danke.

 

Der Loetkolben

Geschrieben

Ich habe on: August 20, 2013, 11:27:19 geschrieben wie ich die Firmware kompiliert habe.

 

Wenn du dich an die Tinkerforgeanleitung hälst, dürfte eigentlich nichts schief gehen oder an welchem Punkt hängt es bei dir die Firmware zu kompilieren?

Geschrieben

Na zumindest scheint es abhängig vom Betriebssystem zu sein ?! Lassen sich die in der Doku genannten Schritte so auf alle Betriebssysteme bzw. Umgebungen x32,x64 anwenden ? Mir fehlte bisher die Zeit und Nerven, dass nach den Kochbuchangaben auf Win7x64 zum Kompilieren zu bringen.

Geschrieben

Hallo Stefan,

 

danke fuer Deine Nachfage, aber das haengt an vielem.

 

Wo finde ich was im Sourcecode?

Wie funktioniert C?

 

Allein dieser Absatz braucht bei mir ein Ewigkeit:

Als Compiler wird GCC in der none-eabi Version für ARM benötigt. Lade eine passende Version von CodeSourcery herunter und installiere diese. Dabei ist auf die Kompatiblität des Compilers zu achten.

  • Wo bekomme ich den GCC fuer none-eabi her?
  • Was soll ich bei CodeSourcery laden?
  • Ach, dort gibt es komplette Pakete die den GCC enthalten!?
  • Ich muss also die "GNU/Linux" Variante waehlen? "None-eabi" gibt es nicht.
  • Welche "Kompatibilitaet" muss ich beachten. Ich denke bei den CodeSourcery Paket ist der GCC dabei?
  • Unter welchem OS lauft eigentlich die CodeSourcery Tools.

Wie du siehst alles nur Kleinigkeiten.  :o

 

 

Und wenn ich so was sehe, verstehe ich die Welt nicht mehr:  ???

 

    led_init();
        led_on(LED_STD_BLUE);
#if LOGGING_LEVEL == LOGGING_NONE
        led_off(LED_STD_RED);
#else
        led_on(LED_STD_RED);
#endif
        logsi("LEDs initialized\n\r");

 

Die Frage lautet da schon: An welcher Stelle gibt der unerfahrene User auf?

 

Wenn ich viel Zeit habe oder irgendjemand die Kochrezepte ueberarbeitet wuerde ich das Kompilieren mal gerne probieren.

 

Der Loetkolben

 

 

 

 

 

Geschrieben

Ich denke für die Firmwareentwicklung braucht man solide C-Kenntnisse.

 

Hallo Stefan,

 

das denke ich auch, aber ich will nicht in C einsteigen und keine Firmwareentwicklung machen! Um zu patchen oder kleine Veraenderungen vorzunehmen sollten auch "generische" Programmierkenntnisse ausreichen. Man muss es aber erstmal schaffen die original Firmware zu kompilieren.  ;)

 

 

Der Loetkolben

Geschrieben

Du musst EABI -> Sourcery CodeBenchlite 2013.05-23 -> IA32 GNU/Linux Installer auswählen. GCC ist hier integriert. "None" bedeutet nicht "keine", sondern etwas anderes.

Dies könnte man vielleicht in der Dokumentation erwähnen, ich war am Anfang dadurch auch etwas verwirrt.

Geschrieben

Ich habe die Firmware und Plugins Seite überarbeitet. Ich denke ich habe dabei alle Hinweise in diesem Thread sowie Loetkolbens Fragenliste berücksichtigt.

 

Das ganze ist jetzt detaillierter und sollte einfacher/besser verständlich sein.

 

Na zumindest scheint es abhängig vom Betriebssystem zu sein ?! Lassen sich die in der Doku genannten Schritte so auf alle Betriebssysteme bzw. Umgebungen x32,x64 anwenden ?

 

Die benötigen Tools (GCC für ARM, CMake und make) gibts für 32 und 64 bit Linux, Windows, Mac OS X. Für den Compiler gibt es Linux und Windows Installer in 32 bit. Ein 64 bit Windows hat keine Probleme mit 32 bit Programmen und unter 64 bit Linux muss man nur die 32 bit Support Lib installieren.

 

Für Mac OS X bietet CodeSourcery selbst keinen Installer für den Compiler. Es gibt Anleitungen wie man sich den dann selbst aus dem Source kompilieren kann.

  • 1 year later...
Geschrieben

Hallo,

 

mir hat dieser Thread auch dabei geholfen, meine MasterBrick Firmware auf diese weise zu patchen. Nachdem man erstmal dieses Sourcery runtergeladen und installiert hat, ists doch eigentlich ganz einfach.

 

Vielen Dank nochmal an alle!

 

Dazu gibts übrigens auch nen Issue auf GitHub: https://github.com/Tinkerforge/master-brick/issues/1

 

Wenns sonst keiner tut, werde ich demnächst mal versuchen das umzusetzen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...