Forum: PC-Programmierung Empfehlung für hardwarenahe Programmierung in Linux?


von Rainer U. (r-u)


Lesenswert?

Liebe Mitbastler,

ich suche Euren Rat für meinen Einstieg in die hardwarenahe 
Programmierung unter Linux. Ich möchte irgendwann mal USB-Audiogeräte 
bedienen können, siehe hier:

Beitrag "USB Audio Interface selbst ansteuern"

Wenn ich jetzt Software für die Seagate Dockstar programmieren will, 
brauche ich ja möglichst geeignet und möglichst günstig oder am besten 
kostenlos eine geeignete Sprache und eine IDE.

Was meint Ihr, welche "Toolchain" ist dafür am zweckmäßigsten?

Ich arbeite bisher eigentlich unter Windows (hab mal Unix und C früher 
im Studium gemacht). Als IDE/Sprachen hatte ich schon zu tun mit 
Z80/Assembler, VB6/VB.NET, AVR-Studio mit C, Eclipse mit Java, Bascom, 
Pascal/Delphi.

Eclipse mit Java fand ich ganz gut, ich kann nur nicht einschätzen, 
inwieweit ich da etwas zeitkritische Sachen (USB-Audiodaten schaufeln) 
hinbekomme und wie groß die Unterschiede bei den Sprachen hinsichtlich 
Treiberunterstützung sind.

Also - was würdet Ihr nehmen? (könnt auch gerne in dm anderen Thread 
weiterschreiben/ je nach Themanschwerpunkt).

von koarl (Gast)


Lesenswert?

Rainer Unsinn schrieb:
> Liebe Mitbastler,
>
> ich suche Euren Rat für meinen Einstieg in die hardwarenahe
> Programmierung unter Linux. Ich möchte irgendwann mal USB-Audiogeräte
> bedienen können, siehe hier:

Hardwarenahe? Meinst du kernelspace bzw Treiberberentwicklung?
- das würd ich mir gut überlegen.

Für das ding gibts bestimmt schon treiber, dann brauchst du bzgl. usb
eigentlich garnichts.

Ich würd mir mal Jack anschaun:
http://jackaudio.org/
Die api ist c, es gibt aber bereits einen java wrapper:
http://jjack.berlios.de/


koarl

von Rainer U. (r-u)


Lesenswert?

@koarl

Naja, wenn es einen fertigen Treiber gibt, den ich im Programm benutzen 
kann (also z.B. um die Ausgabelautstärke einzustellen, der eben die 
Audioklasse von der USB-Spezifikation abdeckt) dann um so besser.

Nur falls ich keinen geeigneten Treiber finde (z.B. kann ich ja nicht 
wissen, ob alle Mikrofoneinstellungen auch abgebildet sind) - dann will 
ich zumindest die Möglichkeit haben, selber was zu entwickeln (auch wenn 
das viel schwerer ist).

von zachso (Gast)


Lesenswert?

hardwarenah wird unter linux mit C gemacht, compiler ist der gcc. als 
entwicklungsumgebung wuerde ich eine debianbasierte distribution (ubuntu 
fuer anfaenger) in einer virtualbox empfehlen, gcc steuert man ueber 
kommandozeile oder makefiles, C-code wird im normalen editor geschrieben 
(gedit, kate, vim oder emacs, liste beliebig erweiterbar).
einfach nur audio auf nem arm wuerde ich uebrigens kein java nehmen, da 
zu langsam (soll ja sicher nicht nur audio drauf laufen?), sondern was 
compiliertes, wie C oder C++. unter umstaenden geht auch python.

von Rainer U. (r-u)


Lesenswert?

@zachso

es soll wirklich nur Audio drauf laufen, brauche kein grafisches 
Frontend.

Zum Entwickeln hätte ich schon gerne eine grafische IDE mit Editor, 
Compiler, Debugger/Simulator vielleicht. Daß man das alles als 
Kommandozeilentools einzeln verweden kann, weiß ich noch von früher, 
aber es darf ruhig bischen komfortabel sein. (Mit Entwicklungsumgebung 
meinte ich nicht das OS, sondern die IDE).

