<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="modul.xsl" type="text/xsl"?>
<modul id="7410" xml:lang="en">
 <titel>Advanced Linux</titel>
 <titelLang>Advanced Linux</titelLang>
 <kuerzel>ALin</kuerzel>
 <ects>4</ects>
 <studiengang>I</studiengang>
 <modultyp></modultyp>
 <praesenz>64</praesenz>
 <selbststudiumszeit>72</selbststudiumszeit>
 <sprache>de/fr</sprache>
 <beschreibungsSprache>en</beschreibungsSprache>
 <studiengangtyp>Bachelor</studiengangtyp>
 <methoden><p>Theory (classroom):  (50%)<br /> Lab-assignments:  (50%)</p></methoden>
 <vorkenntnisse><p>Module 7063: Operating Systems</p>
<p>Topics of Module 7409 (Linux) acquired in this course or elsewhere.</p>
<p>Programming experience in C with open source tools like gcc, make, gdb, etc.</p></vorkenntnisse>
 <ziele><p>The objectives of this module</p>
<p>- learn how to setup a cross development platform for the CARME Kit, an ARM based embedded system.</p>
<p>- understand the differences of a PC based and an embedded Linux system.</p>
<p>- understand how a recent Linux kernel deals with processes, scheduling,        virtual memory, modules, etc.</p>
<p>- understand the device driver model for Linux and how to use it for embbedded systems.</p></ziele>
 <lerninhalte></lerninhalte>
 <lehrinhalte><p>Topics of this module</p>
<dl><dt>Building an ARM based embedded Linux system (CARME)<br /></dt><dd>Building a tool chain and a system from scratch</dd><dd>Install more software: Utilities and services</dd><dd>Porting a typical application to an embedded system</dd><dt>Software Cross development for an embedded Linux system</dt><dd>The GNU style software development process in C/C++</dd><dd>Building and testing a simple character device driver on          an embedded ARM based board</dd><dd>Use the driver to estimate interrupt latency <br /></dd><dd></dd><dt>Introduction into Linux kernel internals</dt><dd>Kernel organization</dd><dd>Process management</dd><dd>CPU scheduling</dd><dd>Physical and virtual memory management</dd><dd>Kernel modules</dd><dt>Device Driver Basics</dt><dd>Linux device driver model, Driver operations</dd><dd>Character/block drivers, Example of a simple character driver</dd><dd>General Purpose I/O (GPIO)<br />Concurrency</dd><dd>Interrupts, timers, tasklets, kernel threads<br /></dd><dd><br /></dd></dl></lehrinhalte>
 <lernergebnisse><p>Knowledge: Subsystems in a Linux system; kernel internals of recent Linux kernels about processes, scheduling,        virtual memory, modules, etc.</p>
<p>Abilities:<br />- setup a cross-develop platform; write a simple device driver on an embedded system<br /> - extend the kernel with own modules<br />- understand interrupt processing and latency estimation</p>
<p>Competences:<br />- ability to setup and to use an embedded Linux development environment<br />- analyse, design and implement simple drivers including interrupt processing</p></lernergebnisse>
 <bewertung><p>One written exam<br /> Several graded lab exercises</p></bewertung>
 <qualifikationstyp>E</qualifikationstyp>
 <bemerkungen></bemerkungen>
 <literaturangaben><p>Bovet Daniel P; Cesati Marco<br />Understanding the Linux Kernel<br />3rd edition: O'Reilly 2006</p>
<p>Corbet Jonathan; Rubini Allessandro; Kroah-Hartman Greg<br />Linux Device Drivers<br />3rd Edition; O'Reilly 2006</p>
<p>Quade Jürgen; Kunst Eva-Katharina<br />Linux Treiber<br />2. Auflage; d.punkt 2006</p></literaturangaben>
 <autor>
  <name>Franz Meyer</name>
  <email>franz.meyer@bfh.ch</email>
  <kuerzel>myf1</kuerzel>
 </autor>
 <verantwortlicher>
  <name>Franz Meyer</name>
  <email>franz.meyer@bfh.ch</email>
  <kuerzel>myf1</kuerzel>
 </verantwortlicher>
 <datum>24. August 2011</datum>
 <lernziele></lernziele>
</modul>
