PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Embedded Linux: Dilnet/PC, Colibri Modul... wer macht mit?



Schlebinski
22.06.2005, 12:39
Hallihallo,
habe gesehen hier hat sich bis jetzt scheinbar niemand mit Embedded Linux befasst. Gleichmal vorweg 2 Links:

http://www.toradex.com/d/products.html
http://www.dilnetpc.com/dnp0033.htm

letztere Controller sind bei eBay ab und zu mitsamt Evaluations Board, Software und Buch für 180 Euronen zu haben.
TCP/IP ist die Basis, Webserver, FTP Server, Telnet Server sind vorinstalliert. Wlan Modul dran und schon kann man dem Robbi neue Programme per Wlan überspielen, einzelne Tasks starten, beenden etc und per Wlan kontrollieren was er tut... und das nicht nur aus der Nähe sonder aus dem ganzen Internet, also zum Beispiel im Urlaub schauen, was denn so zuhause los ist.
Warum hat sich hier noch niemand mit so etwas befasst?? Wer wäre denn interessiert ein Projekt aufzuziehen, das modular aufgebaut ist? Sourcecodes für Treibermodule für diverse Sensorik/Aktorik und Programmmodule für Verhaltensmuster könnten untereinander ausgetauscht werden.
Auf diese Weise sollte es möglich sein, einen Roboter zu bauen, der an Intelligenz das überschreitet, was ein einzelner Programmierer dem Ding beizubringen vermag.
Meine eigenen Pläne sehen momentan so aus: Ich werde mir in paar Wochen wenn meine Prüfungen rum sind ein solches Modul zulegen, und auf Basis eines Panzerfahrzeugs meine Experimente beginnen. Alles soll per i2c verbunden werden. Die Sensordaten sollen vor Ort mittels kleiner AVRs ausgewertet werden und per i2c an den Linuxcontroller übertragen werden.
Würde mich freuen wenn sich engagierte Mitstreiter fänden 8-[ Ansonsten muss ich alleine durch das Gestrüpp ;)

Gruß,
Christian

Schlebinski
22.06.2005, 13:10
dass sich hier keiner damit befasst hat nehm ich zurück, ich war nur bissl blind, der rest gilt aber noch ;)

PicNick
22.06.2005, 13:37
Hallo, Christian !

Ich hatt mal das Vergnügen, mit so einer ähnlichen Konfiguration konfrontiert zu sein.

Schau mal da rein, wenn du magst

http://195.128.164.40/RT_MUSIC/electronic/frame1.htm --> Marsrover

Ich würde dir recht geben, jeder tut das, was er am besten kann:
der Controller beschäftigt sich mit der Peripherie
der Prozessor spielt gew. das Großhirn

Is halt ein bißchen sophisticated, das Ganze

voidpointer
22.06.2005, 13:45
dass sich hier keiner damit befasst hat nehm ich zurück, ich war nur bissl blind
Was hast Du denn hier schon alles gefunden? Welche Controller werden mit Embedded Linunx eingesetzt und für welche Anwendung?

Also, ich habe mich ja zunächst dem Gumstix verschrieben. Der ist wohl am ehesten mit dem DilnetPC vergleichbar (bei dem ich gerade die I2C-Schnittstelle vermisse). Der Gumstix ist auch relativ günstig und verbraucht wenig Strom (80 mA bei 200 MHz). Vor allem gibt es eine sehr aktive Community, die Verbesserungen und Wünsche zu Adaperboards einbringt, die oft in kurzer Zeit umgesetzt werden. Bei den von Dir genannten Produkten weiss ich nicht, ob man da auch Support bekommt.

Bevor ich den Gumstix in ein UAV einbaue, werde ich ihn ebenfalls auf einem Kettenfahrzeug erproben. Dabei habe ich eine ähnliche Strategie wie Deine - nämlich so viel wie möglich per I2C zu verbinden. Leider bereitet mir das I2C gerade Probleme; um von 3.3 V auf 5 V zu kommen, braucht man einen Levelshifter, und der zickt gerade...

Achim.