Also Du würdest Dir auf dem PC ein Ubuntu in einer VM installieren, und 
dann mit Kommandozeile und C losprogrammieren?

von Peter (Gast)


Lesenswert?

Rainer Unsinn schrieb:
> Compiler, Debugger/Simulator

das geht bei der Treiber programmierung sehr schlecht, wenn du dort ein 
breakpoint setzt dann steht der Kernel.

von Rainer U. (r-u)


Lesenswert?

@Peter

Einen Simulator würde das nicht stören .. :-)

Welche Umgebung/Komponenten würdest Du denn zum Programmieren verwenden, 
wenn Du so ein Audio-Interface an einer Dockstar zum Laufen bringen 
sollst? Also Geräte einstellen, Audio-daten empfangen, auf Datenträger 
wegschreiben, mit Effekten verarbeiten, wieder lesen/ausgeben.. ?

von Peter (Gast)


Lesenswert?

Rainer Unsinn schrieb:
> Welche Umgebung/Komponenten würdest Du denn zum Programmieren verwenden,

wenn du schon so fragst, dann sage ich einfach mal VIM und make. Alle 
Projekte die ich bis jetzt unter linux mit gcc gemacht habe, sind so 
entstanden. Es waren keine sehr großen projekte aber es auch nicht nur 
"hallo world"

Du musst dich eh in den Make prozess der Kernelmodul einhängen und wenn 
man es von hand macht das weiss man wenigsten was man tun.

von Rainer U. (r-u)


Lesenswert?

@Peter, koarl

Mal sehen ob ich das muß.. ich lese gerade über "Jack", was koarl oben 
empfohlen hat. Liest sich interessant, bin noch nicht durch..

von Rainer U. (r-u)


Lesenswert?

Hmm.. mir fehlen noch viele Grundlagen. z.B. wie das unter Lunix mit den 
"ports" und USB-Geräten funktioniert.

Aber ich freue mich weiter über Anregungen zur IDE usw. (s.o.)

von Bernd (Gast)


Lesenswert?

Sehe dir mal die Eclipse IDE an
Geht in Deutsch und für alle möglichen Programmiersprachen brauchbar.

http://de.wikipedia.org/wiki/Eclipse_%28IDE%29
Nutze ich für AVR

Gruss Bernd

von Rainer U. (r-u)


Lesenswert?

Ja, wie gesagt, Eclipse kenne ich. Habe gerade eine VM mit Debian 
installiert und übe jetzt wieder mal die Linux-Konsole.. lange her..

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Die unterste Schicht für Audio unter Linux ist ALSA. Auf der Ebene 
kannst du z.B. mit aplay Soundfiles abspielen, und mit alsamixer Dinge 
wie Lautstärke der Kanäle und Samplerate einstellen.

Direkt mit dem ALSA-API zu programmieren ist nicht zu empfehlen. 
Flexibler und einfacher ist es wenn du Jack (s.o.) als Zwischenschicht 
verwendest. Jack setzt auf ALSA auf, setzt also ein unter ALSA 
funktionierendes Audiogerät voraus. Das Jack-API ist in C sehr einfach 
zu verwenden; es gibt auch APIs für andere Sprachen, aber gerade auf 
einem schwachbrüstigen System wäre ich skeptisch ob man z.B. in Java die 
Verarbeitung mit niedrigem Delay in Echtzeit hinbekommt.

Welche IDE du verwendest ist Geschmackssache; ich würde Eclipse+CDT 
empfehlen.

von Rainer U. (r-u)


Lesenswert?

Habe gerade gelesen, dass man wohl auch mit Gnome und GLib in C 
programmieren kann.. Eclipse mit CDT werde ich mir mal ansehen. Bei 
Gnome habe ich das Gefühl, daß es vorrangig für GUIs gedacht ist, 
weniger für Konsolenanwendungen oder Dienste/Dämonen.. :-)  ?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gnome oder GLIB bringt dir nichts. Für das was du machen willst reicht 
erst mal reines C oder C++, ggf. noch irgendwelche Bibliotheken zur 
Signalverarbeitung (FFTW, IPP o.ä.).

