Announce: Linux Kernel Porting Workshop

The much awaited "Linux Kernel Porting Workshop" is here! The objective of the workshop is to provide better understanding of the Linux device model, the device tree, and the changes required to port the kernel to a new board. This workshop deals with Board Level Porting. To understand terminologies associated with porting, please read our article titled Linux Kernel Porting, Jargon Buster

Date and Time

  • Sep 10, 9:00 AM to 6:00 PM

  • Sep 11, 9:00 AM to 6:00 PM

Venue

The workshop venue address is provided below

Innoart Technologies,
116, Pasumpon Muthuramalinga Tevar Rd,
Nandanam Extension, Nandanam,
Chennai

Location of the venue on Google maps: here

Workshop Ticket

This is a paid workshop, and the workshop ticket price starts from Rs. 4000 (inclusive of lunch).

Target Audience

Embedded Linux BSP Engineers

  • The kernel is a fast moving target, and engineers need to catch-up with kernel improvements from time to time.

  • This workshop will help engineers to migrate from pre-DT kernels to the current Device Tree based kernels.

Linux Device Driver Developers

  • Device detection and handling in embedded systems is tricky, when compared to traditional busses like PCI and USB.

  • The workshop will help developers who have worked on hot-plugable busses like PCI and USB, to get up to speed with device tree and how devices are handled in embedded systems.

SoC VLSI Engineers

  • SoC engineers generally make customizations to existing SoCs.

  • The workshop enables engineers to make corresponding modifications to the kernel, and test their hardware changes on FPGAs and other emulators.

Hardware Board Designers

  • Hardware designers create a new board designs based on reference board designs.

  • The workshop enables hardware engineers to work in tandem with software engineers during board bring-up, by suggesting required modifications to the device tree and the kernel.

Trainers

  • Vijay Kumar, Technologist at Zilogic Systems

  • Deepak, Technologist at Zilogic Systems

Pre-requisites

  • Should be familiar with the Linux command-line

  • Should be familiar with microprocessors

  • Should be familiar with C programming

  • Should be familiar with Linux system programming

Hardware Requirements

Participants are required to bring their own Laptop

  • Should have minimum 2GB RAM

  • Should have minimum 10GB free Harddisk space

Software Requirements

  • Supported operating systems: Windows / Linux

  • Should have the following software installed

    • Vagrant == 1.6.5

    • VirtualBox == 4.3.36

Tentative Schedule

Day 1

Time Session

09:00

Setup and Introduction

10:00

Kernel Introduction

10:30

Tea Break

10:45

Devices Interfacing

11:45

Application Driver Interface

01:00

Lunch Break

02:00

Kernel Frameworks

02:30

Bus Model & Sysfs

03:30

Tea Break

03:45

Kernel Module Autoloading

04:45

Device Tree Intro and Syntax

Day 2

Time Session

09:00

SoC Architecture

09:30

Device Tree Bindings

10:30

Tea Break

10:45

Flash

11:15

Ethernet

11:45

I2C LCD & Keypad

12:15

LCD Display

01:00

Lunch Break

02:00

GPIOs & LEDs

02:30

Pin Control Subsystem: pinctrl

03:30

Tea Break

03:45

Driver & Device Tree

04:15

Device Tree Boot

04:45

Debugging with Log Messages

05:15

Debugging Driver Binding

Syllabus

Kernel Introduction

  • Kernel configuration

  • Building the kernel

  • Booting the kernel

Devices Interfacing

  • Memory Interfacing

  • Device Interfacing

  • MMIO

  • Controller Based IO

  • Controlling LEDs from Userspace

Application Driver Interface

  • Unix/Linux Device Abstraction

  • Device Files

  • Types of Drivers

  • Keypad and LCD example

  • Kernel Frameworks

Bus Model & Sysfs

  • Hotpluggable Bus

  • Bus Model

  • Device and Driver Binding

  • Platform Bus

  • I2C Bus

Kernel Module Autoloading

  • Kernel Modules

  • Modalias

  • depmod

  • UDev and Module Loading

Device Tree Intro and Syntax

  • History

    • Role of Device Tree

    • Open Firmware

    • Linux Support

    • Bootloader Support

  • Syntax

    • Data Types

    • Tree Representation

    • Overlays

    • Includes

    • Preprocessor

SoC Architecture

  • System Bus

  • On-chip Peripherals

  • Interrupt Tree

Device Tree Bindings

  • Board compatible

  • CPU

  • Memory

  • System Bus

  • Peripherals

    • Registers

    • Interrupts

  • Boot Parameters

  • Device compatible

Flash

  • NOR Flash

  • Partitions

    • Range

    • Labels

    • Read-only

  • Testing with JFFS2

Ethernet

  • Phy Interface

    • Data

    • Control

  • MAC Address

  • Testing with ifconfig / wget

I2C LCD & Keypad

  • I2C Device

  • Addressing

  • Interrupts

  • Testing with Char Device

LCD Display

  • Video Interface

  • Configuration Parameters

  • Testing with Frame Buffer Console

GPIOs & LEDs

  • Refering GPIOs

  • LED Triggers

  • GPIO LEDs

  • Testing with Triggers

Pin Control Subsystem

  • Pin Muxing

  • Pin Configuration

  • Testing with Visualizer

Driver & Device Tree

  • Platform Device

  • Platform Data

  • Platform Resources

  • Kernel OpenFirmware APIs

Device Tree Boot

  • Machine DT

  • ATAGs and DT Boot

  • Appended DTB

Debugging with Log Messages

  • Console device

  • Early Printing

  • Log Buffer

  • Dumping Log Buffer from U-Boot

Debugging Driver Binding

  • Kernel Driver Config.

  • Driver Loading

  • Driver Binding

  • Debugging Probe Failure