22.06.2005, 16:37
@PicNick: ah sehr interessant, sogar eine Stereokamera *freu* leider gehen die ganzen Bilder nicht, werden sie das irgendwann noch?

@voidpointer: die Gumstix kannte ich noch garnicht, sieht nicht schlecht aus, ich las nur, dass der Versand wohl teuer ist und jemand hier eine Sammelbestellung machen will. Lässt sich der I2C Bus nicht selber über einen entsprechenden Baustein ohne großen Aufwand realisieren? Klar wenn er schon integriert ist, is praktischer.

Schlebinski
22.06.2005, 16:41
mhh der Post war von mir, war wohl ausgeloggt.

Noch zur Frage was ich gefunden habe, es war nicht viel. Nur hier unter 'andere Mikrocontroller' zB bei ARM Prozessoren, aber stand nicht viel.

Kjion
22.06.2005, 17:06
@PicNick: ah sehr interessant, sogar eine Stereokamera *freu* leider gehen die ganzen Bilder nicht, werden sie das irgendwann noch?

War eben auch auf der Seite und hab mich auch geärgert das die Bilder nicht gehen, also mal das ganze mit dem IE probiert, und sieh da damit gehts....

MfG Kjion

PicNick
22.06.2005, 17:16
:oops: Ich bin als Webdesigner leider absolut zum knicken :oops:
Das tut mir sehr leid, aber da bin ich völlig schimmerlos

Schlebinski
22.06.2005, 18:34
du hast die Bilder im Unterverzeichnis marsrover. In den Bildpfaden hast du aber nur den Dateinamen angegeben. Keine Ahnung warum der IE das findet

http://195.128.164.40/RT_MUSIC/electronic/marsrover/rover_blank.jpg

das ist die komplette Adresse, wenn du aber im Link "/marsrover/bildname" angibtst müsste es überall gehen.

PicNick
22.06.2005, 18:47
Sieh an. Ich werd mir das mal anschauen, vielleicht krieg' ich's ja hin. Danke jedenfalls für den Tip !

PicNick
22.06.2005, 19:03
Damit ich auch was gescheites sagen kann:
Die Sache mit dem Programmaustausch Saftware, Treiber etc. hat derzeit noch den Haken, daß es kaum Standards (Schnittstellen, Protokolle,etc) gibt, die mit Controllern vernünftig anwendbar sind. Dadurch kocht jeder Compiler und Benutzer sein eigenes Süppchen (oder muß es sogar).
Wenn einmal das sichere Terrain "master/slave" verlassen werden müßte, fangt es meist zu dampfen an.
Ich weiß nicht, wie und wo ich dir helfen kann, aber wenn du Kummer hast, mach einen Thread auf, virtuell auf die Schulter klopfen kann ich dir allemal, manchmal fällt mir ja auch was ein.

Schlebinski
22.06.2005, 19:33
hehe =) ok das würde heissen, wenn man so ein Projekt aufziehen wöllte (also ich will es ja aber es müssten sich ja auch Leute finden die mitmachen) müsste man sich auf einen gemeinsamen Standard einigen, also in erster Linie welcher Controller? Verstehe ich das richtig? Wenn man sich aber auf allgemein Linux übliche Standard Compiler einigt müsste das doch theoretisch klappen? Und das auch mit verschiedenen Controllern?
Aber wenn man zu mehreren sich auf die komplette Hardware einigt und jeder baut das gleiche Maschinsche nach gemeinsamer Abstimmung, hätte man wohl den größten Erfolg.
Achja und was meinst du in dem Fall mit master/slave? Den Erbauer und den versklavten Roboter?

voidpointer
22.06.2005, 21:44
Ich denke, wenn man embedded Linux benutzt, kann man auch Software zwischen verschiedenen Controllern austauschen. Die Tücke steckt natürlich immer im Detail, aber gerade im Bereich I2C gibt es schon Treiber für viele Devices (z.B. Temperatursensoren), die man dann gar nicht erst entwickeln muss.

