Open-source programming

The subject provides insight into world of open-source projects and techniques
proved to be usesfull for larger applications and operating systems development.
Reasons leading to the founding of GNU project is discussed
and possible andwantages of this approach for cooperation even for commercial
subjects is shown. Usual tools used for development, debugging and source
code control and functional testing are described. Description of POSIX type
operating system structure and introduction to the driver development,
user-space libraries and user graphics environments comes next.
The last topic is introduction how to use earlier described techniques
and support for embedded applications development and real-time control. \\Výsledek studentské ankety předmětu je zde:

Počet kreditů
zápočet a zkouška
Jazyk výuky
Rozsah výuky v kombinované formě studia: 14p+6c
Obsah přednášek

1. Introductory words for subject, open-source software, project GNU
(GPL, LGPL, ...) and operating systems and projects based on
its philosophy
2. Development tools (binutils, compiler, debugger, autotools), libraries
(glibc, newlib, ...) and the ways to use them
3. Linux distributions: overview, package manages, preparation of .rpm and .deb
packages. Cooperation in the open-source community: patch exchange,
version control systems.
4. Basic operating system kernel description (processes, address spaces, etc).
5. Device drivers I (character devices, interrupt servicing)
6. Memory management, cache memory consistency maintenance for across
architectures, OS level abstractions.
7. Device drivers II (DMA transfers, block devices)
8. User-space environment structure (basic libraries, filesystem base,
etc.), User graphics environments and libraries: QT, GTK+
9. Embedded Linux: cross-compilation, bootloaders, busybox, usual drivers
used in embedded systems.
10. Multi-thread applications and synchronization mechanisms (NPTL, Futex, etc.)
11. The target areas for described systems, industrial control (robotics,
programable automates - PowerPC, ColdFire ), mobile personal devices
(cell phones, PDA, game-consoles - ARM, SH)
12. Communications, busses and technologies (ETHERNET, CAN, Profibus)
13. OS Linux support for safety sensitive and real-time applications
- nanokernels, virtualisation, Linux real-time extensions,
and other alternative solutions for RT systems - microkernels,
real-time executives
14. Future trends and development

Náplň cvičení

1. Introduction to used HW and SW
(used architecture depends on kits availability at given time
- x86, ColdFire, PowerPC or ARM)
2. Presentation of kernel build process and minimal filesystem preparation,
explanation of ways to use this base for students work
3. Task to exercise preparation and building of minimal character device
4. Extension of the driver with interrupt processing and input/output
pin connection
5. Finalization of the complete device driver conforming full
PCI or platform device device model
6. reserve for previous tasks finalization
7-11. Individual work on some more complex tasks,
i.e. control of CANopen equipped motion controllers over CAN bus,
development of application using graphics libraries suitable for small devices,
preparation of device drivers for some other peripherals, etc..
12-13. Presentation of individual results to other attendants of the seminaries
14. Assessment