Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches Verständnis embedded linux


von Matthias L. (mcl024)


Lesenswert?

Hallo zusammen,

ich möchte mich nun intensiver mit embedded linux beschäftigen. Ein 
Beaglebone Black dient als Hardware Plattform.

Bisher habe ich mich mit der Programmierung von Mikrocontrollern in C 
beschäftigt (privat und beruflich). Einige kleine Anwendungen in C++ 
habe ich auch bereits geschrieben. Als Entwicklungsumgebung dient 
meistens Eclipse. Mit dem Betriebssystem "ubuntu" arbeite ich auch 
bereits seit mehreren Jahren, allerdings eher als user.

Bisher habe ich einfache Dinge (LED blinken) auf dem Beaglebone 
realisiert.

Mir fehlen irgendwie so viele Antworten auf grundsätzliche Fragen. Wie 
z.B.:

- Wie funktioniert das quasi parallele ausführen selbst geschriebener 
Anwendungen?
- Wo werden diese gestartet?
- Wie kann ich Variablen zwischen einem auf dem selben System laufenden 
Webserver und meiner Anwendung (in C++ geschrieben) austauschen?

Mir fällt es schwer überhaupt die richtigen Fragen zu stellen.
Vielleicht kennt ja jemand ein einfaches Buch oder eine Seite wo ich 
nicht gleich in die Tiefen eines Betriebssystem eintauchen muss. Oder 
muss ich das?

Freue mich über nützliche Antworten !

von foo (Gast)


Lesenswert?

Du hast dich beruflich mit der uC Programmierung in c beschäftigt?
Hoffentlich nur als Manager...

Füttere google mit Thread, Process, Linux, interprocess communication

von Kaj (Gast)


Lesenswert?

Matthias Laubnitz schrieb:
> - Wie funktioniert das quasi parallele ausführen selbst geschriebener
> Anwendungen?
So wie überall: über den Scheduler (Zeitscheiben usw.)

Matthias Laubnitz schrieb:
> - Wie kann ich Variablen zwischen einem auf dem selben System laufenden
> Webserver und meiner Anwendung (in C++ geschrieben) austauschen?
Über Pipes, Sockets, shared memory, oder eine Datei...

Matthias Laubnitz schrieb:
> - Wo werden diese gestartet?
Wenn du ein OS hast dann z.B. über die Konsole

Matthias Laubnitz schrieb:
> wo ich
> nicht gleich in die Tiefen eines Betriebssystem eintauchen muss. Oder
> muss ich das?
Bei Embedded vielleicht gar nicht so verkehrt etwas tiefer rein zu 
schauen, aber wie z.b. der Scheduler im tiefsten inneren Funktioniert 
musst du trotzdem nicht zwingend wissen.

Matthias Laubnitz schrieb:
> oder eine Seite
http://elinux.org/Main_Page
http://www.linuxjournal.com/tag/embedded

von Tux (Gast)


Lesenswert?

Schau doch mal auf LinuxFromScratch.org, da lernst du alles wichtige, 
wie das System funktioniert und wo du was anpassen kannst.

von Simon S. (-schumi-)


Lesenswert?

> - Wie funktioniert das quasi parallele ausführen selbst geschriebener
> Anwendungen?
> - Wo werden diese gestartet?
Du verbindest dich ja vermutlich via SSH mit deinem Beaglebone und hast 
dann eine ganz normale Konsole vor dir. Programme so starten, dass sie 
im Hintergrund weiterlaufen, kannst du indem du ein & hinten dran 
hängst. Wenn z.B. zwei  zu startende Programme in dem Ordner liegen in 
dem du gerade bist, dann:
1
$ ./meinprog1 &
2
$ ./meinprog2 &
3
$
Um Programme wieder abzuschiessen:
1
$ killall meinprog1
2
$

Wenn dein Programm gut funktioniert kannst du es dann auch als Service 
für den Autostart eintragen. Das funktioniert je nach Distribution aber 
etwas anders.


> - Wie kann ich Variablen zwischen einem auf dem selben System laufenden
> Webserver und meiner Anwendung (in C++ geschrieben) austauschen?
Da müsstest du genauer erläutern was du tun möchtest. Was ich kenne:
#1: CGI
Damit kann dein Webserver (wenn er eine Anfrage bekommt) (d)ein Programm 
ausführen und dessen Ausgabe verwursten und dem Client schicken.
#2: Websocket
Hier kommuniziert zwar nicht der Server mit deinem Programm, aber der 
Client. Ich mache gerade ein Webinterface genau mit dieser Technik. 
Dabei wir via Webserver eine HTML-Datei und etwas Javascript verteilt. 
Der Client öffnet dann (dank Javascript) einen Websocket zum 
selbstgeschriebenen Programm (das ist dann quasi auch ein Server, nur 
auf einem anderen Port) und es können wunderbar einfach Daten (Strings) 
getauscht werden. Allerdings mache ich das in Python, wo das dank 
Tornado sehr einfach ist - keine Ahnung wie schwierig sowas in C++ ist.

von S. R. (svenska)


Lesenswert?

Wenn du dieses komische Betriebssystem "ubuntu" als "user" kennst, dann 
brauchst du dich um nichts weiteres kümmern. Embedded Linux 
unterscheidet sich aus Anwendungssicht nicht von normalem Linux und alle 
deine Fragen werden in jedem besseren Linux-Buch beantwortet.

Dein Wissen über Mikrocontroller kannst du einmotten, solange du nicht 
am Kernel selbst programmieren willst.

von Matthias L. (mcl024)


Lesenswert?

Vielen Dank für die Hinweise. Jetzt habe ich einige Stichworte. Einen 
kleinen aha Effekt habe ich durch den Beitrag von Simon S. erhalten. 
Danke dafür.

Melde mich wieder wenn ich euren hinweisen nachgegangen bin.

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
Noch kein Account? Hier anmelden.