Wenn es doch Roboter gibt, wo sich die Sensoren und Treiber unterscheiden, kann man sich immer noch auf einer höhreren Abstraktionsebene treffen - so eine Art Robo-Schichtenmodell. Aber das müssen dann alle Beteiligten wollen und die Gefahr ist groß, dass jeder wieder sein eigenes Süppchen kocht. Im Prinzip muss die Anwendung des Roboters schon ziemlich übereinstimmen, damit man eine gemeinsame Basis hat.

Zum Gumstix: OK, es hat einige zig Dollar Versand gekostet, aber bei dem aktuellen Kurs war es immer noch günstig.

Und ja, es ist natürlich einfacher, wenn I2C hardwaremässig unterstützt wird.

Schlebinski
22.06.2005, 23:25
aber es gibt doch bestimmt eine gute Möglichkeit das I2C selber zu realisieren, zum Beispiel hiermit:

http://www.semiconductors.philips.com/pip/PCA9564PW.html

Hat hiermit jemand Erfahrung? Oder einen AVR könnte man doch auch als Wandler benutzen.

PicNick
23.06.2005, 07:40
Morgen !
Mit Standard mein ich zuerst mal hardwareunabhängige Dinge
Beispiel Kommunikation Embedded <> MC
Zwischen den beiden müßt sowas wie ein Protokoll stattfinden. Warum erfinden ?
Man könnt ja IP abkupfern, dann könnt man am embedded mit normalen Socken hantieren.
aber: mit kleineren MC wird der Overhead zu groß
So ein Protokoll auszuhirnen, hätt noch garnix damit zu tun, wer welches Betriebssystem oder Compiler verwendet.
Jeder könnte seine Peers programmieren und wüßte von vornherein, wie sich sein Parten am anderen System verhält.
Master /slave *hehe* Die meisten Implementierungen zeigen Schwächen, wenn sie mal nicht das große Wort führen. D.h. bestimmen können, WANN der Partner was will.
*lall* ungefähr verständlich, was ich meine ?
Es gehören die Eigenschafte diverser Klassen und Objecte überhaupt mal theoretisch definiert.
Konkret schreiben kann man das dann, wie man will.

voidpointer
23.06.2005, 10:11
Die Idee mit TCP/IP ist nicht schlecht. Meines Wissens wird eine schnelle Version z.B. in Kampfflugzeugen eingesetzt, um die verschiedenen Bordrechner zu verbinden. Aber für µCs ist es zu oversized. Man sollte sich an den vorhandenen Bussystemen in diesem Bereich orientieren, und das sind z.B. I2C, CAN, RS232, RS485 und noch einige parallele Busse. Sinnvoll ist hier, den Linux-Controller als Master zu definieren und die Sensoren und kleinen µCs als Slave. Falls erforderlich, kann es auch ein Multimastersystem sein, was aber auch ein paar Probleme mit sich bringt.

Was die Software betrifft, so gibt es sicher eine Menge Literatur, die den prinzipiellen Aufbau beschreibt, den man nachempfinden kann (Sensor- / Aktorschicht, Regelungsschicht, Navigationsschicht, Nachrichtenaustausch usw.) Es ist ne Weile her, das ich mich mit sowas beschäftigt habe und mittlerweile müsste sich im Web oder sogar hier im Forum einiges dazu finden lassen.

Der PCA9564 ist ne feine Sache, aber vermutlich muss man sich dann den Treiber selbst schreiben. Und den Baustein über parallele Pins anzusprechen kann auch mühsam sein.