von Rainer U. (r-u)


Lesenswert?

Schade, ich hab so viel vergessen, anderes gab es vor 15 Jahren noch gar 
nicht.. Ich muß wieder ziemlich "vom Urschleim" anfangen.

Die Installation von Debian war sehr einfach und unproblematisch, ich 
hab dann mal die Seite von Radioeins aufgemacht und den Live-Stream 
angeklickt - Codec suchen lassen - und es spielt! Das ist schon 
beeindruckend.

Die Stelle zum "Pakete installieren" hab ich auch schon gefunden, da hab 
ich bei der Suche mal "eclipse" eingegeben, aber ich bin unsicher 
welches Paket ich nehmen soll bzw. woher am einfachsten, für die o.g. 
Kombination

"Eclipse+CDT"

Muß ich das nach dem download erstmal kompilieren? Wenn ja - wie? 
(früher hatte ich da so shellscripts gemacht und von der Konsole 
aufgerufen). Und wie bekomme ich dann ein Desktopsymbol zum Starten?

Sorry ich stell mich blöd an, aber ich hab auch immer wenig Zeit zum 
"spielen".. :-) Bin halt windwows-verzogen :-)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Lad dir ein fertig kompiliertes Paket hier herunter:
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr

von Rainer U. (r-u)


Lesenswert?

Jaja, google ist Dein Freund, bin auch schon da beim Lesen, sorry für 
die Bequemlichkeit!

von Rainer U. (r-u)


Lesenswert?

So, jetzt bin ich wieder ein bischen weiter, ich fang mal einen neuen 
Thread an mit einem kleinen Erfahrungsbericht - vielleicht hat jemand 
das Gleiche vor. Und einige Sachen sind noch nicht so klar:

Beitrag "Erste Schritte mit C unter Debian/Linux"

von zachso (Gast)


Lesenswert?

so lange du dich mit dem gcc nicht auskennst nimm bitte auch nicht 
eclipse! IDEs sind fuer leute die sich bereits mit ihren tools auskennen 
und nicht fuer neueinsteiger oder gar anfaenger gedacht. und sooo schwer 
ist ein
1
gcc <datei>.c -o <exename>
auch nicht.
und ja, ich wuerde tatsaechlich empfehlen ein ubuntu zu installieren, 
das gedit zu nehmen um c zu schrieben und dann den terminal zum 
kompiliern. ist alles installiert, und einen compiler zieht man mit 
einem apt-get install build-essential nach(auch unter debian).
ich habe so schon recht grosse projekte gemacht, ab einem bestimmten 
punkt macht es dann durchaus sinn sich mal make anzuschauen.
so lange es beriets treiber fuer deine usb-soundkarte gibt brauchst du 
dir ueber usb oder nicht usb und den ganzen kram keine gedanken zu 
machen.

von hanz (Gast)


Lesenswert?

Was genau suchst du? Reicht es dir, mp3s laufen zu lassen mit 
start/stop/pause oder möchtest du Zeitkritische Audiobearbeitung (zB 
wenn du ein Gitarreneffektgerät bauen willst)

Für ersteren Fall würde ich nichts mit c++ machen, sondern mir bash 
scripte schreiben, wenn du nicht weisst was das ist, google es.

von aaa (Gast)


Lesenswert?

hanz schrieb:
> hardwarenahe
> Programmierung unter Linux

http://jackaudio.org/documentation  hier den ersten link anklicken, der 
führt dich dorthin:
http://dis-dot-dat.net/index.cgi?item=/jacktuts/starting/

mach das tut, ist alles gut erklärt, fertig

von Rainer U. (r-u)


Lesenswert?

@hanz - eher letzteres. Ich bastel gerne mit Audio herum.

@zachso - mit dem gcc alleine komme ich klar (siehe anderer Thread) / 
mit Eclipse prinzipiell auch, ich muß nur noch herausfinden, warum das 
Eclipse keinen make machen will. Werd's schon hinkriegen ;-)

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.