Stefan Geschrieben August 9, 2013 at 08:53 Share Geschrieben August 9, 2013 at 08:53 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 16, 2013 at 20:24 Autor Share Geschrieben August 16, 2013 at 20:24 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 19, 2013 at 15:24 Autor Share Geschrieben August 19, 2013 at 15:24 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? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
remotecontrol Geschrieben August 19, 2013 at 18:49 Share Geschrieben August 19, 2013 at 18:49 "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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Loetkolben Geschrieben August 19, 2013 at 18:52 Share Geschrieben August 19, 2013 at 18:52 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
borg Geschrieben August 19, 2013 at 19:59 Share Geschrieben August 19, 2013 at 19:59 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 19, 2013 at 23:03 Autor Share Geschrieben August 19, 2013 at 23:03 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 20, 2013 at 09:27 Autor Share Geschrieben August 20, 2013 at 09:27 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben August 20, 2013 at 10:59 Share Geschrieben August 20, 2013 at 10:59 Besten Dank, Stefan. Also nur ganz simpel mittels Editor und GCC auf Konsolenebene. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Loetkolben Geschrieben August 20, 2013 at 12:02 Share Geschrieben August 20, 2013 at 12:02 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 20, 2013 at 13:55 Autor Share Geschrieben August 20, 2013 at 13:55 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? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben August 20, 2013 at 14:57 Share Geschrieben August 20, 2013 at 14:57 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Loetkolben Geschrieben August 20, 2013 at 15:04 Share Geschrieben August 20, 2013 at 15:04 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. 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 20, 2013 at 17:35 Autor Share Geschrieben August 20, 2013 at 17:35 Ich denke für die Firmwareentwicklung braucht man solide C-Kenntnisse. Ich finde, dass http://openbook.galileocomputing.de/c_von_a_bis_z/ und das Buch The C Programming Language von Brian W. Kernighan und Dennis M. Ritchie gute Möglichkeiten sind C zu lernen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Loetkolben Geschrieben August 20, 2013 at 17:47 Share Geschrieben August 20, 2013 at 17:47 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Stefan Geschrieben August 20, 2013 at 18:17 Autor Share Geschrieben August 20, 2013 at 18:17 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben August 21, 2013 at 17:50 Share Geschrieben August 21, 2013 at 17:50 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Loetkolben Geschrieben August 21, 2013 at 19:19 Share Geschrieben August 21, 2013 at 19:19 Hallo photron, vielen Dank fuer die Ueberarbeitung. Durch diesen Thread wurde mir bereits einiges klar, aber so ist es vielleicht auch fuer andere einfacher dort einzusteigen. Der Loetkolben Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
salomon Geschrieben January 12, 2015 at 13:18 Share Geschrieben January 12, 2015 at 13:18 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.