VOOZH about

URL: https://www.coursera.org/learn/linux-kernel-programming-yocto-project

⇱ Linux Kernel Programming and Introduction to Yocto Project | Coursera


Linux Kernel Programming and Introduction to Yocto Project

Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.

Linux Kernel Programming and Introduction to Yocto Project

10,748 already enrolled

Included with

β€’

Learn more

Ask Coursera

Gain insight into a topic and learn the fundamentals.
4.7

27 reviews

Advanced level

Recommended experience

Flexible schedule
4 weeks at 10 hours a week
Learn at your own pace
Build toward a degree

Gain insight into a topic and learn the fundamentals.
4.7

27 reviews

Advanced level

Recommended experience

Flexible schedule
4 weeks at 10 hours a week
Learn at your own pace
Build toward a degree

What you'll 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

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

6 assignments

Taught in English

Build your subject-matter expertise

This course is part of the Advanced Embedded Linux Development Specialization
When you enroll in this course, you'll also be enrolled in this Specialization.
  • Learn new concepts from industry experts
  • Gain a foundational understanding of a subject or tool
  • Develop job-relevant skills with hands-on projects
  • Earn a shareable career certificate

There are 4 modules in this course

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. This course builds on the assignments and knowledge obtained in the Linux System Programming and Introduction to Buildroot, which must be completed before starting this course.

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. This course includes specific hardware and software requirements. Please review the FAQ below for complete details.

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.

What's included

11 videos5 readings2 assignments1 peer review

11 videosβ€’Total 132 minutes
  • Introduction to Device Driversβ€’10 minutes
  • Device Drivers Overviewβ€’12 minutes
  • Introduction to Kernel Modulesβ€’15 minutes
  • Building and Loading Kernel Modulesβ€’12 minutes
  • Kernel Module Design Basicsβ€’13 minutes
  • Introduction to Yoctoβ€’14 minutes
  • Building a Yocto Imageβ€’19 minutes
  • Yocto/Buildroot Comparisonβ€’8 minutes
  • Assignment 6 Part 1: Threading and Linked Listsβ€’11 minutes
  • Assignment 6 Part 1: Socket Server Threading Demoβ€’9 minutes
  • Assignment 6 Part 2: Yocto Environment Bringup Demo β€’9 minutes
5 readingsβ€’Total 41 minutes
  • Course Updates and Accessibility Supportβ€’1 minute
  • Non-Credit Students: Welcome and Where to Find Helpβ€’10 minutes
  • Hardware & Software Requirementsβ€’10 minutes
  • Assignment 6 Part 1 Instructionsβ€’10 minutes
  • Assignment 6 Part 2 Instructionsβ€’10 minutes
2 assignmentsβ€’Total 20 minutes
  • Intro to Device Driversβ€’10 minutes
  • Building and Running Kernel Modulesβ€’10 minutes
1 peer reviewβ€’Total 360 minutes
  • Assignment 6 Peer Review β€’360 minutes

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.

What's included

7 videos2 readings2 assignments1 peer review

7 videosβ€’Total 80 minutes
  • Connecting to Userspaceβ€’15 minutes
  • Device Driver File Operationsβ€’17 minutes
  • Device Driver and Userspace Continuedβ€’8 minutes
  • Circular Buffer Implementationβ€’11 minutes
  • Assignment 7 Part 1 Demo: Circular Buffer Assignment Overview and emoβ€’2 minutes
  • Kernel Debuggingβ€’16 minutes
  • Assignment 7 Part 2 Demo: Yocto and Buildroot Kernel Driver Buildsβ€’10 minutes
2 readingsβ€’Total 20 minutes
  • Assignment 7 Part 1 Instructionsβ€’10 minutes
  • Assignment 7 Part 2 Instructionsβ€’10 minutes
2 assignmentsβ€’Total 20 minutes
  • Character Device Driversβ€’10 minutes
  • Kernel Debugging Techniquesβ€’10 minutes
