Linux Kernel Programming and Introduction to Yocto Project (Coursera)

Linux Kernel Programming and Introduction to Yocto Project (Coursera)
Course Auditing
Categories
Effort
Certification
Languages
Undergraduate degree in Electrical and Computer Engineering or Computer Science, or equivalent work experience
Misc

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Linux Kernel Programming and Introduction to Yocto Project (Coursera)
This course provides an introduction to Kernel Driver development for the Linux operating system. The Yocto build system is introduced, which students use to build their own custom Embedded Linux system through programming assignments.

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Linux Kernel Programming and Introduction to Yocto Project can also be taken for academic credit as ECEA 5306, part of CU Boulder’s Master of Science in Electrical Engineering.


What You Will Learn

- Fundamentals of Linux kernel development.

- How to build a custom Linux kernel driver and deploy on an Embedded Device.

- How to use the Yocto project to build Embedded Device images


Syllabus


WEEK 1

Introduction to Device Drivers and Yocto

In this module, you will learn the basics of Linux Device Drivers, including how to build and run a Linux Device Driver. You will modify the socket application you developed in the previous course and add threading. You will also be introduced to the Yocto Project and build a custom Yocto image which includes your custom socket application developed in the previous course.


WEEK 2

Linux Character Drivers and Debugging

In this module, you will learn about the different types of Linux Kernel drivers and the kernel support for character device drivers. You will learn about fundamental driver data structures and functions for interacting with user space. You will understand the basics of Kernel debugging and how this differs from application debugging. You will implement a unit-tested circular buffer which will be used in future assignments. Finally, you will build a Yocto embedded device image with support for an out of tree kernel module.


WEEK 3

Concurrency in the Linux Kernel

In this module, you will learn the basics of concurrency in the Linux kernel, and how to use semaphore and mutex in your device driver to design for concurrent access. You will learn the difference between atomic and non atomic context and strategies for locking in each context. You will modify your socket application to interact with a custom character device based on your tested circular buffer implementation using the concurrency concepts discussed in the module.


WEEK 4

Kernel sleeping and ioctl

In this module, you will learn the purpose and use of the ioctl command for Linux drivers and how the ioctl command is implemented in a driver. You will learn the basics of sleeping and waking up in the Linux kernel and how to handle blocking and non-blocking IO. You will modify your custom Linux kernel driver and Linux application to include ioctl support.



MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Course Auditing
46.00 EUR
Undergraduate degree in Electrical and Computer Engineering or Computer Science, or equivalent work experience

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.