Hier noch ein Tipp für die Auswahl: der Cobra5485 (http://elmicro.com/de/cobra5485.html) bzw. der Cobra5282. Beide mit µClinux und leider ziemlich teuer.

PicNick
23.06.2005, 10:34
Mein Gedanke ist der, wenigstens mal die ersten drei Layer zu definieren. Auf welche Art das dann physich übertragen wird, könnt' da mal wurst sein.
Man müßte ja auf jeden Fall Repeater, Bridges und Router möglich machen( Ihr kennt ja das OSI-Zeugs ).
Nach oben im stack ist es aber auch so, daß wir erst garnicht "Rechner" als Ziel oder Absender enumerieren dürfern, sondern gleich davon ausgehen, das eine undefinierte Menge von Objects miteinander quatschen, die irgendwie in diesem System verteilt sind.
Analog dazu könnt man die Sockets verstehen, wenn man beim IP-Beispiel bleibt.
Ziel wär es, daß irgendein Programm-teil durch logische Adressierung (DNS artig) dem Stepper-#x seine Schritte befiehlt, ohne sich drum zu kümmern, ob das über I2c, RS232, etc. oder alles zusammen geht.
Es sollt einer applikation auch sch.. egal sein, ob ein Entfernungsmesser mit IR oder US arbeitet, solange er vernünftige Werte liefert

Wie gesagt, Vorbilder gibt's in Masse, is ja auch nix originelles, aber man muß die Sachen ein bißchen zuschneidern, 1:1 is Overkill, auch ein Mini-Tiny sollte irgendwie mitspielen können

Schlebinski
23.06.2005, 11:05
ui das ist echt teuer

http://www.toradex.com/d/products.html

was sagt ihr zu dem? 99 euronen für dieses krass ausgestattete teil ist nicht schlecht. es wäre nur wichtig, dass man den gleich mit telnet und ftp server bekommt, sonst müsste man wie vorgesehen maus, tastatur und bildschirm anschließen. ich werde mal kontakt mit denen aufnehmen.
wie läuft das überhaupt bei diesen embedded systemen, wenn man das system zerschießen sollte und nichts mehr läuft? kann man den flash problemlos neu beschreiben?

Schlebinski
23.06.2005, 11:17
ah hab eben letzteres gefunden, man braucht anscheinend beim colibri einen speziellen steckverbinder, der an den parallelport eines pc's angeschlossen wird, hierüber kann dann geflasht werden.

Schlebinski
23.06.2005, 12:20
@PicNick: ich muss zu all dem sagen, nur dass du mich einschätzen kannst, ich versteh grundsätzlich worum es geht, auch wenn mir manche begriffe nichts sagen, habe aber noch nie ernsthaften kontakt mit solchen problemen gehabt, d.h. meine augen sind bestimmt momentan größer als mein mund bzw magen, aber der anreiz ist groß also ist das ganze für mich hoffentlich machbar

hab mich noch ein bissl mit dem colibri befasst, also was ich da vorhin laut gedacht habe ist wohl alles kein problem, d.h. der colibri scheint momentan die beste wahl zu sein, die frage ist nur wieviel ärger erspare ich mir, wenn ich das (leider teure) evaluationboard dazukaufe. eigentlich sollte es ja ohne gehen...

voidpointer
23.06.2005, 13:29
Hm, das Evaluation Board hat den Vorteil: Anschließen, Einschalten und Freuen. Das heisst, Du hast damit Gewissheit, dass es funktioniert. Kaufst Du es nicht dazu, musst Du erstmal eine eigene Leiterplatte mit DIMM-Sockel herstellen und mit Minimalbeschaltung ausstatten. Wenn Du alles richtig machst, wirst Du es mit einem Ethernetkabel an einen Hub oder Router anschliessen und Dich per telnet oder ssh anmelden können. Wenn irgendwo ein Fehler drin ist, beginnt die aufwändige Suche.

Ich gehe davon aus, dass der Colibri selbständig bootet und alle Netzwerkdienste startet. Sollte das nicht so sein, musst Du Dich vielleicht über tty anmelden. Vermutlich lässt sich diese Frage aber durch genaues Lesen der Datenblätter und Handbücher beantworten.

Hat man den Colibri erstmal arbeitsfähig gemacht, ist es zugegeben eine leistungsfähige Plattform.

Schlebinski
23.06.2005, 15:10
ja, grade dieser freufaktor ist natürlich toll, so ist es erstmal ungewisses gefummel. es ist unklar, ob er im auslieferungszustand komplett bootet, wenn nicht habe ich aber gefunden, wie man es ihm dann beibringt, zumindest so ungefähr ;) er will in dem fall anscheinend über netzwerk booten. ich kann mich ja erkundigen ob man mir auch das evalboard nachträglich ohne colibri verkauft wenn ich merke dass ich so nicht weiterkomme. ohje aber erstmal sollte ich mich hiermit nicht mehr befassen und für meine prüfungen lernen. es geht um die wurst und wenn ich rausfliege hab ich eh genuch zeit.

