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.
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,
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...