oD3 | Pilotes Linux |
Les travaux pratiques sont menés sur des tableaux cibles, qui peuvent être : | ||
Cartes "STM32MP15-DISCO" à base de deux Cortex/A7 de STMicroelectronics. | ||
Cartes "SabreLite" de NXP basées sur le Quad Cortex/A9. | ||
Cartes "imx8q-evk" de NXP basées sur le Quad Cortex/A53. | ||
Nous utilisons un kernel linux récent (4.x), tel que supporté par le fournisseur de la puce. |
Exercise : | Writing the "hello world" kernel module | |
Exercise : | Adding a driver to kernel sources and configuration menu | |
Exercise : | Using module parameters | |
Exercise : | Writing interdependent modules using memory allocations, reference counting and linked lists |
Exercise : | Display dynamic traces on the running kernel | |
Exercise : | Debug a module initialization using kgdb |
Exercise : | Fixing race conditions in the previous lab with mutexes |
Exercise : | Step by step implementation of a character driver: | |
• | driver registration (major/minor reservation) and device special file creation (/dev) |
Exercise : | Step by step implementation of a character driver: | |
• | Implementing open and release | |
• | Implementing read and write | |
• | Implementing ioctl | |
• | Implementing mmap |
Exercise : | implementation of a pipe-like driver: | |
• | implementing waiting and waking | |
• | adding non-blocking, asynchronous and multiplexed operations (O_NONBLOCK, SIGIO, poll/select) |
Exercise : | Polling gpio driver with raw register access | |
Exercise : | Interrupt-based gpio driver with raw register access | |
Exercise : | gpio driver using the gpiolib |
Exercise : | Implementing a platform driver and customizing the device tree to associate it to its device (a serial port) | |
Exercise : | Implementing power management in the previous driver | |
Exercise : | Implementing remote wakeup in the previous driver |
Exercise : | Writing a custom class driver | |
Exercise : | Writing a misc driver |
Exercise : | Implementing slave DMA in a serial port driver |
Exercise : | Writing a USB host driver |