ragnar
24.06.2005, 00:21
Noch ein paar Anmerkungen zu den obigen System:

- Systeme auf Dimm/Simm o.ä. Schnittstellen sind sind problematisch, da man als Hobbybastler nicht unbedingt 100+ polige Fassungen verlöten kann und ausserdem ohne ein Baseboard an dem wenigstens Ethernet und die serielle Konsole rauskommt ziemlich blöd dasteht.

- Nicht vergessen: Preise sind meistens ohne MwSt. Eventuell kommt auch noch Zoll dazu. @voidpointer: wie war das denn mit dem Zoll bei deinen Gumstix ?

- Zwecks neu Flashen von embedded Systemen:
Normalerweise haben diese Systeme einen bootloader, mit dem man das ganze System neu aufsetzen kann. Dieser Bootloader liegt in einem geschützten Bereich im Flash und kann deshalb nicht so einfach überschrieben werden. Der Bootloader ist sozusagen das "Bios" der das eigentliche System lädt, normalerweise auch über das Netz. Damit braucht man praktisch nie direkten Zugriff auf das Flash.

Direkter Zugriff auf das Flash geht z.B. über JTAG. Damit wird z.B. initial der Bootloader programmiert.

Ach ja, und hier noch ein interessanter Link:

http://www.acmesystems.it/
Ein nettes kleines embedded Linux, viele Schnittstellen,
bastlerfreundliche 2,54 Stiftleisten, alles wichtige auf Stecker

