-
Gesamte Inhalte
3.625 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
61
Alle erstellten Inhalte von borg
-
Wie könnte ein Super-Master Brick aussehen?
Thema antwortete auf borgs Equinox in: Allgemeine Diskussionen
Ich kann mich da nur wiederholen: Die einzige "Hardwareerweiterung" die meiner Meinung nach Sinn machen würde, wäre ein Linux Brick (ein Raspberry PI im 4x4cm Format). Das wäre aber preislich leider nicht konkurrenzfähig. Vielleicht wenn wir irgendwann in 10000er oder 25000er Stückzahlen in China produzieren. Einen weiteren Master Brick der einfach mehr Flash/RAM hat bringt nicht genug Vorteile. Ein "komplettes Java" oder "komplettes Python" mit der ganzen Standardbibliothek wird da nie drauf laufen. Dafür benötigt es nunmal ein "echtes" Betriebssystem (also Linux/Mac/Windows). Damit sind wir dann wieder beim Linux Brick . -
Wie könnte ein Super-Master Brick aussehen?
Thema antwortete auf borgs Equinox in: Allgemeine Diskussionen
Zur Frage wofür On Device Programming sinnvoll ist: * autonome Wetterstation * autonome Robotersteuerung * So simple Sachen wie: Servo hochklappen wenn Spannung über einen Schwellwert geht etc * "Notfallbehandlung" wenn die USB/WIFI Verbindung weg ist * CNC Fräsen ansteuern (PC schickt sowas wie "Vektoren" die man auf dem Brick zwischenspeichert und in Echtzeit abarbeitet) Da gibt es schon viele Anwendungszwecke. Das meiste kann man natürlich auch über einen PC machen, klar. Dieser PC kann auch ein Raspberry PI sein . Unsere Argumentation wenn jemand On Device haben wollte war ja bisher ja auch immer "nimm doch das Raspberry PI/BeagleBoard". Nichtsdestotrotz kann ich auch den zusätzlichen Wunsch nach einem On Device Programming Interface nachvollziehen. -
Wie könnte ein Super-Master Brick aussehen?
Thema antwortete auf borgs Equinox in: Allgemeine Diskussionen
Wir haben uns schon richtig verstanden. RAM haben wir vielleicht 16KB über. Sprich alles was du in den RAM laden willst kannst du auch vorher in den Flash schieben anstatt auf externe Hardware . Wenn du meinst wir sollen zusätzlichen externen RAM anschließen: Das geht technisch nicht. Wie schon gesagt, zusätzliche externe Hardware für On Device Programming macht keinen Sinn. Wenn soviel Speicher benötigt wird kann man das Raspberry PI benutzen. Bisher wurde hier aber auch noch kein Projekt genannt was nicht auf den Master Brick passen würde . -
Wie könnte ein Super-Master Brick aussehen?
Thema antwortete auf borgs Equinox in: Allgemeine Diskussionen
Die Pinne die man braucht um Flash-Speicher anzuschließen liegen nicht auf dem Brick Stecker und sie sind auch einfach nicht über. Was soll das denn bringen? Dann kann ich ihn ja auch direkt in den Flash laden. Eine SD Karte ist nicht geeignet um dort Variablen abzulegen , da reden wir dann von Nachrichten pro Minute anstatt Nachrichten pro ms. 100KB ist mehr als genug um zum Mond und wieder zurück zu fliegen. Wieviele Zeilen C Code das sind kommt natürlich darauf an was in dem Code steht. Wenn ich den Code der im Moment auf dem Master Brick läuft diesbezüglich skaliere sind es 25000 Zeilen. -
Es geht hier darum, die existierenden Bricks "On Device" programmieren zu können. Ein "Raspberry PI in Brick-Form" wäre prinzipiell technisch möglich und sehr cool, macht allerdings einfach absolut keinen Sinn. Ein Raspberry PI würde uns bei den 1000er Stückzahlen die wir auflegen sowas wie ~80€ im Einkauf kosten. Zusätzlich hätte unser "Mini Raspberry PI" eine viel kleinere Community und dadurch weniger Support usw. Wir würden davon sicher den ein oder anderen verkaufen, an Leute denen der 4x4cm Formfaktor wichtig ist. Allerdings ist das den Aufwand den uns so ein Brick kosten würde einfach nicht Wert . Als wir gestartet sind war so ein Linux Brick fest geplant, aber da gab es auch noch keine 30€ Linux Boards überall zu kaufen . Mehr Sinn würde es vermutlich machen ein Gehäuse anzubieten in dem man ein Raspberry PI und Bricks befestigen kann. Dazu dann vielleicht noch Kabel um das Raspberry PI über die Step-Down Power Supply zu versorgen und mit einem Brick-Stapel zu verbinden. Könnte dann eins von den neuen Kits sein die wir planen: "Starter Kit: Raspberry PI" .
-
Da tut sich nichts zwischen Python und Java. So eine µ-Java-VM unterstützt auch nicht den kompletten Befehlssatz (z.B. werden wir nie double/float unterstützen können). Es gilt sowohl für Java als auch für Python, dass du die komplette Standardbibliothek _nicht_ zur Verfügung hast. Also ein Python/Java Programm was auf dem Brick läuft, läuft auch auf Windows/Mac/Linux/Android. Umgekehrt ist dies mitnichten der Fall. Der Master Brick hat 256KB Flash, davon werden im Moment 120KB von der Firmware belegt und die letzten 16KB im Flash sind für die Bricklet Plugins reserviert. Ein extra Flash-Speicher-Brick ist nicht vorgesehen und wird es auch definitiv nicht geben (alleine aus technischen Gründen). Was wir mit hoher Wahrscheinlichkeit machen werden ist eine "SD Card Extension", mit der man auf SD Karten loggen kann. Das ist sobald wir ein On Device Programming Interface haben offensichtlich sinnvoll. Morgens C, mittags Python und abends TinkerBASIC .
-
Sie wird nicht bis zum 1. April fertig sein, leider. Würde es Sinn machen wenn wir sie zum vorbestellen reinstellen, mit voraussichtlichem Lieferdatum in Woche ~18?
-
Hehe, RPython ist spezifisch dafür gedacht Interpreter/VMs zu implementieren. Ein compiliertes RPython "Hello World" Programm ist vermutlich weit größer als die 100Kb die wir zur Verfügung haben. Das wird also nichts . Ich hab mir mal simpleRTJ (java vm) und python-on-a-chip näher angesehen. simpleRTJ: Das kleinste Board auf dem sie das laufen haben hat 64Kb SRAM. Sie schreiben zusätzlich, das man 32Kb für das ausführen einer Applikation frei haben muss. Das sieht definitiv nicht gut aus. Zusätzlich zur bestehenden Firmware würden wir das glaube ich nicht eingebaut kriegen. python-on-a-chip: An und für sich sieht das gut aus. Der Source Code ist übersichtlich und verständlich. Allerdings, wie AuronX auch schon gesagt hat, ist das Projekt leider tot. Wir müssten es also definitiv forken und selbst weiter führen. Es gibt auch reichlich bekannte Bugs: http://code.google.com/p/python-on-a-chip/issues/list z.B. stürzt noch in der aktuellsten Version der Interpreter sobald eine Exception auftritt. Das ist schon hart .
-
Die News war also schon im Forum angekommen bevor ich damit durch war das auf dem blog/twitter/facebook zu veröffentlichen. Ihr könnt es als eine Einweihungsfeier für die neue Homepage ansehen .
-
Da gibt es kein Grundrauschen. Das ist eigentlich auch ganz einfach: Es gibt Empfangsbuffer für die Schnittstellen (z.B. USB) und die werden alle einmal pro ms geleert. Und diese Taktrate von 1ms ist das Maximum was wir mit FreeRTOS sinnvoll erreichen können. D.h. wenn wir niedriger wollten müssten wir das Scheduling von FreeRTOS rauswerfen, dann müssten neue Firmwares her. Wir benutzen im Moment ein "echtes" Scheduling, d.h. Funktionen werden inkl. lokaler Variablen auf den Stack gepackt und später wieder geholt usw. Das Scheduling ist lediglich nicht preemptive, damit wir uns die ganzen mutexes sparen können. Ich könnte das durch Umsetzen einer Konstante preemptive machen. Wenn wir jetzt Dinge mit einer höheren Taktrate als 1KHz haben wollen, können wir einfach kein "echtes" Scheduling mehr verwenden (Der Verwaltungsaufwand wäre dann zu hoch). D.h. Anstatt einen Scheduler zu haben, hätte man eine Main-Loop die nacheinander alle benötigten Funktionen aufruft. Dadurch hat man dann den Scheduling Overhead nicht mehr. Gleichzeitig hat man dann aber im Prinzip keine lokalen Variablen mehr, die werden ja nicht mehr gesichert. D.h. man müsste ein Speichermanagement einbauen mit dem man dynamisch speicher allokieren/freigeben kann. Im ganzen heißt das, wir brauchen eine neue Firmware und der interne Aufbau muss anders sein. Ich hoffe das Erklärt grob warum es diese 1000 Nachrichten/Sek Grenze gibt und warum wir viel Arbeit haben wenn es mehr seien sollen.
-
Naja, ein Getter-Aufruf wird immer mindestens so lange brauchen wie die Pingzeit und die wird nie unter 1ms sein (bei Wi-Fi/Ethernet). Der Cortex-M3 hat ja einen Thumb2 Befehlssatz, in dem sind alle Befehle 16 Bit groß. Dadurch können immer zwei Befehle gleichzeitig geladen werden und dadurch dauert nahezu alles einen Takt. Auch die Sprungvorhersage. Das macht natürlich das Takte zählen einfach. Jo. Ich glaube wir müssen das mal anders angehen: Was wollt ihr denn Standalone mit den Bricks machen?
-
Sorry, aber das ist einfach keine Lösung. Dafür müsste der Brick Viewer dann die komplette GCC Toolchain mitbringen. Und wie soll das funktionieren? Man braucht ja schließlich ein paar Anläufe bis der C Code kompiliert. Wie bekommt der Nutzer denn die Compilefehler mitgeteilt? Einfach in einem Popup, ohne Syntax Highlighting ohne alles? Das ist doch ein Albtraum. Wer würde sowas benutzen wollen?
-
Ohne groß ins Detail zu gehen: Das ist nicht möglich. Mehr Nachrichten im kompletten System = Komplett neue Firmware. Mehr Nachrichten auf dem Brick, der Standalone läuft und 1000 Nachrichten/Sek im Rest des Systems (Stack Kommunikation etc) wäre noch denkbar. Ist halt die Frage wie weit man das treiben will. Die C API auf den Master Brick zu bringen wie oben angedeutet und zu dokumentieren geht schnell. Aber was ist mit der Entwicklungsumgebung? Welche soll man unter Windows nehmen? Und auf dem Mac? Wie kommt man an den Source Code? Master Brick Firmware und bricklib auf github clonen? Usw usw. Das fällt alles weg wenn wir eine interpretierte Sprache nehmen. Auf dem PC schreiben, auf das Brick laden und dort wirds interpretiert. Fertig .
-
Wäre es denn akzeptabel wenn weiterhin nur 1000 Nachrichten/Sekunde durchs System laufen? Weil das würde es bedeuten wenn die normale Firmware verwendet wird. Eine Lösung, die das bestehende System benutzt und wo in C programmiert wird wäre mit Abstand der geringste Aufwand für uns. Da könnte man einfach die C Bindings nehmen, das Backend austauschen durch ein direktes Schreiben in die internen Buffer und fertig .
-
If that is the goal, C is the only option. But i don't think that should be the goal. It is a pain to solder stuff to Bricks or Bricklets and why would we want to go the Arduino route? You said yourself that you didn't do anything with Arduino because of your lack in electronics experience .
-
Es gibt JVMs die klein genug sind für die Bricks, z.B. http://www.rtjcom.com/main.php?p=ovr Absolut ausgeschlossen ist java also nicht. Diese JVM braucht aber z.B. einen ClassLinker der vorher auf dem PC die Klassen "zusammenhämmert", um sich da das dynamische laden zu sparen. Dieser ist natürlich nur für Windows verfügbar... Die JVM benötigt von Hardware Seite aus eine Timer mit 5-20ms Intervall, was dann 50-200 Nachrichten pro Sekunde bedeuten würde... Ich befürchte das zu integrieren wäre eine Katastrophe. Ich denke es läuft auf zwei Möglichkeiten hinaus: Eine einfache interpretierte Sprache (die sich vernünftig in unser System integrieren lässt) oder C. Ersteres könnte der schon angesprochene Mini-Python-Interpreter sein oder vielleicht sogar ein kleines auf die Bricks abgestimmtes BASIC. Das könnte dann direkt ein Keyword für die Callbacks haben und für das hinzufügen von Callbacks usw. @The_Real_Black: Wir haben in Summe in allen Firmwares zusammen vielleicht 15 Zeilen Assembler geschrieben. Du brauchst definitiv kein Assembler um die Bricks zu programmieren. Ich würde auch bezweifeln, dass du ab einer gewissen Codegröße auch nur annähernd so gut optimieren kannst wie ein moderner C Compiler .
-
Klingt sinnvoll, ich schreibe es mir mal als TODO auf.
-
Morgen, den 8. März: Homepageumstellung
Thema antwortete auf borgs batti in: Allgemeine Diskussionen
Wie könnte man denn einen "High-Level-Bastler" besser charakterisieren? Eigentlich wollen wir ja gerade Leute ansprechen die nicht den Lötkolben in die Hand nehmen wollen/müssen. Wenn wir für den Bastler eigens ein Bild machen lassen mit Bricks drauf, dann müssen auf die anderen Bilder IMO auch welche drauf (was natürlich nicht absolut ausgeschlossen ist). Alles nicht so einfach... . -
Morgen, den 8. März: Homepageumstellung
Thema antwortete auf borgs batti in: Allgemeine Diskussionen
Falls ihr tote Links findet oder Änderungsvorschläge fürs CSS habt o.ä.: Immer her damit. -
Dann müssen wir die Schritte per I2C o.ä. abfragen und können dies wieder nur 1000x pro Sekunde tun (wie normalerweise üblich). Das reicht aber von der Frequenz her nicht um eine richtig gute PID Regelung der Motorgeschwindigkeit zu machen. Zusätzlich würde das natürlich auch Komplexität und Preis des Bricklets erhöhen.
-
Ne, das können wir natürlich nicht wegfallen lassen. Wir müssten dann zwei unterschiedliche Firmwares unterstützen. Man würde natürlich die Low-Level-Ansteuerung von Motoren und ähnliches abstrahieren damit das nicht alles doppelt implementiert ist.
-
GIT Repository für Ruby bindings Gem (und andere) ?
Thema antwortete auf borgs cschlaefcke in: Allgemeine Diskussionen
Mh, das ist nicht so einfach. Die Bindings werden ja generiert (hier ist das passende GIT dafür: https://github.com/Tinkerforge/generators). Du müsstest damit das funktioniert im ruby/ Unterverzeichnis immer einmal "generate_ruby_bindings.py" aufrufen, die frisch generierten Bindings liegen dann in ruby/bindings/ -
Neue TF Homepage: Projektvorstellung
Thema antwortete auf borgs batti in: Projektvorstellungen und Projektideen
Die On Device Programming Diskussion hab ich mal hier hin verschoben: http://www.tinkerunity.org/forum/index.php/topic,1459.0.html -
MOVED: On Device Programming: C vs Python
ein Thema hat borg erstellt in: Projektvorstellungen und Projektideen
This topic has been moved to Allgemeine Diskussionen. [iurl]http://www.tinkerunity.org/forum/index.php?topic=1459.0[/iurl]