Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Linux Device Driver Programming With Beaglebone Black (LDD1)
Highest Rated
Rating: 4.7 out of 5(2,690 ratings)
21,529 students

Linux Device Driver Programming With Beaglebone Black (LDD1)

Foundation course on practical Linux device driver programming
Last updated 7/2026
English
AfrikaansArabic

What you'll learn

  • Fundamentals of Linux kernel module and writing syntax
  • Makefile and LKM build procedure
  • Character device driver implementation
  • Platform bus, Platform device, and platform driver concepts
  • Platform driver implementation
  • Learn device tree from scratch
  • Device tree node syntax, properties of device tree nodes
  • Kernel APIs to process device tree nodes
  • Device instantiation through device tree nodes
  • Device tree overlays and overlays testing via u-boot
  • Kernel synchronization services , mutex , spinlocks usage
  • Linux device model and sysfs
  • Linux GPIO Subsystem
  • Linux pinctrl subsystem

Course content

14 sections151 lectures21h 52m total length
  • About the instructor0:18
  • Source code and course materials0:05
  • Host and target setup7:56

    Prepare your host and BeagleBone Black target for Linux device driver development by setting up Ubuntu, organizing a workspace, and configuring boot images and root file system.

  • Tool-chain download2:21

    Learn to download and set up the cross compiler toolchain from Linaro to enable cross compiling Linux kernel, applications, and kernel modules for the BeagleBone Black's ARM Cortex-A8.

  • Important Note0:42
  • Installing gparted application1:07

    Install GParted, a graphical tool to partition the micro SD card, by opening Ubuntu Software, searching for GParted, and clicking install.

  • Tool-chain installation and PATH settings3:31

    Set up the toolchain path by adding the toolchain binaries to your home directory’s .bashrc and sourcing it to enable the cross compiler gcc for ARM Cortex-A8.

  • Note for the students0:07
  • Target preparation : Serial debug setup5:27

    Power BeagleBone Black via the mini USB cable and establish a serial debug connection to view boot messages, crossing TXD to RXD and RXD to TX on the J1 header.

  • Important documents0:06
  • Understanding booting sequence of beaglebone black hardware6:21

    Understand the BeagleBone Black boot sequence and how to boot from the microSD card by pressing the boot button during power up, overriding the default eMMC boot.

  • Preparing SD card for SD boot6:18

    Prepare a micro sd card for sd boot by creating fat16 boot and ext4 rootfs partitions with gparted, copy boot images and debian rootfs, and set boot flags.

  • Copying boot images to SD card6:39

    Copy boot images to sd card boot partition, and copy root file system to partition two. Use lsblk, cp -a, and sync, then mount root file system and copy contents.

  • Booting BBB via SD card13:35

    Boot the BeagleBone Black from the micro SD card by using the serial debug connection and minicom to watch boot messages, then login and verify the kernel version.

  • Making SD boot default on BBB by erasing eMMC MBR5:44

    Erase the eMMC MBR to boot BeagleBone Black from the SD card by default, using dd to snapshot and zero the MBR, enabling SD boot until recovery.

  • Updating Linux kernel image2:27

    Clone the latest stable kernel source from the Beaglebone official GitHub, configure and compile a new kernel image, then update the sd card to boot the board again.

  • Linux kernel compilation5:08

    Learn to configure and compile the Linux kernel for Beaglebone black, covering distclean, defconfig, optional menuconfig, cross‑compilation, and building and installing kernel modules.

  • Modules compilation0:35

    After generating the Linux kernel image, proceed to build all kernel modules with make modules -j4 in the Linux source tree, and wait for the compilation to complete.

  • Modules install1:44

    Complete kernel module installation by running the modules install command to copy generated module files into /lib/modules and verify the latest version before updating the Beaglebone black kernel image.

  • Update new boot images and modules in SD card4:54

    Update the beaglebone black with a new kernel image and modules by copying the image and dtb to the sd card, updating /lib/modules, and booting to verify kernel 5.10.168.

  • Enabling internet over USB8:21

    Enable internet over USB on Beaglebone by sharing the host's connection, configuring resolv.conf, DNS, and a default gateway, with an automation script for reboots.

Requirements

  • Students must be familiar with basic Linux command usage
  • Students must be familiar with 'C' programming language

Description

==> This should be your very first course to dive into the exciting world of "Linux device drivers" <==

In this course you will learn ,

  1. Fundamentals Linux kernel module and syntax

  2. Character device driver theory and code implementation

  3. Platform bus, Platform device, and platform driver concepts

  4. Platform driver implementation

  5. Device tree from scratch

  6. Accessing device tree nodes from drivers

  7. Device instantiation through device tree nodes

  8. Device tree properties and node syntax

  9. Device tree overlays

  10. Overlays testing via u-boot

  11. Kernel synchronization services (Mutex, Spinlocks)

  12. Linux device model and sysfs

  13. Linux GPIO subsystem

  14. Linux pinctrl subsystem


Hardware Requirements:

1) For some exercises involving testing of GPIOs, pinctrl, device tree nodes, overlays, you need a board.

In this course, Beaglebone Black board is being used.

2) Mini USB cable to power BBB

3) USB to UART cable for serial connection with BBB

4) Micro SD card 8/16 GB

5) SD card reader

6) 16x2 LCD and 10K potentiometer

7) Jumper wires

8)Bread board


OS Requirements:

32/64 bit Ubuntu 18.04+ LTS


Learning order of FastBit Embedded Brain Academy Courses,

If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)

6) Embedded System Design using UML State Machines(State machine)

7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

10) Embedded Linux Step by Step using Beaglebone Black(Linux)

11) Linux device driver programming using Beaglebone Black(LDD1)


Other programming courses

1) Master The Rust Programming Language : Beginner To Advanced

Who this course is for:

  • Students/Hobbyists/Professionals interested in exploring Linux device driver programming