1 peer reviewβ€’Total 360 minutes
  • Assignment 7 Peer Reviewβ€’360 minutes

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.

What's included

8 videos1 reading1 assignment1 peer review

8 videosβ€’Total 99 minutes
  • Concurrency and Race Conditionsβ€’10 minutes
  • Kernel Critical Sectionsβ€’15 minutes
  • Additional Kernel Locking Optionsβ€’12 minutes
  • More Fun with Lockingβ€’15 minutes
  • Assignment 8 Overviewβ€’26 minutes
  • Additional Kernel Debugβ€’8 minutes
  • Assignment 8 FAQβ€’12 minutes
  • Assignment 8 Demo: Char Driver and Multithreading Conceptsβ€’2 minutes
1 readingβ€’Total 10 minutes
  • Assignment 8 Instructionsβ€’10 minutes
1 assignmentβ€’Total 10 minutes
  • Concurrencyβ€’10 minutes
1 peer reviewβ€’Total 600 minutes
  • Assignment 8 Peer Reviewβ€’600 minutes

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.

What's included

6 videos1 reading1 assignment1 peer review

6 videosβ€’Total 71 minutes
  • ioctlβ€’15 minutes
  • Sleeping in the Kernelβ€’10 minutes
  • Kernel Sleep Continuedβ€’13 minutes
  • Poll and Selectβ€’10 minutes
  • Assignment 9 Overviewβ€’16 minutes
  • Assignment 9 Demo: Advanced Char Driver Operationsβ€’7 minutes
1 readingβ€’Total 10 minutes
  • Assignment 9 Instructionsβ€’10 minutes
1 assignmentβ€’Total 10 minutes
  • Advanced Char Driver Operationsβ€’10 minutes
1 peer reviewβ€’Total 600 minutes
  • Assignment 9: Advanced Char Driver Operationsβ€’600 minutes

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.

Build toward a degree

This course is part of the following degree program(s) offered by University of Colorado Boulder. If you are admitted and enroll, your completed coursework may count toward your degree learning and your progress can transfer with you.ΒΉ

Instructor

Instructor ratings
4.3 (12 ratings)
University of Colorado Boulder
3 Coursesβ€’31,309 learners

Explore more from Software Development

Why people choose Coursera for their career

πŸ‘ Image

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
πŸ‘ Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
πŸ‘ Image

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
πŸ‘ Image

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Learner reviews

  • 5 stars

    77.77%

  • 4 stars

    18.51%

  • 3 stars

    0%

  • 2 stars

    3.70%

  • 1 star

    0%

Showing 3 of 27

BL
Β·

Reviewed on Apr 11, 2023

The course is not easy, but it worth invested time. IMO, the main advantage is the experience gained.

Frequently asked questions

System Requirements

You must have access to a computer configured with the following specifications to complete this specialization:

Operating System:

Ubuntu 22.04 (64-bit) is required, but Ubuntu 20.04 (64-bit) may also be used. Other versions of Ubuntu, or other distributions, are not officially supported and may not work properly with assignment instructions.

The build system host must use an x86_64 (amd64) architecture. ARM-based systems are not supported.

Windows Subsystem for Linux (WSL) is not supported for ECEA 5306: Linux Kernel Programming and Introduction to Yocto Project, which includes Linux kernel development and Yocto projects. If you plan to continue to this course, please prepare a dedicated build host or virtual machine.

Memory (RAM):

At least 8 GB RAM is recommended. You may be able to complete assignments with less, but 4 GB or less may cause build failures.

Disk Space:

At least 200 GB of free disk space is recommended.

Hardware Requirements

While hardware is not required to complete ECEA 5305: Linux Systems Programming and Introduction to Buildroot or ECEA 5306: Linux Kernel Programming and Introduction to Yocto Project, the final course in this specialization, ECEA 5307: Linux Embedded System Topics and Projects, will require students to use embedded hardware of their choosing for the final project.

To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.

When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.

Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.

Financial aid available,