System programming
The content on this page was translated automatically.
Lecture
The following students passed the practical part of the course and thus gained admission to the
exam:
25205110, 26213279, 28103057, 29251814, 30205613, 30207048, 30211063,
31202534, 32206584, 32207059, 32208977, 32209426, 32215685, 32219649,
32221404, 32223101, 32223525, 32227725, 33104656, 33202477, 33203230,
33205089, 33205445, 33206127, 33207304, 33207508, 33210016, 33210032,
33211455, 33211882, 33211934, 33212755, 33227258, 33230711, 33236906,
33246909, 33303729, 33305824, 33306386, 33306441, 33306522, 33307123,
33307686, 33308410, 33311326, 33311711, 33312574, 33312642, 33313214,
33313227, 33313764, 33313829, 33313858, 33314352, 33349204, 33360542,
33365932, 33369271, 33375087, 33436324
Assessment reports may be viewed at the exam review.
Permitted aids for the written exam: A self-created DIN A4 sheet (front and back) - handwritten or created by computer. A non-programmable calculator.
Learning objectives:
Basics of system program development, evaluation criteria of system software components, models of system software development, interprocess communication, process synchronization, system commands, application of system commands.
Contents:
system software development, system commands, evaluation criteria
Previous knowledge:
operating systems, basics of C programming, basics of mathematics
Course number: FB16-6605
Location and Time:
Tuesdays, 10:00 am - 12:00 pm, Room -1418
Start: 19.04.2016
Lecturer:
Scope:
3 SWS or 5 CP
Exercise
Place and time:
Tuesdays, 5:00 p.m. - 7:00 p.m., room -1201
Wednesdays, 2:00 p.m. - 4:00 p.m., room -1201
Start: First date will be announced in the lecture.
Exercise Supervisor:
Exercisesheets:
Exercise sheet 1
Solution-exercise sheet 1
Exercise sheet 2
Solution-exercise sheet 2
Exercise sheet 3
Solution-exercise sheet 3
Exercise sheet 4
Solution-exercise sheet 4
Exercise sheet 5
Solution-exercise sheet 5
Exercise sheet 6
Main.c
Makefile
Task.c
Task.h
Contact:
Email to the secretariat
Practical part
Handing in the project report
Please hand in one printed report per project group. Print
the source code of their driver as well. Deadline for submission is Friday,
August 12, 2016. The project report can be submitted daily from 9 am to 5 pm in
room 3105.
The current ACTUAL status of your driver will be automatically saved
at the submission deadline. This status will serve as the basis for evaluation. Afterwards, the boards are still available to
for exam preparation.
Note: To download your source code, you can connect to any board using an FTP
client that supports the sFTP protocol (e.g. FileZilla) with your
access data.
The lab is available outside the regular practice hours every Thursday and
Friday from 9am to 12pm for independent work on the
project.
Systematic System Software - Development of a Real - Time - Clock - Driver
Documentation for the practical part of the event
Online access
vi quick reference
Command Reference
driver programming:
Quade, J.;Kunst, E-K.: Linux-Treiber entwickeln : Gerätetreiber für Kernel 2.6 systematisch eingeführt, Dpunkt.Verlag Gmbh, 2006
Online version (German)
Corbet, J.; Rubini, A.; Kroah-Hartman, G.: Linux device drivers, O'Reilly Media, 2005
Online version (English)
I2C interface and its integration into the kernel:
Writing Clients (article is based on the version of the I2C interface used in the driver project)
I2C-Drivers Part 1 (Article is based on a slightly modified version of the I2C interface compared to the one used in the driver project)
I2C-Drivers Part 2 (Article based on a slightly modified version of the I2C interface compared to the one used in the driver project)
Using the I2C Bus with Linux (article based on a slightly modified version of the I2C interface compared to the one used in the driver project)
RTC chip:
data sheet (English)
Bibliography
General Literature:
Achilles, A.: Betriebssysteme: eine kompakte Einführung mit Linux, Springer Verlag, 2006
Amme, W.: Implementierung und Evaluierung verschiedener Speicherverwaltungsstrategien in einem UNIX-ähnlichen Lehrbetriebssystem, Tectum-Verlag, 1995
Andleigh, P. K.: Unix System Architecture, Prentice Hall, 1989
Bach, M. J.: UNIX -- Wie funktioniert das Betriebssystem?, Hanser, 1991
Balzert, H.: Lehrbuch der Software- Technik 1/2, Spektrum Akademischer Verlag, 2000
Beck M., Böhme, H., Dziadzka, M.: Linux- Kernel- Programmierung. Algorithms and structures of version 2.0, Addison-Wesley, 1997
UNIX tools "lex" and "yacc", diploma thesis, FH Hamburg, FB E/I, 1997
Bock, W.: Shellprogrammierung, bhv Buch Verlag, 2006
Boehm B. W.: Software Engineering Economics, Prentice-Hall, 1981. Boich, G.: Echtzeitbetriebsysteme, Universität Erlangen-Nürnberg, Informatik, 2002
Booch, G., Rumbaugh, J., Jacobson, I.: The UML User's Guide, Addison-Wesley, 1999
Brecht, W.: Einführung in UNIX : ein Lehr- und Arbeitsbuch für Studium und Praxis, Vieweg, 1996
Burmeister, A.: Der Einstieg in UNIX, Hanser Verlag, 2000
Buschlinger, E.: UNIX für Software-Entwickler : Konzepte, Werkzeuge und Ideen, Teubner, 1993
Carre B. A., Jennings T. J., Maclennan F. J., Farrow P. F., Garnsworthy, J. R.: SPARK - The SPADE Ada Kernel, 3rd Edition,
Validation Limited, 1990
Christian, K.: C. and UNIX Dictionary: From Absolute Pathname to Zombie, John Wiley & Sons Inc., 1988
Crowley, C.: Operating Systems, Richard D. Irwin, 1997
Cullyer W. J., Goodenough S. J., Wichmann, B. A.: The choice of computer language for use in safety-critical systems, Software Engineering Journal, Vol. 6, No. 2, March 1991
Dijkstra, Edsger W.: Cooperating Sequential Processes, Report EWD Tech. Univ. Eindhoven 1965
Dümbgen, L.: Stochastik für Informatiker, Springer Verlag,2003
Egan, J. I.: Writing a UNIX device driver, Wiley, 1992
Ehrenberger, W.: Softwareverifikation - Verfahren für den Zuverlässigkeitsnachweis von Software, Hanser Verlag, 2002
Ehses, E. et. Al.: Betriebssysteme : ein Lehrbuch mit Übungen zur Systemprogrammierung in UNIX/Linux, Pearson Studium, 2005
Gräfe, M.: C und Linux: die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen, Hanser Verlag, 2003
Griffith, A.: GCC. The Complete Reference, Osborne McGraw-Hill, 2002
Haviland, K.: UNIX system programming : a programmer's guide to software development, Addison-Wesley, 1999
Herold, H.: Linux-Unix system programming, Addison-Wesley, 2003
Heuer, K.: Program development under UNIX, Addison-Wesley, 1994
Horn, T.: System programming under UNIX, Addison-Wesley, 1994
Linda L., Robbins A.: Learning the vi Editor, O'Reilly, 1998
Mauerer, W.: Linux Kernelarchitektur, Hanser Verlag, 2004
Negus, C.: Linux Bible, John Wiley & Sons, 2005
O'Dowd, D. / Kleidermacher, D.: Wenn 99,999 Prozent nicht reichen Elektronik 7, 2002, S. 78 - 81
Quade J., Kunst E.: Linux-Treiber entwickeln. dpunkt-Verlag 2004
Rubini A., Corbet J.: Linux-Gerätetreiber. O'Reilly, 2002
Robbins, K. A.: Practical UNIX programming : a guide to concurrency, communication, and multithreading, Prentice Hall, 1996
Rochkind, M.J. : Advanced UNIX Programming, Prentice-Hall Inc., Englewood Cliffs, New Jersey, ISBN 0-73-011818-4, 1985
Siever, E.: LINUX in a Nutshell, O'Reilly, 1999
Sommerville, I.: Software Engineering, Addison Wesley, 2004
Stevens, W. R.: UNIX Network Programming, Volume 1, Second Edition: Networking APIs: Sockets and XTI, Prentice Hall, 1998
Stevens, W. R..: UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications, Prentice Hall, 1999
Stevens, W. R.: Advanced programming in the UNIX environment, Addison-Wesley, 2005
Tanenbaum, A. S.: Modern Operating Systems, Prentice Hall, 1992
Tanenbaum, A. S.: Operating systems: design and implementation. Prentice-Hall, 1997
Thaller, G. E.: Verification and Validation, Vieweg, 1994
Wolf, J.: Linux-Unix-Programmierung, Galileo Press 2005