www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Embedded Linux


Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ikarus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: sffdfdf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber bitte die SW aus der rosaroten Edition, nicht die aus der
blauen

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Imon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ikarus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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, ...).

Autor: ikarus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
#!/bin/sh

SRC = /pfad/zur/datei
DST = /pfad/zum/ordner/in/dem/gespeichert/werden/soll

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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS:
Da würde man das Skript schreiben in der Art, daß es die Aktion
nur einmal macht:
#!/bin/sh
#
# Dieses Skript ist von...
# und macht ...

echo "Hallo Welt!"

# ... hin- und herkopieren, je nach Belieben...

Dieses Skript legt man z.B. in /usr/local/bin oder sonstwo ab
und macht es ausführbar:
chown root /usr/local/bin/meintollesskript
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 :
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro
n.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro
n.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cro
n.monthly )
#

00 1    * * *  root      /usr/local/bin/meintollesskript

*/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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.