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).
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
@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).
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.
@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?
Rainer Unsinn schrieb: > Compiler, Debugger/Simulator das geht bei der Treiber programmierung sehr schlecht, wenn du dort ein breakpoint setzt dann steht der Kernel.
@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.. ?
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.
@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..
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.)
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
Ja, wie gesagt, Eclipse kenne ich. Habe gerade eine VM mit Debian installiert und übe jetzt wieder mal die Linux-Konsole.. lange her..
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.
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.. :-) ?
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.ä.).
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 :-)
Lad dir ein fertig kompiliertes Paket hier herunter: http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr
Jaja, google ist Dein Freund, bin auch schon da beim Lesen, sorry für die Bequemlichkeit!
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"
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.
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.
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.