Kernel Programmierung unter Linux Teil II Programmierung von Kernelmodulen
|
|
- Herbert Winter
- vor 6 Jahren
- Abrufe
Transkript
1 Kernel Programmierung unter Linux Teil II Programmierung von Kernelmodulen Referent Klaus Ruhwinkel
2 Module, Built-In-Treiber, Treiber Ein Modul kann alles sein Ein Treiber hat I/O Aufgaben und unterscheidet sich so zum Modul Built-In-Treiber sind fest in den Kernel integriert, eine Änderung im Treiber setzt das neue Übersetzten des Kernel voraus Vorteile von ladbarem Code Das neue Übersetzen des Kernels ist nicht notwendig, damit braucht das System nicht neu gestartet werden direkter Zugriff auf das Modul nach dem Laden. 2
3 Fehlersuche I Debugger Mit dem Kerneldebugger kgdb Problem: es werden zwei Rechner benöqgt, Zielsystem und Host sind mit einer seriellen SchniSstelle verbunden. er ist noch experimentell und steht nicht für alle PlaWormen zur Verfügung. Mit dem Built-In-Debugger Problem Fehlersuche auf Assemblerebene Kernelsourcen müssen gepatcht werden DokumentaQon findet man unter DocumentaQon/<architecture>/kdb Debuggen nicht im X-Window, es ist nur über die Konsole möglich 3
4 Fehlersuche II printk(...) AkQve Fehlersuche mit der KernelfunkQon printk(...) Die Ausgabe von printk() wird in die Datei, abhängig von der DistribuQon, durch den rsyslog-daemon in die Datei /var/log/messages bzw. in die Datei / var/log/syslog oder auch /var/log/kern.log geschrieben. KonfiguraQonsdatei für den rsyslog-daemon ist /etc/syslog.conf oder im Verzeichnis /etc/syslog.d/... Befinden sich KonfiguraQonsdateien für verschiedene Programme etc. Die Loglevel des Kernels sind in der Datei include/linux/kern_levels.h definiert. Auszug aus der Headerdatei: #define KERN_EMERG KERN_SOH "0" /* system is unusable */ #define KERN_ALERT KERN_SOH "1" /* acqon must be taken immediately */ #define KERN_CRIT KERN_SOH "2" /* criqcal condiqons */ 4
5 Fehleruche III Besser ist die bedingte Übersetzung mit dem Präprozessor Dazu werden Makros aus den Headerdateien kernel.h und device.h genutzt pr_debug("modul entladen\n"); Diese Headerdateien müssen dazu mit #include<> eingebunden werden Das einfügen der Makros bedarf der zusätzlichen Variable EXTRA_CFLAGS im Makefile EXTRA_CFLAGS=-DDEBUG Beispiele für Makros aus der Datei include/linux/kernel.h #define dev_emerg_once(dev, fmt,...) \ dev_level_once(dev_emerg, dev, fmt, ## VA_ARGS ) #define dev_alert_once(dev, fmt,...) \ dev_level_once(dev_alert, dev, fmt, ## VA_ARGS ) #define dev_crit_once(dev, fmt,...) \ dev_level_once(dev_crit, dev, fmt, ## VA_ARGS ) #define dev_err_once(dev, fmt,...) \ dev_level_once(dev_err, dev, fmt, ## VA_ARGS ) 5
6 Kernelcode kodieren Innerhalb des Betriebssystemkerns steht die Standard C-Bibliothek nicht zur Verfügung Es gibt aber definierte FunkQonen im Verzeichnis lib/ zum Beispiel findet man dort die Datei string.c Im Kernel wird bevorzugt mit Ganzahlen gerechnet Es gibt im Kernelbereich begrenzte Speicherresourcen, größere Speicherreservierungen sind mit kmalloc(...) zu reservieren. Im Kernelbereich gibt es keinen Speicherschutz! Goto ist zu verwenden, wenn es dem Programmfluss förderlich ist Objektbasierte Programmierung und Entwurfsmuster im Kernel Es ist auf eine strikte Trennung zwischen den Daten und dem Code zu achten. Es gibt also einen Objektdatenbereich und ein ObjekqunkQonsbereich 6
7 Gerätenummern Den Modulen kann man selbst Gerätenummern in der init-funkqon mitgeben, bzw. man kann sie durch den Kernel generieren lassen. Die Gerätenummern werden unterschieden in Major- und Minornummern. Auszug aus /dev/ : c steht für Charakter Device Bsp: Device hpet: Major-Nr 10 Minor-Nr 228 Device lp0: Major-Nr 6 Minor-Nr 0 7
8 Gerätenummeren II Die Gerätenummern können auf zwei Arten reserviert werden. Manuell: Es ist vorher zu prüfen ob die Majornummer vergeben ist. Dazu kann die Datei /proc/modules genutzt werden. int register_chrdev_region(dev_t first, unsigned int count, AutomaEsiert: char *name); int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name); 8
9 Gerätenummern III Beispiel Manuel: sta9c dev_t fastgpio_dev_number = MKDEV(247,0); if( register_chrdev_region(fastgpio_dev_number,1,"fastgpio")<0 ) { } printk("devicenumber (247,0) in use!\n"); return -EIO; 9
10 Gerätenummern IV Beispiel AutomaQsiert: if (scull_major) { dev = MKDEV(scull_major, scull_minor); result = register_chrdev_region(dev, scull_nr_devs, "scull"); } else { result = alloc_chrdev_region(&dev, scull_minor, scull_nr_devs, "scull"); scull_major = MAJOR(dev); } if (result < 0) { printk(kern_warning "scull: can't get major %d\n", scull_major); return result; } 10
11 BenöEgte Headerdateien und Strukturen I include/linux/cdev.h -> Char Device RegistraQon enthält die Stuktur cdev, welche der Kernel für die RepräsentaQon von char-devices benöqgt. struct cdev { }; struct kobject kobj; struct module *owner; const struct file_opera9ons *ops; struct list_head list; dev_t dev; unsigned int count; und zusätzliche FunkQonen, zur Erzeugung, Löschung dieser Objekte 11
12 BenöEgte Headerdateien und Strukturen II: include/linux/fs.h -> Filesystem Header enthält wichqge Strukturen und FunkQonen zum Schreiben von Devices. Wie: int register_chrdev_region(dev_t first, unsigned int count, char *name); und die Struktur: sta9c struct file_opera9ons 12
13 BenöEgte Headerdateien und Strukturen III: Include/linux/device.h -> device.h - generic, centralized driver model ist die zentrale Headerdatei für Devices Include/linux/gpio.h -> General Purpose Input / Output ist die Headerdatei in der Strukturen und FunkQonen zur ManipulaQon der I/O s sta9c inline int gpio_request(unsigned gpio, const char *label) fängt Systemerror sta9c inline int gpio_direc9on_output(unsigned gpio, int value) iniqalisiert den Ausgangswert sta9c inline void gpio_free(unsigned gpio) gibt den Port frei sta9c inline void gpio_set_value(unsigned gpio, int value) setzt den Ausgang 13
14 BenöEgte Headerdateien und Strukturen IV: asm/uaccess.h -> user space memory access funcqons unsigned long copy_to_user(void user *to, const void *from, unsigned long count); unsigned long copy_from_user(void *to, const void user *from, unsigned long count); count ist die Anzahl der Bytes, die kopiert werden, Rückgabewert ist die Anzahl der nicht kopierten Zeichen, ansonsten null. 14
15 BenöEgte FunkEonen und Strukturen I: Es werden die untenstehenden FunkQonen für den Device-Treiber benöqgt: mod_init(): Makro das den Treiber IniQalisiert mod_exit(): Makro das den Treiber enqernt FunkQonen die durch Systemcalls angesprochen werden: driver_close() driver_open() driver_write() 15
16 BenöEgte FunkEonen und Strukturen II: Die Struktur file_operaqons. In dieser Struktur werden die korrespondierenden FunkQonen beschrieben, die über Systemcalls aufgerufenen werden. sta9c struct file_opera9ons fops = { };.owner = THIS_MODULE,.open = driver_open,.release= driver_close,.write = driver_write, 16
17 Beispiel Beispiel Zugriff auf GIO Bus: Wählen Sie die Beispiele unter aus um einen Treiber zu realisieren und die dazugehörige Anwendung hsps://ezs.kr.hsnr.de/embeddedbuch/download/index.html Beispiel Gerätenummern: Sehen Sie sich das Beispiel 5-5 an. hsps://ezs.kr.hsnr.de/treiberbuch/download/index.html 17
Treiber Kernel und Module bauen
Treiber Kernel und Module bauen Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Treiber Kernel und Module bauen 1/17
MehrKernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel
Kernel Programmierung unter Linux Programmierung von Kernelmodulen Referent Klaus Ruhwinkel Das Betriebssystem Aufbau des Betriebssystem: Es besteht aus den Betriebssystemkern und den sonstigen Betriebssystemkomponenten
MehrGeräte Treiber unter Unix/Linux
Geräte Treiber unter Unix/Linux Martin Schäf 7. Oktober 2004 1 Einleitung Die Programmierung von Geräte Treibern unter Linux ist ein sehr populäres Thema, da für viele Geräte keine, oder nur sehr primitive
MehrLinux Prinzipien und Programmierung
Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2012/2013 1 / 15 Kernel Module 2 / 15 Laden von Kernelmodulen Linux unterstützt die Auslagerung von Kernel Code
MehrGerätetreiber unter Linux
Gerätetreiber unter Linux Rolf Freitag 6.5.2005 Einführung Ein Gerätetreiber ist eine Programmschnittstelle zwischen System- oder Anwendungssoftware und der Hardware. Sie dienen auch zum Abstrahieren/Vereinfachen;
MehrEinführung in die Linux Treiberentwicklung. Ingenieurinformatik III Betriebssysteme Urs Graf, Andreas Kalberer, Martin Züger
Einführung in die Linux Treiberentwicklung Modul: Kurs: Autoren: Ingenieurinformatik III Betriebssysteme Urs Graf, Andreas Kalberer, Martin Züger Änderungen: Rev. Datum Autor Änderung 0.1 21.05.2010 M.
MehrLinux-Kernel-Programmierung
Linux-Kernel-Programmierung Übungsaufgaben Jürgen Quade Linux-Kernel-Programmierung: Übungsaufgaben von Jürgen Quade Versionsgeschichte Version $Revision: 1.5 $ Do 9. Jul 21:25:13 CEST 2009 Geändert durch:
MehrLinux Treiberentwicklung
Einführung in die Linux Treiberentwicklung 12. Dezember 2012 Autor: Martin Züger Dozent: Urs Graf Modul: Ingenieurinformatik III Kurs: Betriebssysteme Semester: HS 2012 N ä h e r d r a n a m S y s t e
MehrConnecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg
Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
MehrEmbedded-Linux-Seminare. Toolchains
Embedded-Linux-Seminare Toolchains http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de Kopier-Rechte
Mehrx86 Open Source Virtualisierungstechniken Thomas Glanzmann <thomas@glanzmann.de>
x86 Open Source Virtualisierungstechniken März 2006 Zu meiner Person Informatik Student an der Universität Erlangen im 9. Semester 4 jährige Mitarbeit an dem Projekt FAUmachine der
MehrGrundlagen. Die Komponenten eines C Programms. Das erste Programm
Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen
MehrPraktikum Betriebssysteme 1. Aufgabe (1)
FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten
MehrNachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.
Nachname:... Vorname:... MatrNr.:... Klausur PR2 HAW-Hamburg, Fakultät Technik und Informatik, Department Informations- und Elektrotechnik Dr. Robert Heß, 4.7.2008 Bearbeitungsdauer: 90 min Hilfsmittel:
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrModellgestütztes Software Engineering. Versuch 5. Wintersemester 2015
Modellgestütztes Software Engineering Versuch 5 Wintersemester 2015 Version 7.0.1, 16. Dezember 2015 Inhalt 1 OOP IN C... 3 1.1 UMSETZUNG IN RAPHSODY (RIC)... 3 2 DIE ENTWICKLUNGSUMGEBUNG... 5 2.1 HARDWARE
MehrLehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München. Linux Rootkits. Referent: Clemens Paul
Lehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München Linux Rootkits Referent: Clemens Paul Betreuer: Simon Stauber / Holger Kinkelin 12.04.2013 Linux Rootkits
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrInteger Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen
1 C-Schlüsselwörter Schlüsselwörter sind in allen Programmiersprachen reservierte Wörter. In C sind auch alle Namen _[A-Z]... und... reserviert, auch _... bereichsweise. Weiterhin durch die Standard-
MehrDie Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
MehrMicrocontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1
Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrMPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven
MPI-Programmierung unter Windows mit MPIH2 Installieren von MPIH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 02/2007 luster-installationsworkshop
MehrÜbung zur Vorlesung Programmieren in C
Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung
MehrDynamische Speicherverwaltung
Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................
MehrEinleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrKonzepte von Betriebssystemkomponenten. Gerätetreiber. Mario Körner
Konzepte von Betriebssystemkomponenten Gerätetreiber Mario Körner 26.01.2004 Übersicht Einordnung in die Betriebssystemarchitektur Schnittstelle zur Hardware Schnittstelle zum Betriebssystem am Beispiel
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrPraxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"
Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte
MehrIn der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch
Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe
MehrPraktikum Treiber. Frühlingssemester 2015 M. Thaler, A. Schmid
Praktikum Treiber Frühlingssemester 2015 M. Thaler, A. Schmid Inhaltsverzeichnis 1 Einleitung 2 1.1 Ziele.................................. 2 1.2 Aufbau des Praktikums........................ 2 1.3 Durchführung
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrLinux Prinzipien und Programmierung
Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2010/2011 1 / 24 VFS Memory Management Kernel Module 2 / 24 Das Virtuelle File System Linux unterstützt eine Vielzahl
MehrFILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam
Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==
MehrQt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse
Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Wie man in C++ mit Hilfe von Qt GUI-Anwendungen programmieren kann.
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrObjective-C CheatSheet
App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController
MehrIn 100 Minuten zum eigenen Treiber
In 100 Minuten zum eigenen Treiber Von den Grundlagen eines Kernelmoduls - bis zur farbigen LED :) Josef Holzmayr - 1 Unser Host Processor: AM335x 1GHz ARM Cortex-A8 512MB DDR3 RAM 2GB 8-bit emmc on-board
MehrDr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11
MehrKlausurvorbereitung Lösung
Ausgabe 1 a) unsigned char erzeuge_bitmuster() static int z=0; int rest; unsigned char bm; rest = z % 4; z=z+1; switch (rest) case 0: bm = 0x00; break; case 1: bm = 0x11; break; case 2: bm = 0x33; break;
Mehri2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander Dokument NR.: I2C-002-D-01
DA CL Dokument NR.: I2C-002-D-01 I2C-002 KURZBECHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander P Bitte denken ie an die Umwelt, bevor ie diese Datei ausdrucken DA CL Inhaltsverzeichnis 1. Modul
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Mehr1. Vom Sourcecode zum Programm
1. Vom Sourcecode zum Programm 1.1 Programmablauf source1.cpp source2.cpp header.h makefile Compiler Präprozessor Übersetzer Assembler object.obj object.obj Linker library.dll programm.exe Abbildung: Erstellung
Mehrfork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
MehrModerne C-Programmierung
Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete
MehrTheoretische Aspekte
Webserver mit Win32 API Datum: 04.02.03 Autor: Michael Hielscher Homepage: www.genesis-x7.de Theoretische Aspekte Aufbau eines Webservers Als erstes sollte man im Abschnitt Multithreaded SocketServer nachlesen
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrNuetzlicher Kleinkram
Ein paar Hilfestellungen zur Arbeit unter Linux/Unix FB Physik Freie Universität Berlin Computerphysik WS 2007/2008 1 2 3 user@ host :~ > gcc -o programm quelltext. c macht gleich mehrere Dinge auf einmal
MehrDer Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
MehrLehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme
Grundkurs C++ Buildsysteme Buildsysteme Beispielhaftes Übersetzungsszenario: Verzeichnis tutorial7/ main.cpp, lcdrange.cpp, lcdrange.h *.cpp Kompilieren *.o *.h Grundkurs C++ 2 Headerdateien //blackbox.h
MehrGrundlagen der Informatik - 6. Praktikum
Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt
Mehr11: Echtzeitbetriebssystem ucos-ii
11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren
MehrSteuern und Messen mit Raspberry Pi
24 C 36 % 24 C Thanks to Openclipart, Fritzing, elinux.org, Liz Grazer Linuxtage 2014 (GLT14) Raspberry Pi Raspberry Pi ist ein kreditkartengroßer EinplatinenComputer, der von der Raspberry Pi Foundation
MehrKlausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber
Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird
MehrProgrammieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff
Programmieren in C Die C-Standardbibliothek Prof. Dr. Nikolaus Wulff Die C-Standard Bibliothek Mit dem C Compiler werden viel fertige Bibliotheksfunktionen ausgeliefert. Eine genaue Kenntnis dieser Funktionen
MehrÜbersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
MehrÜbung zu Grundlagen der Betriebssysteme. Einführungsveranstaltung 16.10.2012
Übung zu Grundlagen der Betriebssysteme Einführungsveranstaltung 16.10.2012 Termine Übungen wöchentlich, Dienstags 14 Uhr (c.t.), Raum E312 15 Uhr (s.t.), Raum E312 Jede Woche 1 Übungsblatt http://userpages.uni-koblenz.de/~mips/bs/uebung/
Mehri2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF8574 8-Bit I/O Port-Expander Dokument NR.: I2C-001-D-01
DA CL Dokument NR.: I2C-001-D-01 I2C-001 KURZBECHREIBUNG I 2 C Modul mit PCF8574 8-Bit I/O Port-Expander P Bitte denken ie an die Umwelt, bevor ie diese Datei ausdrucken DA CL Inhaltsverzeichnis 1. Modul
MehrC++ mit dem Arduino (Uno und Mega2560)
C++ mit dem Arduino (Uno und Mega2560) 1. Toolchain Als toolchain bezeichnet man die Reihe von Software, die nötig ist um den Prozessor zu programmieren, das Ergebnis draufzuladen und dann zu testen. Hier
MehrC-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)
C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die
MehrEinführung in wxwidgets & wxdev-c++
Einführung in wxwidgets & wxdev-c++ Vortrag im Rahmen der Vorlesung Computational Physics im Sommersemester 2009 Folie 1/13 Gliederung wxwidgets: Übersicht wxdev-c++: Übersicht Installation wxwidgets Syntax
MehrDie Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
MehrObjekt-basiert oder objekt-orientiert? Moderne Low Level Treiberprogrammierung mit C/C++ Programmier-Paradigmen Programmiersprachen C und C++
Objekt-basiert oder objekt-orientiert? Moderne Low Level Treiberprogrammierung mit C/C++ Renate Schultes MicroConsult GmbH Objekt-basiert oder objekt-orientiert? Agenda Agenda Programmier-Paradigmen Programmiersprachen
Mehr2 USBundLinuxhotplug. 2.1 Eigenschaften von USB. In diesem Kapitel lernen Sie. das USB-Schichtenmodell kennen.
2 USBundLinuxhotplug In diesem Kapitel lernen Sie das USB-Schichtenmodell kennen. die Kernelmodule für USB-Treiber kennen. wie Sie USB-Geräte unter Linux verwenden. dashotplug-system von Linux kennen.
MehrDateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld
C-Programmierung von MiCoWi mit der Keil-Entwicklungsumgebung µvision4 1. Erstellung eines neuen Projektes Menüpunkt: Project New µvision Project Es wird ein komplett neues Projekt in einem beliebigen
MehrPVFS (Parallel Virtual File System)
Management grosser Datenmengen PVFS (Parallel Virtual File System) Thorsten Schütt thorsten.schuett@zib.de Management grosser Datenmengen p.1/?? Inhalt Einführung in verteilte Dateisysteme Architektur
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 9.1.2013 IAM Institut für Angewandte Mathematik Fortgeschrittene Ein- und Ausgabe Bisher: Ein- und Ausgabe nur über die Kommandozeile Erweiterung: Konzept
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016
MehrSelbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer
Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten
MehrCodingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008
I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium
MehrC programmieren. Jürgen Wolf
C programmieren Jürgen Wolf Vorwort 11 Kapitel 1: Schnelleinstieg 13 Was sollten Sie bereits können? 14 Was lernen Sie mit diesem Buch? 14 Was benötigen Sie noch? 14 Überblick zu den einzelnen Kapiteln
MehrÜbung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9
Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrC A R L V O N O S S I E T Z K Y. Boost C++ Libraries. Johannes Diemke. Department of Computer Science Learning and Cognitive Systems
C A R L V O N O S S I E T Z K Y Boost C++ Libraries Johannes Diemke Department of Computer Science Learning and Cognitive Systems Grundlagen Freie von Experten begutachtete, portable C++ Bibliothek Nützlich,
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 16.1.2013 IAM Institut für Angewandte Mathematik C-Präprozessor: Einfügungen Standard-Header #include Fügt den Text der Headerdatei
MehrAnleitung zur Einrichtung von OpenCV
Anleitung zur Einrichtung von Dieses Dokument beschreibt die Einrichtung und Funktionsüberprüfung von im Kontext der Lehrveranstaltung. Einrichtung Dieser Abschnitt beschreibt die Einrichtung von unter
MehrC/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Der Präprozessor Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Der Präprozessor
MehrHochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene
MehrEinheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten
Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R. Spurk (Informatik)
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrMicrosoft Visual C++ 6.0
Hardwareinbindung in Matlab bild = Quickcam; figure;imshow(bildanzeige); MATLAB 6.1 void mexfunction( int nlhs, mxarray *plhs[], int nrhs, const mxarray*prhs[] ) Microsoft Visual C++ 6.0 Aufruf int Capture(unsigned
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 14. Modularisierung und Automatisierung Was heißt Modularisierung? Seite 2 bisher Programm komplett in einer Datei längere
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrSpeicheraufbau des AT89C5131
Speicheraufbau des AT89C5131 Prinzip: - getrennter Programmspeicher (ROM) und Datenspeicher (RAM) - interner Speicher (auf dem Chip) und externer Speicher (Zusatzbausteine) Das Experimentalsystem hat keinen
MehrZusatzinformation zum USB-Flashdrive mit ARM und RS232
Zusatzinformation zum USB-Flashdrive mit ARM und RS232 1. Belegung der LCD-Schnittstelle an JP3: REGISTER_SELECT READ_WRITE ENABLE DISPLAY_D0 DISPLAY_D1 DISPLAY_D2 DISPLAY_D3 DISPLAY_D4 DISPLAY_D5 DISPLAY_D6
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrModulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
MehrTimm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg. Prozess-Monitoring auf CPU-Takt Ebene
Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg Prozess-Monitoring auf CPU-Takt Ebene Einleitung Unser Arbeitsgebiet: ALICE Teilchenphysik Experiment Cluster
Mehr