Hardware mit C++ programmieren
-
Hallo!
da man ja in tutorials immer nur einfache programme sieht, wie rechenmaschinen, oder "string vertauscher", (ich will das jetzt nicht schlecht reden, ist gut um einzusteigen) hab ich mich gefragt, wie man genau hardware mit c++ programmiert... oder halt ein OS wie windows, oder hardware zugriffe per direct x.
Klar, dafür gibt es bibliotheken (kennt einer welche?) aber diese müssen ja auch irgendwie gemacht worden sein, und wohl auch in c++ , oder werden diese bibliotheken in assembler geschrieben? Wie könnte man das selber bewerkstelligen?thx !!!!

-
Wer nicht mit mir lach, der lacht über mich.

-
Hallo
Willst du jetzt wirklich eine Liste alle C/C++ Bibliotheken? Und dazu noch erklärt bekommen wie die geschrieben worden? Wie wäre es mit einer präzißeren Frage, deren Antwort in einem vernünftigen Rahmen liegt?
bis bald
akari
-
hi,
wenn du hardware beharken willst (ich nehme an auf x86 PC), dann beschäftige dich mit treiberprogrammierung für das betriebssystem deiner wahl...

-
nein, ich will nicht eine komplette liste, sonder nur 1 beispiel bibliothek zum beispiel.
zu dem anderen punkt, will ich nur wissen wie diese bibliotheken im allgemeinen aufgebaut sind, welche sprache, und auch da vllt ein beispiel, (zB wie man direkt auf die maus zugreift, oder die zeit vom prozessor ablesen kann etwas einfaches halt)mir gehts nicht darum jetzt selbst hardware ganz neu zu programmieren, sondern will halt generell wissen wie und ob das überhaupt mit c++ geht.
gehen wir einfach mal von dem äußerst unwahrscheinlichen fall aus, dass ich mir hier zuhause ne maus zusammenbastle, und diese am pc auch benutzen will, da muss man ja auch die treiber für das os schreiben.thx !!!

-
selbstverständlich geht es in c++
(z.b. der beos kern ist c++, sowie einige intressante hobby kernel und l4 implementationen)allerdings solltest du beachten, das bestimmte funktionalitäten ganz einfach inline assembler benötigen werden
*edit* damit ist der port addressraum sowie zugriff auf extravagante cpu-cmd's gemeint
jedoch sollte es bei der meisten aktuellen hardware nicht notwendig sein
-
NetSky schrieb:
mir gehts nicht darum jetzt selbst hardware ganz neu zu programmieren, sondern will halt generell wissen wie und ob das überhaupt mit c++ geht.
im prinzip ... ja.
NetSky schrieb:
gehen wir einfach mal von dem äußerst unwahrscheinlichen fall aus, dass ich mir hier zuhause ne maus zusammenbastle, und diese am pc auch benutzen will, da muss man ja auch die treiber für das os schreiben.
wie gesacht, beschäftige dich mit treiberprogrammierung. für maustreiber z.b. gibt es beispiele, die du dir ansehen kannst...

-
richtig nah an der Hardware ist Assembler.
Wenn dich der Kram ernsthaft interessiert, leih dir in ner gutsortierten Bücherei "PC Underground" von Data Becker aus. Da kannste ASM-routinen finden wie man direkte framebuffer-spielereien macht etcpp...
Ansonsten kannst du dir ja auch einfach den Linux-Kernel (+ entsprechende Literatur) anschauen. Der ist komplett in C und ASM gehalten.
-
Hi NetSky,
ich glaube, Du siehst das "durch die falsche Brille". Im Zentrum Deiner Betrachtungen sollten nicht die Möglichkeiten/Eigenschaften von C++ oder einer anderen Programmiersprache stehen, sondern Du solltest Dir ein "konkretes Stückhardware" und dessen Möglichkeiten ansehen. JEDER Hardware-Hersteller will, dass sein Gerät auch genutzt wird und stellt deswegen entsprechende Möglichkeiten zur Anbindung bereit ... entweder direkt einen "Windowstreiber" oder eine Bibliothek oder zumindestens eine Spezifikation, wie die Hardware anzusprechen ist.
Von da ausgehend kann man sich dann überlegen, wie man da ansetzen kann.Schwierig wird es allerdings, wenn man lediglich einen fertigen Treiber hat ... dann muss man sich in das Treiberkonzept seines Betriebssystems einarbeiten (muss man sowieso wenn man einen Treiber schreiben will) und sich auf die Suche nach einer Schnittstellenbeschreibung (entweder dieses Geräts oder eines ähnlichen) machen.
Auf jeden Fall ist die Programmiersprache die letzte Instanz, die man sich ansieht. ...
Gruß,
Simon2.