Eine andere Überlegung wären übrigend die Linksys wrt54g router.
Theoretisch kann man auf denen auch Linux installieren, Wireless + Ethernet integriert, hat allerdings nur 2 serielle Schnittstellen.
(siehe z.B. http://www.freifunk.net/wiki/FreifunkFirmware)

Georg

pebisoft
24.06.2005, 08:24
wenn du schon mit mehreren avr arbeitest, brauchst du kein zusätzliches umsetzsystem. dieses bremst den robby nur aus. nimm 8 avr, verbinde die als module und schon hast du ein schnelles system was auch eine gute arbeitsteilung hat. baust eine mmc-speicherkarte drauf, habe ich auch mit 64 mb am avr und schon geht die post ab.
mfg pebisoft

Schlebinski
24.06.2005, 12:24
klar, die sind flott unterwegs, keine frage. aber das was mich an den embedded linux controllerlis lockt ist einfach die möglichkeit das ganze über wlan mit dem internet zu verbinden, tasks zu starten und zu beenden und neue programme zu übertragen, ohne den robbi abzuschalten. ausserdem lockt mich die webserver möglichkeit, wurd mit den avrs aber auch schon gemacht oder? aber ich denke man hat einfach mehr "spielraum"

Schlebinski
24.06.2005, 18:43
@ragnar: habe mir heute so eine fassung (ram/laptop) angeschaut. die pins haben ein rastermaß von 0,5mm, eigtl kein stress zu löten. ich weiss nur nicht, wo ich eine solche fassung bekommen kann. weiss da jemand was?

voidpointer
24.06.2005, 18:46
Also, während wir hier noch drüber reden, haben es andere schon gebaut. Soeben hat einer in der Gumstix-Mailinglist die folgende Seite vorgestellt:
http://cs.gmu.edu/~eclab/projects/robots/flockbots/ - "kostengünstige" Roboter mit I2C-Bus, CMUCam und Gumstix und dazu gute Anleitungen, wie man es zusammenbaut und programmiert (C oder Java). Habe die Seite zunächst nur überflogen, aber allein der Sourcecode für den I2C-Treiber wird mich ein großes Stück vorwärts bringen.

@ragnar: Gumstix und Breakout Board habe ich komplett mit Zoll und Versand für 167,5 USD bekommen. Im Dezember letzten Jahres waren das 127 Eur. Ich war mir nicht ganz sicher, ob der Zoll bezahlt ist, aber zumindest hat UPS nichts mehr von mir verlangt.

@pebisoft: Du hast Recht, dass ein verteiltes System aus AVRs auch gute Leistungen bringt. Aber manchmal braucht man eben mehr Power z.B. für Planung und Navigation. Ausserdem ist es deutlich einfacher und schneller, Software zu entwickeln, wenn man nicht immer auf die Ressourcen achten muss. Mir fällt ein Vergleich zwischen Insekten und Wirbeltieren ein: Das Nervensystem von Insekten ist dezentral, an verschiedenen Stellen sitzen gleichberechtigte Knoten, die miteinander verbunden sind. Sie vollbringen erstaunliche Leistungen bis zu einer gewissen Komplexität. Wirbeltiere haben ein zentrales Nervensystem - kleine "Controller" im Rückenmark und einen leistungsfähigen Hauptrechner im Kopf. Bremst dieser das System aus?

Schönes WE, Achim

ragnar
25.06.2005, 00:20
@pebisoft:
Natürlich könnten wir unsere Probleme auch über mehrere Mikrocontroller lösen, aber wir wollen Linux weil (Achim und Schlebinksi habens ja schon angedeutet)

- Netzwerkunterstützung (Ethernet, WLAN, Bluetooth)
- Protokollvielfalt (IP, TCP, UDP, telnet, ssh, http, ...)
- Compilervielfalt, auch in Hochsprachen und Interpretersprachen
(C, C++, Java, Python, ...)
- 32 bit sowie ausreichend Speicher und Flash für ausgefeilte Weltmodelle
- insgesamt eine sehr bequeme Entwicklung

Und zumindest für mich gilt: Lieber mit Kanonen auf Spatzen schiessen als nachher zuwenig Resourcen haben. Und ausserdem habe ich noch keine gute Möglichkeit gefunden, Mikrocontroller wireless zu programmieren (Ist wohl der Hauptgrund für mich)

@Schlebinski:
Simm-Sockel gibts sicher bei Farnell. Mit 144 pins glaube ich auch bei Buerklin (hat in München ein Ladengeschäft). Und das gehört genau zu den Dingen warum ich diese Modulen nicht so gerne mag ...

@alle:
Hat eigentlich einer von euch schon Erfahrungen mit USB/PCMCIA/CF WLAN Adaptern unter Linux gemacht ? Geht das Problemlos ? Sind die Treiber als Sourcecode vorhanden ? Wie ist die Performance ?

Georg

Schlebinski
25.06.2005, 14:07
mh habe mal bei buerklin und farnell geschaut, buerklin hat 144pol verbinder, leider keine 200pol. bei farnell gab es nicht viel in der richtung, zwar jetzt etwas mehr als in meinem 2002er katalog aber nicht wirklich viel los da. rutronik hat auch einige ähnliche sachen aber auch nix passendes. weiss jemand noch einen anderen laden?

pebisoft
25.06.2005, 17:52
"Wirbeltiere haben ein zentrales Nervensystem - kleine "Controller" im Rückenmark und einen leistungsfähigen Hauptrechner im Kopf. Bremst dieser das System aus? "

voidpointer schau dir den mensch an. der mensch ist die grösste bremse, weil er zuviel denkt und wenig handelt.
mfg pebisoft

Schlebinski
25.06.2005, 17:58
ja der mensch bremst, aber er rockt halt auch krass (zumindest manche exemplare)

Schlebinski
27.06.2005, 17:16
das sodimm problem hat sich gelöst, habe von toradex (colibri) eine ausführliche antwort erhalten:

JAE (www.jae.com)
MM50-200B1
Foxconn (www.foxconn.com)
ASOA426

AMP (www.amp.com)
search for "memory sockets"
example part number: 1-1612777-1

FCI(www.fciconnect.com)
59354


Delphi connection systems (www.delphi.com/connect)
1543 1499

tyco electronics/AMP (www.tycoelectronics.com)
search for connectors -> sockets -> memory sockets
example part number: 1-1565691-1

Sie können auch online bestellen: www.mouser.com
Mouser Part #:829-15431499-222
Sie haben den Typen am Lager.