Empfehlung für hardwarenahe Programmierung in Linux?

#1863180
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).
Gast #1863223
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
#1863241
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).
Gast #1863250
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.
#1863260
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?
#1863282
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.. ?
Gast #1863285
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.
Admin Persönliche Seite #1863762
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.
#1864112
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.. :-)  ?
#1867149
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 :-)
Gast #1872641
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.
Gast #1872714
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren