• Aucun résultat trouvé

Embedded Linux

N/A
N/A
Protected

Academic year: 2022

Partager "Embedded Linux"

Copied!
32
0
0

Texte intégral

(1)

Embedded Linux

Device driver development

Sébastien Bilavarn

Device driver development

(2)

 Ch1 – Introduction to Linux

 Ch2 – Linux kernel overview

 Ch3 – Linux for Embedded Systems

 Ch4 – Embedded Linux distributions

 Ch5 – Case study: Xilinx PowerPC Linux

 Ch5 – Case study: Xilinx PowerPC Linux

 Ch5 bis – Case study: Xilinx Zynq

 Ch6 – Device driver development

Outline

Introduction to Linux Linux kernel overview

Linux for Embedded Systems Embedded Linux distributions

Case study: Xilinx PowerPC Linux Case study: Xilinx PowerPC Linux

Case study: Xilinx Zynq-7000 Linux

Device driver development

(3)

Xilinx Zynq

 Target platform: Xilinx Zynq

 Kernel configuration and compilation

Case study:

Xilinx Zynq-7000 Linux

 Introduction Target platform: Xilinx Zynq-7000

 Platform configuration Kernel configuration and compilation

 Kernel startup and execution

(4)

 Target platform: Xilinx Zynq-7000

 Processing System

Hard IP processor :

implemented on the silicon layout (where a soft IP layout (where a soft IP would be implemented using FPGA logic).

 Programmable logic

FPGA

Provides the ability to add custom logic

Introduction

(5)

 Development of a Linux kernel on a platform:

 Hardware platform configuration

Peripherals use on demand (UART, Timer, Ethernet, etc.)

Processor architecture itself can be configured according to the needs (frequency, on-chip/off-chip memory, coprocessors, etc.)

Compared to a standard kernel development (i.e. for a fixed platform

Compared to a standard kernel development (i.e. for a fixed platform architecture), information on the platform (BSP), in particular on the processor, must be known in order to configure properly the kernel.

This process is more complex than on standard platforms where the architecture is fixed (memory size, enabling cache, etc.).

 Kernel development steps

Configuration of the hardware platform

 Kernel configuration and compilation

Introduction

Development of a Linux kernel on a reconfigurable

Hardware platform configuration

Peripherals use on demand (UART, Timer, Ethernet, etc.)

Processor architecture itself can be configured according to the needs chip memory, coprocessors, etc.)

Compared to a standard kernel development (i.e. for a fixed platform Compared to a standard kernel development (i.e. for a fixed platform architecture), information on the platform (BSP), in particular on the processor, must be known in order to configure properly the kernel.

This process is more complex than on standard platforms where the architecture is fixed (memory size, enabling cache, etc.).

Kernel development steps

Configuration of the hardware platform

Kernel configuration and compilation

(6)

 Linux 4.19.0

 Distributions

www.kernel.org

www.uclinux.org

Xilinx Zynq Linux

Petalinux

Zynq Yocto

Zynq Yocto

 Cross development tools for ARM

 Provided with Xilinx tools

 Sourcery CodeBench (Mentor)

 Zynq platform (ZedBoard / ARM CortexA9)

 Xilinx Vivado, SDK

 Support of an « open source

Introduction

Cross development tools for ARM

Provided with Xilinx tools

Sourcery CodeBench (Mentor)

Zynq platform (ZedBoard / ARM CortexA9)

open source » community

(7)

Xilinx Zynq

 Target platform: Xilinx Zynq

 Kernel configuration and compilation

Xilinx Zynq-7000 Linux

 Introduction Target platform: Xilinx Zynq-7000

 Platform configuration Kernel configuration and compilation

 Kernel startup and execution

(8)

 ZedBoard (DIGILENT)

 Zynq®-7000 AP SoC XC7Z020-CLG484-1

 Memory (512 MB DDR3, 256 Mb Spansion® Quad-SPI

Flash, 4 GB SD card) Flash, 4 GB SD card)

 Onboard USB-JTAG

 10/100/1000 Ethernet

 USB OTG 2.0, USB-UART

 PS & PL I/O expansion

 Display (1080p HDMI, 12-bit VGA, 128 x 32 OLED)

 I2S Audio CODEC

Xilinx Zynq-7000

(9)

Extensible Processing Platform

 ZedBoard (DIGILENT)

 Processing System

ARM dual CortexA9 MPCore

667MHz, L1/L2 cache, FPU, NEON, cache coherency, etc.

Common peripherals

SPI, I2C, …

SPI, I2C, …

Memory interfaces

Flash, DRAM

 Programmable Logic

FPGA: Xilinx Artix-7

Hardware accelerators

Custom peripherals

 AMBA interconnect (AXI)

Extensible Processing Platform

(10)

Hardware platform configuration

 Xilinx Vivado

Processing System

Application processor

Cortex A9 MPCore @667MHz

32KB I + 32 KB D Cache

512 KB L2 Cache

256 KB on-chip memory

NEON/FPU MMU

MMU

Snoop control Unit (cache coherency)

Common peripherals

UART, USB, GPIO, Enet, SD (Flash),

Programmable Logic

Hardware accelerators

Custom peripherals

Block RAM

GPIO LEDs

Hardware platform configuration

(11)

Xilinx Zynq

 Target platform: Xilinx Zynq

 Kernel configuration and compilation

Xilinx Zynq-7000 Linux

 Introduction Target platform: Xilinx Zynq-7000

 Platform configuration Kernel configuration and compilation

 Kernel startup and execution

(12)

Hardware platform configuration

 Xilinx Vivado

Used for all hardware developments

The following basic

configuration is used for our labs:

our labs:

Processing System

Standard configuration

32-bit General Purpose AXI Master port

Programmable Logic

Block RAM

GPIO

LED_8Bits

AXI Interconnect

Hardware platform configuration

(13)

Hardware platform configuration

 Xilinx Vivado

Used for all hardware developments

The following basic configuration is used for our labs:

our labs:

Processing System

Standard configuration

32-bit General Purpose AXI Master port

Programmable Logic

Block RAM

GPIO

LED_8Bits

AXI Interconnect

Hardware platform configuration

(14)

Software development

 Xilinx Software Development Kit (SDK)

Used for all software developments:

Standalone application code

Board Support Package

Files related to the hardware Files related to the hardware platform (required for instance for Linux kernel configuration)

Kernel related developments

Board Support Package (BSP, device tree)

First Stage Boot Loader (FSBL)

Hardware platform

description is exported from Vivado to SDK to let further

Software development

Xilinx Software Development Kit (SDK)

(15)

Software development

 Xilinx Software Development Kit (SDK)

Kernel related developments:

Board Support Package

A board support package is the

implementation of specific support code for a given platform that conforms to a given

operating system. It is commonly built with a bootloader that contains the minimal device support to load the operating system

and device drivers for all the devices on the platform.

Device Tree (DT)

Device Tree is a data structure and language for describing hardware layout.

More specifically, it is a description of hardware that is readable by an operating system so that the operating system doesn't need to hard code details of the machine.

Software development

Xilinx Software Development Kit (SDK)

implementation of specific support code for a operating system. It is commonly built with

that contains the minimal device for all the devices on the

language for describing hardware layout.

hardware that is readable by an operating

system so that the operating system doesn't

need to hard code details of the machine.

(16)

Software development

 Xilinx Software Development Kit (SDK)

Kernel related developments:

First Stage Boot Loader (FSBL)

When the computer is powered on, it

typically does not have an operating system in RAM. The computer first executes a

in RAM. The computer first executes a small program stored in persistent memory (ROM) along with a small amount of

needed data, to access the nonvolatile device or devices from which the operating system programs and data can be loaded into RAM.

Generated with SDK

Second Stage Boot Loader (U-boot)

Second-stage boot loaders (e.g. U-boot) are able to load an operating system properly and transfer execution to it.

Software development

Xilinx Software Development Kit (SDK)

(17)

Software development

 Kernel related developments

 Requiring Xilinx SDK:

Board Support Package

Device Tree

First Stage Boot Loader

 Requiring Xilinx ARM Linux cross compiler

U-Boot

Filesystem (RAMDISK)

Kernel configuration and compilation

Application and driver development

Software development

Kernel related developments

Board Support Package First Stage Boot Loader

Requiring Xilinx ARM Linux cross compiler

Filesystem (RAMDISK)

Kernel configuration and compilation

Application and driver development

(18)

Xilinx Zynq

 Target platform: Xilinx Zynq

 Kernel configuration and compilation

Xilinx Zynq-7000 Linux

 Introduction Target platform: Xilinx Zynq-7000

 Platform configuration Kernel configuration and compilation

 Kernel startup and execution

(19)

 U-Boot

Das U-Boot (Universal Bootloader) is an open source boot

loader used

in embedded devices.

in embedded devices.

 Ramdisk

a fraction of the RAM memory that can be used as a virtual disk.

temporary Filesystem solution to test quickly a Linux system.

Xilinx Design Flow

(20)

 Kernel options configuration

The kernel first requires information on the hardware platform

File: xilinx.dts

arch/arm/boot/dts/

Make a default configuration:

$ make xilinx_zynq_defconfig

$ make xilinx_zynq_defconfig

Produces a working default configuration for a Zynq platform.

Kernel options configuration:

$ make menuconfig

Check kernel options for RAMDISK

When leaving the kernel configuration utility, a .config file is produced.

Kernel configuration

Kernel options configuration

The kernel first requires information on

Produces a working default configuration for a

When leaving the kernel configuration

(21)

 Description

A Linux file system (Root Filesystem)

Standard Linux file hierarchy: /bin /dev /etc /home…

Utilities

Basic commands: ls cd more cp…

Generation of a RAMDISK

Busybox

Provided in some distributions

RAMDISK structure

(22)

$ make ARCH=arm uImage

xilinx.dtb LOADADDR=0x8000

 Compilation takes 5 to 10 minutes

 uIMage is to the kernel

 uIMage is to the kernel image produced

 Kernel image will be loaded at address 0x8000 in

system RAM at boot time

 Xilinx.dtb is the

device tree generated from

Kernel compilation

(23)

Xilinx Zynq

 Target platform: Xilinx Zynq

 Kernel configuration and compilation

Xilinx Zynq-7000 Linux

 Introduction Target platform: Xilinx Zynq-7000

 Platform configuration Kernel configuration and compilation

 Kernel startup and execution

(24)

Kernel execution

 SD Card setup

 BOOT partition (FAT32)

BOOT.bin, uImage, devicetree.dtb, uramdisk_image.gz

 Rootfs partition (ext2)

Put your files here

JP9 – JP11 setup to boot from SD

Put your files here

mount /dev/mmcblk0p2 /media

 Platform setup

 Switches

 Serial terminal

baud rate = 115200, data bits = stop bits = 1, flow control = none

JP11 setup to boot from SD JP6 shorted to allow SD boot

/mmcblk0p2 /media

bits = 8, control = none

Serial

cable

(25)

Kernel execution

ROM startup code

Architecture dependent initialization

Bootloader

Loads kernel to RAM and starts it

Kernel execution

Initializes hardware devices and kernel subsystems Initializes hardware devices and kernel subsystems

Mounts the root Filesystem Starts the init process

/sbin/init

starts other userspace services and applications

shell other application

Root Filesystem

(26)

Kernel execution

ROM startup code

Architecture dependent initialization

Bootloader

Loads kernel to RAM and starts it

Kernel execution

Initializes hardware devices and kernel subsystems Initializes hardware devices and kernel subsystems

Mounts the root Filesystem Starts the init process

/sbin/init

starts other userspace services and applications

shell other application

Root Filesystem

(27)

Kernel execution

ROM startup code

Architecture dependent initialization

Bootloader

Loads kernel to RAM and starts it

Kernel execution

Initializes hardware devices and kernel subsystems Initializes hardware devices and kernel subsystems

Mounts the root Filesystem Starts the init process

/sbin/init

starts other userspace services and applications

shell other application

Root Filesystem

(28)

BACKÜP SLIDES

(29)

Root Filesystem: RAMDISK

 What is a Linux initial RAM disk (

 In a standard Linux system:

Historically, the initial ramdisk was a temporary file system mounted and used before the final Root Filesystem was available.

The reason of this is that when a system is switched on, there is not even a driver able to read the hard drive where all the drivers are.

The initial ramdisk is associated to the kernel. Loading the initial

The initial ramdisk is associated to the kernel. Loading the initial ramdisk is included in the boot process of the kernel.

It is composed of directories, drivers et binaries that will allow

hardware setup, and especially to mount the final Root Filesystem.

It can be seen as a small (temporary) applications (like nash script interpreter,

logical volume manager) that are needed to fully boot the Linux kernel with the Root Filesystem.

Root Filesystem: RAMDISK

What is a Linux initial RAM disk (initrd) ?

In a standard Linux system:

Historically, the initial ramdisk was a temporary file system mounted the final Root Filesystem was available.

The reason of this is that when a system is switched on, there is not even a driver able to read the hard drive where all the drivers are.

The initial ramdisk is associated to the kernel. Loading the initial The initial ramdisk is associated to the kernel. Loading the initial ramdisk is included in the boot process of the kernel.

It is composed of directories, drivers et binaries that will allow

hardware setup, and especially to mount the final Root Filesystem.

It can be seen as a small (temporary) file system containing key

script interpreter, insmod module loader, lvm

logical volume manager) that are needed to fully boot the Linux kernel

with the Root Filesystem.

(30)

Root Filesystem: RAMDISK

 Why using an initial RAM disk for the Root Filesystem?

 In an embedded system

Embedded systems usually do not include hard disk drives.

A RAMDISK is a fraction of the RAM memory that can be used as a virtual disk.

Consequently, the Root Filesystem can be implemented using a RAMDISK.

 Benefits

Access

Easy to setup

 Drawbacks

Volatile memory.

less RAM memory available for users and applications.

 Interest for Linux systems

Provides a temporary solution for the root Filesystem, allowing to test

Root Filesystem: RAMDISK

Why using an initial RAM disk for the Root Filesystem?

In an embedded system

Embedded systems usually do not include hard disk drives.

A RAMDISK is a fraction of the RAM memory that can be used as a Consequently, the Root Filesystem can be implemented using a

less RAM memory available for users and applications.

Interest for Linux systems

Provides a temporary solution for the root Filesystem, allowing to test

(31)

Root Filesystem: Compact FLASH

 Why using a Compact FLASH for the Root Filesystem?

 Compact device and easy to setup.

 Benefits

Non volatile

Non volatile

Easy to setup

Suited to a Linux system at final stages of development

 Drawbacks

Relatively slow

Not easy to use for a system under current development (still easier than a RAMDISK).

Root Filesystem: Compact FLASH

Why using a Compact FLASH for the Root Filesystem?

Compact device and easy to setup.

Suited to a Linux system at final stages of development

Not easy to use for a system under current development (still easier than

(32)

Root Filesystem: Network filesystem

 NFS

 Filesystem is placed on a distant machine, usually the host, and accessed via the network.

The developper can directly cross

Root Filesystem (no need to copy the binaries to the file system each time an application is compiled).

 Benefits

Non volatile

Very usefull for systems in early or current development stages

 Drawbacks

Requires network

More difficult to setup (compared to a Compact FLASH)

Root Filesystem: Network filesystem

Filesystem is placed on a distant machine, usually the host, and accessed via the network.

The developper can directly cross-compile applications to the Root Filesystem (no need to copy the binaries to the file

system each time an application is compiled).

Very usefull for systems in early or current development stages

More difficult to setup (compared to a Compact FLASH)

Références

Documents relatifs

To generate optimized embedded code, the code generator is based on the principles presented in [5].The models and tools have been tested on NXT bricks, Arduino boards and

As a conclusion of this analysis we can see that the available IP processor cores platforms can not address all the SoC architecture models and that a study must be done in order

These key parameters are required to select a flexible and efficient SoC Platform (and the associated tools) in order to implement an efficient PACM (Processor – Accelerator –

Research on the product development process lacks of investigation on the aspects related to its potential integration in a web-based collaborative environment,

This work is a contribution to the image process- ing field because the modeling of the formulation al- lows to give prominence to the knowledge used in the development of

Based on this idea, the KEA-Mod platform will provide e-assessment capabilities for various graph-based modeling languages such as Unified Modeling Language (UML), Entity-

Three departments play a role in the project : the department in charge of strategy and products, which establishes the product plan, the department in charge of innovation

Liquid phase catalyst testing is also possible at ambient pressure using the Chemspeed Catimpreg workstation, equipped with 36 reactors, and at pressure up to 80 bar using the