Hallo Ich habe da ein Embbeded linux BusyBox v1.1.3 Anschlüsse Lan und Usb. Zugriff über Telnet und kann dort standart Comandos ausführen cd , ls, ps und durch die Verzeichnisse wühlen. Unteranderm habe ich als Verzeichnis meinen Usbstick gefunden. Nun die Frage aller Fragen wie und wo fine ich als noch nicht Linuxer hilfe wie schreibt man für soein System Programme liebe grüße
Da brauchst die passende Entwicklungsumgebung auf dem PC. Die besteht zumindest aus einem Crosscompiler, und vermutlich den Quellen deines Embedded Linux. Programmiert und übersetzt wird dann auf dem PC, und entweder einzelne kompilierte Programm übertragen, oder gleich das ganze System als Image.
Was währe denn die passende Entwicklungsumgebung für ein solches Linux system ? Ich denke mit meinem Windows C gerümpel komm ich da nicht weit. Ich habe von Linux leider keine ahnung aber das ist doch ein Betriebsystem auf einem Microcontroller auf dem ich nun Programme ausführen kann ohne die quellen meines Linux zu kennen oder ohne gleich das system neu aufspielen zu müssen? Liebe grüße
Otto schrieb: > Was währe denn die passende Entwicklungsumgebung für ein solches Linux > system ? Für gewöhnlich findet man das dort, wo man das embedded Linux System her hat. Andernfalls wirds steinig.
A. K. schrieb: > Otto schrieb: >> Was währe denn die passende Entwicklungsumgebung für ein solches Linux >> system ? > Für gewöhnlich findet man das dort, wo man das embedded Linux System her > hat. Andernfalls wirds steinig. Nur so aus Interesse und weil es für Otto wohl auch sehr interessant ist, er braucht einen Linux-Rechner oder VirtualBox um für das/ein Linux-System zu kompilieren?
ikarus schrieb: > Nur so aus Interesse und weil es für Otto wohl auch sehr interessant > ist, er braucht einen Linux-Rechner oder VirtualBox um für das/ein > Linux-System zu kompilieren? Nicht zwangsläufig. cygwin könnte ausreichen.
ikarus schrieb: > Nur so aus Interesse und weil es für Otto wohl auch sehr interessant > ist, er braucht einen Linux-Rechner oder VirtualBox um für das/ein > Linux-System zu kompilieren? Es Kommt darauf an (TM), erstmal braucht er nur ein Crosscompiler welcher für sein Target Code generiert. Die Tägliche erfahrung hat jedoch gezeigt das es um Zehnerpotenzen Schmerz freier geht wenn er das ganze unter eine Linux System macht. Abgesehen davon das man wenn man so einige regeln beachtet seine Software erstmals auf den host mit einen entsprechenden Compiler für denn Host testen kann und erst wenn man meint das es läuft tauscht man denn Compiler aus und Probiert sein Glück auf denn Target. Auch kann es sinnvoll sein da der TO Lan hat und eine busybox auf seinen host einen Verzeichnis via NFS frei zugeben und das am Target zu mounten. So kann man sich gerade wärend der Software Entwicklung das Kopieren auf das Target sparen. Was das entwickeln beschleunigt, Sicher auch das NFS kann man Wahrscheinlich mit Windows machen, aber auch hier muss man sich erstmal umsehen wie das geht, so das es wie schon gesagt am stress freisten ist sich ein Linux und sei es nur in einer VM als Host zu suchen. Otto schrieb: > Was währe denn die passende Entwicklungsumgebung für ein solches Linux > system ? Das kommt ein wenig auf dein System an, am besten die welche die Leute nutzen welche für dein System die Software schreiben. Wenn du die nicht bekommen kannst, musst du versuchen eine Entwicklungsumgebung zu nutzen welche dem an nächsten kommt. Meisten ist es so das zum Beispiel Chip Hersteller und/oder Distributoren schon ein rudimentäres Linux bereitstellen, an welchen sich viele Hersteller Orientieren wenn sie Ihr eigenes Produkt entwickeln, aber wie man dir gesagt hat der weg kann Steinig sein. > Ich denke mit meinem Windows C gerümpel komm ich da nicht weit. Richtig siehe Oben. > Ich habe von Linux leider keine ahnung aber das ist doch ein > Betriebsystem auf einem Microcontroller auf dem ich nun Programme > ausführen kann ohne die quellen meines Linux zu kennen oder ohne gleich > das system neu aufspielen zu müssen? Das kommt drauf an, du sagst uns recht wenig über dein System ausser das es eine Busybox hat dem entsprechend wohl ein Linux ist und ein LAN Anschluss hat. Ich wage sogar zu behaupten das dein System mit hoher Wahrscheinlichkeit eine Serielle Schnittstelle haben wird. Vielleicht nicht nach draußen geführt und vielleicht fehlen auch die nötigen Pegelwandler, aber sie wird sicher an irgendwelchen Pins leicht zu erreichen sein. Was denn Aufwand angeht welchen du treiben musst um dein Programm auf die Box zu bekommen hängt vom Typ des rootfilesystem ab, wenn es ein read only Filesystem ist wirst du ein neues Image für das rootfilesystem bauen müssen. Ist es das nicht kann es sein das du mit einen simplen cp dein Programm vom USBStick auf das gerät bekommst. Denn Typ des Filesystem kannst du mit den Aufruf von mount aus der busybox feststellen. Was die Quellen angeht wenn dein Programm recht trivial ist kann es sein das dir ein Crosscompiler reicht. Die Erfahrung sagt eher nein es wird nicht reichen, außerdem kann es ein ziemlicher Kraftakt sein Programme zu Fuß für eine Embedded System Cross zu kompilieren. Wie oft habe ich schon in Configure scripten sowas wie "Nobody ever wants to cross Compile This" gelesen. so das ich erst mal anfangen durfte. die quellen fit zu machen damit sie auf meinen Target laufen. Hast du nun noch ein uCLinux am Start kannst du dich auch noch damit Rum ärgern das hier eine Sachen wie fork nicht existieren und du darfst die Quellen auch noch dagegen fit machen. für ein solches Vorgehen hat es sich in der Linux Gemeinschaft eingebürgert die Änderungen in Form von diff oder patch Dateien zu teilen. Welche man selbst verständlich auch manuell anwenden kann aber spätesten wenn du 10 Patch rumfliegen hast für ein Programm freust du dich über denn Luxus eines Buildsystem für deine Embedded Hardware. Also sehe zu das du für dein PC oder VM ein Linux ans laufen bekommst (K)ubuntu ist gut Dokumentiert und gut zum Einstieg. Besorge dir die Quellen für die Software auf deiner box ( ist GPL, kannst du also vom Verkäufer einklagen ;-) ) und nutze ein Buildsystem für embedded Software. Vorzugsweise am Anfang das welches auch die anderen Entwickler für deine Hardware nehmen, damit du nicht zu beginn gleich auf verlorenen Posten stehst.
Imon schrieb: > ikarus schrieb: >> Nur so aus Interesse und weil es für Otto wohl auch sehr interessant >> ist, er braucht einen Linux-Rechner oder VirtualBox um für das/ein >> Linux-System zu kompilieren? > Es Kommt darauf an (TM), erstmal braucht er nur ein Crosscompiler > welcher für sein Target Code generiert. Die Tägliche erfahrung hat > jedoch gezeigt das es um Zehnerpotenzen Schmerz freier geht wenn er das > ganze unter eine Linux System macht. Damals war CygWin zumindest für Applikationen eine Möglichkeit, bei Kernel-Modulen brauchte es aber defintiv ein Linux-System. Wobei ich doch froh über den Linux-Rechner war, der mir zur Verfügung gestanden hat. ;-) Imon schrieb: > Abgesehen davon das man wenn man so einige regeln beachtet seine > Software erstmals auf den host mit einen entsprechenden Compiler für > denn Host testen kann und erst wenn man meint das es läuft tauscht man > denn Compiler aus und Probiert sein Glück auf denn Target. Ja, so habe ich es damals auch gemacht. Danke für die Antwort.
Es ist sehr empfehlenswert dafür unter Linux zu entwickeln. Erspart viele Probleme. Zudem sind die Crosscompiler häufig nur für Linux verfügbar. Du brauchst auf jeden Fall den Crosscompiler. Normalerweise findest du den in der GCC (zB für arm) oder du bekommst ihn vom Hersteller des Embedded Linux Eval Board Prozessors. Einfach mal anfragen. Normalerweise wird zur Entwicklung nur der Bootloader und der Kernel richtig geflasht. Das Filesystem bleibt auf deinem Computer in einem Ordner und wird dann vom Kernel über NFS gemountet. Dazu müssen natürlich die Ethernet Treiber fest in den Kernel kompilliert sein und du musst entsprechende Parameter im Bootloader setzen. Wenn du nur schnell was ausprobieren willst, kannst du die Programme natürlich auch auf einem Stick speichern. Ist aber nur halb so komfortabel. Wenn du den Crosscompiler hast, wirst du erstmal einige Stunden damit verbringen, die ganze Umgebung aufzusetzen (Umgebungsvariablen, Hello World kompilliern, Libraries kompillieren etc.) gruss Kevin
Danke für die vielen schnellen Informationen. Ich hatte gedacht das Linux währe in etwar mit Ms-Dos vergleichbar, auf welchem man Programme ausführen könnte
> Ich hatte gedacht das Linux währe in etwar mit Ms-Dos vergleichbar, > auf welchem man Programme ausführen könnte Klar, kann man. Wenn Du ein Programm für das gerät hast, dann kannst Du es drauf kopieren und laufen lassen. Soweit kein Problem. Die ganzen Info's oben mit "crosscompiler" sind dafür da, ein Programm für das Gerät erstellen bzw. compilieren zu können. > Ich habe da ein Embbeded linux BusyBox v1.1.3 Verrätst Du uns was für ein Gerät das ist ? NurEinGast
Ein Programm habe ich nich Das gerät ist eine Yakumo Wireles Strorage 60 und mein Plan war es ein Programm zu schreiben welches automatisch um eine bestimme Uhrzeit Dateien von mehreren Netzwerk Rechnern auf einen Usb stick kopiert liebe grüße
Dafür brauchst du evtl. den ganzen Kram mit crosscompiler etc. gar nicht, weil dafür wahrscheinlich auch ein Skript reicht. Du schreibst also gar kein C-Programm, sondern nur das Skript und lässt das dann von der Shell ausführen. Möglicherweise hast du auf dem kleinen Rechner einen Editor (vi?), ansonsten musst du es auf dem PC schreiben und wie auch immer dorthin übertragen (nfs, scp, ftp, kermit, ...).
Otto schrieb: > Das gerät ist eine Yakumo Wireles Strorage 60 und mein Plan war es ein > Programm zu schreiben welches automatisch um eine bestimme Uhrzeit > Dateien von mehreren Netzwerk Rechnern auf einen Usb stick kopiert Da reicht ein Shell-Skript und cron.
1 | #!/bin/sh
|
2 | |
3 | SRC = /pfad/zur/datei
|
4 | DST = /pfad/zum/ordner/in/dem/gespeichert/werden/soll
|
5 | |
6 | cp $SRC $DST |
Dann noch cron konfigurieren und gut ist. Das ist aber ein nicht funktionsfähiges Grundgerüst, es fehlen noch viele grundsätzliche Informationen um eine funktionierende Lösung zu erstellen.
PS: Da würde man das Skript schreiben in der Art, daß es die Aktion nur einmal macht:
1 | #!/bin/sh
|
2 | #
|
3 | # Dieses Skript ist von...
|
4 | # und macht ...
|
5 | |
6 | echo "Hallo Welt!" |
7 | |
8 | # ... hin- und herkopieren, je nach Belieben...
|
Dieses Skript legt man z.B. in /usr/local/bin oder sonstwo ab und macht es ausführbar:
1 | chown root /usr/local/bin/meintollesskript |
2 | chmod 700 /usr/local/bin/meintollesskript |
So kann man es schon mal ausprobieren, indem man es von Hand aufruft. Dafür, daß es regelmäßig ausgeführt wird, gibt es in der Regel bereits ein fertiges Programm, das ist der cron-Dämon. Der wird über Dateien gesteuert, z.B. /etc/crontab :
1 | # /etc/crontab: system-wide crontab |
2 | # Unlike any other crontab you don't have to run the `crontab' |
3 | # command to install the new version when you edit this file |
4 | # and files in /etc/cron.d. These files also have username fields, |
5 | # that none of the other crontabs do. |
6 | |
7 | SHELL=/bin/sh |
8 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin |
9 | |
10 | # m h dom mon dow user command |
11 | 17 * * * * root cd / && run-parts --report /etc/cron.hourly |
12 | 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro |
13 | n.daily ) |
14 | 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro |
15 | n.weekly ) |
16 | 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro |
17 | n.monthly ) |
18 | # |
19 | |
20 | 00 1 * * * root /usr/local/bin/meintollesskript |
21 | |
22 | */2 * * * * klaus /usr/local/bin/fetchallemail |
Das ist eine mögliche crontab. Die würde jede Nacht um 1:00 dein Skript ausführen, und zudem alle zwei Minuten das Skript /usr/local/bin/fetchallemail. PS: ikarus kam schneller angeflogen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.