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 !
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
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
Schau doch mal auf LinuxFromScratch.org, da lernst du alles wichtige, wie das System funktioniert und wo du was anpassen kannst.
> - 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.