SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Kernel Recipes 2013
ARM support in the
Linux kernel
Thomas Petazzoni
Free Electrons
thomas.petazzoni@free-electrons.com
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 1/38
Thomas Petazzoni
CTO and Embedded Linux engineer at Free Electrons
Embedded Linux development: kernel and driver
development, system integration, boot time and power
consumption optimization, consulting, etc.
Embedded Linux training, Linux driver development training
and Android system development training, with materials
freely available under a Creative Commons license.
We’re hiring!
http://free-electrons.com
Contributing the kernel support for the new Armada 370
and Armada XP ARM SoCs from Marvell (widely used in
NAS devices).
Major contributor to Buildroot, an open-source, simple and
fast embedded Linux build system
Living in Toulouse, south west of France
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 2/38
Agenda
Background on the ARM architecture and Linux support
The problems
Changes in the ARM kernel support
Getting the support for a SoC in mainline, story of Armada
370/XP
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 3/38
From the ARM architecture to a board
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 4/38
From the ARM architecture to a board, examples
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 5/38
Schematic view of a board
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 6/38
No standardization
Beyond the ARM core itself, a lot of freedom is left to the
SoC vendor.
There is no standard for the devices, the management of
clocks, pinmuxing, IRQ controllers, timers, etc.
Note: some things like IRQ controllers and timers are now
standardized.
There is no mechanism to enumerate the devices available
inside the SoC. All devices have to be known by the kernel.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 7/38
“Old” ARM code organization in the Linux kernel
arch/arm/
arch/arm/{kernel,mm,lib,boot}/
The core ARM kernel. Contains the code related to the ARM
core itself (MMU, interrupts, caches, etc.). Relatively small
compared to the SoC-specific code.
arch/arm/mach-<foo>/
The SoC-specific code, and board-specific code, for a given
SoC family.
arch/arm/mach-<foo>/board-<bar>.c.
The board-specific code.
drivers/
The device drivers themselves.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 8/38
Issue #1: too much code, lack of review
Exploding number of ARM SoC, from different vendors
The historical maintainer, Russell King, got overflowed by
the amount of code to review.
Code started to flow directly from sub-architecture
maintainers directly to Linus Torvalds.
Focus of each sub-architecture teams on their own
problems, no vision of the other sub-architectures.
Consequences: lot of code duplication, missing common
infrastructures, maintenability problems, etc.
Linus Torvalds, March 2011: Gaah. Guys, this whole ARM
thing is a f*cking pain in the ass.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 9/38
Issue #2: the need for multiplatform kernel
On x86 PC, one can build a single kernel image (with many
modules) that boots and work on all PCs
Good for distributions: they can ship a single kernel image.
On ARM, it was impossible to build a single kernel that
would boot on systems using different SoCs.
Issue for distributions: they have to build and maintain a
kernel image almost for each ARM hardware platform they
want to support.
Need for ARM multiplatform support in the kernel.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 10/38
Change #1: arm-soc and maintainers
A new maintainer team for the
ARM sub-architectures: Arnd
Bergmann (Linaro) (currently
replaced by Kevin Hilman) and
Olof Johansson (Google)
All the ARM SoC-specific code
goes through them, in a tree called
arm-soc
They send the changes accumulated in arm-soc to Linus
Torvalds.
Those maintainers have a cross-SoC view: detection of
things that should be factorized, consistency accross
SoC-specific code.
Core ARM changes continue to go through Russell King.
Role of the Linaro consortium
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 11/38
Change #2: Before the Device Tree... (1)
Most devices inside an ARM SoC and on the board cannot be
dynamically enumerated: they have to be statically
described.
The old way of doing this description was by using C code,
registering platform_device structures for each hardware
device. Each board was identified by a unique machine ID
passed by the bootloader.
This code represented a significant portion of the code in
arch/arm/mach-<foo>.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 12/38
Change #2: Before the Device Tree... (2)
From arch/arm/mach-at91/at91sam9263_devices.c
static struct resource udc_resources[] = {
[0] = {
.start = AT91SAM9263_BASE_UDP,
.end = AT91SAM9263_BASE_UDP + SZ_16K - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = NR_IRQS_LEGACY + AT91SAM9263_ID_UDP,
.end = NR_IRQS_LEGACY + AT91SAM9263_ID_UDP,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device at91_udc_device = {
.name = "at91_udc",
.id = -1,
.dev = {
.platform_data = &udc_data,
},
.resource = udc_resources,
.num_resources = ARRAY_SIZE(udc_resources),
};
some_init_code() {
platform_device_register(&at91_udc_device);
}
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 13/38
Change #2: Device Tree
This has been replaced by a hardware description done in
structure separated from the kernel, called the Device Tree.
Also used on PowerPC, Microblaze, ARM64, Xtensa,
OpenRisc, etc.
Not invented specifically for Linux: was part of the
OpenFirmware standard used on PowerPC.
The Device Tree Source, in text format, gets compiled into a
Device Tree Blob, in binary format, thanks to the Device Tree
Compiler.
Sources are stored in arch/arm/boot/dts
At boot time, the kernel parses the Device Tree to instantiate
the available devices.
Can also be used by other platform software than Linux: the
U-Boot and Barebox bootloaders have started using it as well.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 14/38
Change #2: SoC Device Tree example
/include/ "skeleton.dtsi"
/ {
compatible = "brcm,bcm2835";
model = "BCM2835";
interrupt-parent = <&intc>;
chosen {
bootargs = "earlyprintk console=ttyAMA0";
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x7e000000 0x20000000 0x02000000>;
[...]
intc: interrupt-controller {
compatible = "brcm,bcm2835-armctrl-ic";
reg = <0x7e00b200 0x200>;
interrupt-controller;
#interrupt-cells = <2>;
};
uart@20201000 {
compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
reg = <0x7e201000 0x1000>;
interrupts = <2 25>;
clock-frequency = <3000000>;
status = "disabled";
};
};
};
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 15/38
Change #2: Board Device Tree example
/dts-v1/;
/memreserve/ 0x0c000000 0x04000000;
/include/ "bcm2835.dtsi"
/ {
compatible = "raspberrypi,model-b", "brcm,bcm2835";
model = "Raspberry Pi Model B";
memory {
reg = <0 0x10000000>;
};
soc {
uart@20201000 {
status = "okay";
};
};
};
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 16/38
Change #2: Device Tree inheritance
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 17/38
Change #2: Booting with a Device Tree
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 18/38
Change #2: The notion of DT binding
The idea of the Device Tree is that it should be a data
structure that represents the hardware.
It should not be specific to Linux.
It should not contain configuration, but only hardware
description
The Device Tree becomes part of the kernel ABI. The kernel
must remain capable of using old Device Trees.
Device Tree bindings are the description of a particular
entry of the Device Tree to represent a specific device (or set
of devices).
Due the ABI stability requirement, they must be very carefully
designed.
A specific mailing list, and a team of maintainers has been
assigned to review those bindings.
Documentation/devicetree/bindings/
Increase in complexity?
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 19/38
Change #3: Multiplatform kernel
Fits the need of distributions willing to build a single kernel
image that works on many ARM platforms.
The SoC choice now contains a Allow multiple platforms to
be selected option, and all the SoC families that are
compatible with this can be compiled together in the same
kernel.
There is still a split between ARMv4/ARMv5 on one side, and
ARMv6/ARMv7 on the other side.
A lot of changes have been done in the ARM kernel to make
this possible: avoid two different platforms from defining the
same symbol, from using the same header names, no more
#ifdef but runtime detection instead.
The support for all new SoCs must use the multiplatform
mechanism.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 20/38
Change #4: Pinctrl subsystem, introduction
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 21/38
Change #4: Pinctrl subsystem, old code
Each ARM sub-architecture had its own pin-muxing code
The API was specific to each sub-architecture
A lot of similar functionality implemented in different ways
The pin-muxing had to be done at the SoC level, and couldn’t
be requested by device drivers
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 22/38
Change #4: Pinctrl subsystem, new subsystem
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 23/38
Change #5: Clocks
In a System-on-Chip, all peripherals are driven by one or more
clocks.
Those clocks are organized in a tree, and often are software
configurable.
Since quite some time, the kernel had a simple API: clk_get,
clk_enable, clk_disable, clk_put that were used by
device drivers.
Each ARM sub-architecture had its own implementation of
this API.
Does not work for multiplatform kernels.
Does not allow code sharing, and common mechanisms.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 24/38
Change #5: Common clock framework
A proper common clock framework has been added in
kernel 3.4, released in May 2012
This framework:
Implements the clk_get, clk_put, clk_prepare,
clk_unprepare, clk_enable, clk_disable, clk_get_rate,
etc. API for usage by device drivers
Implements some basic clock drivers (fixed rate, gatable,
divider, fixed factor, etc.) and allows the implementation of
custom clock drivers using struct clk_hw and
struct clk_ops
Allows to declare the available clocks and their association to
devices in the Device Tree (preferred) or statically in the
source code (old method)
Provides a debugfs representation of the clock tree
Is implemented in drivers/clk
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 25/38
Change #5: Common clock framework architecture
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 26/38
Change #6: More things in drivers/
Another goal of the ARM cleanup is to have less code in
arch/arm and create proper drivers and related
infrastructures.
For example
IRQ controller drivers drivers/irqchip/
Timer drivers drivers/clocksource/
PCI host controller drivers drivers/pci/host/
Clock drivers drivers/clk/
Pinmux drivers drivers/pinctrl/
Memory drivers drivers/memory/
Bus drivers drivers/bus/
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 27/38
Adoption rate
Size in bytes of the source code, in the following directories:
drivers/clocksource, drivers/irqchip, drivers/pinctrl, drivers/clk,
arch/arm/boot/dts.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 28/38
Armada 370/XP, Linux 3.6
Total: 10 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 29/38
Armada 370/XP, Linux 3.7
Total: 35 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 30/38
Armada 370/XP, Linux 3.8
Total: 99 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 31/38
Armada 370/XP, Linux 3.9
Total: 58 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 32/38
Armada 370/XP, Linux 3.10
Total: 57 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 33/38
Armada 370/XP, Linux 3.11
Total: 66 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 34/38
Armada 370/XP, Linux 3.12-rc1
Total: 92 patches
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 35/38
Getting an ARM SoC in mainline
Throw away the vendor BSP code. Most likely it is
completely crappy. You have to start from scratch.
Start small, and send code piece by piece. Don’t wait to
have everything fully working.
Comply with the latest infrastructure changes: Device
Tree, clock framework, pinctrl subsystem. They are
mandatory.
Read and post to the LAKML, Linux ARM Kernel Mailing
List
Listen to reviews and comments, and repost updated
versions regularly.
Look at recently merged sub-architectures: highbank,
mvebu, sunxi, bcm2835, socfpga, etc.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 36/38
And now...
Over the last year, ARM has gone from a constant
headache every merge window to an outstanding
citizen in the Linux community
Linus Torvalds, August 2012
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 37/38
Questions?
Thomas Petazzoni
thomas.petazzoni@free-electrons.com
Thanks to Gregory Clement, Ezequiel Garcia (Free Electrons,
working with me on Marvell mainlining), Lior Amsalem and Maen
Suleiman (Marvell)
Slides under CC-BY-SA 3.0
http://free-electrons.com/pub/conferences/2013/kernel-recipes/arm-
support-kernel/
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 38/38

Weitere ähnliche Inhalte

Was ist angesagt?

Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardAnne Nicolas
 
U-Boot community analysis
U-Boot community analysisU-Boot community analysis
U-Boot community analysisxulioc
 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelAnne Nicolas
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchSherif Mousa
 
Long-term Maintenance Model of Embedded Industrial Linux Distribution
Long-term Maintenance Model of Embedded Industrial Linux DistributionLong-term Maintenance Model of Embedded Industrial Linux Distribution
Long-term Maintenance Model of Embedded Industrial Linux DistributionSZ Lin
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixSherif Mousa
 
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorKernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorAnne Nicolas
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequenceHoucheng Lin
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New HardwareRuggedBoardGroup
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentGlobalLogic Ukraine
 
Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
 
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practice
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practiceEmbedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practice
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practiceEmbeddedFest
 
淺談 Live patching technology
淺談 Live patching technology淺談 Live patching technology
淺談 Live patching technologySZ Lin
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
Building Embedded Linux
Building Embedded LinuxBuilding Embedded Linux
Building Embedded LinuxSherif Mousa
 
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theory
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theoryEmbedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theory
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theoryEmbeddedFest
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionSherif Mousa
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)Chris Simmonds
 

Was ist angesagt? (20)

Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
 
U-Boot community analysis
U-Boot community analysisU-Boot community analysis
U-Boot community analysis
 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernel
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
 
Long-term Maintenance Model of Embedded Industrial Linux Distribution
Long-term Maintenance Model of Embedded Industrial Linux DistributionLong-term Maintenance Model of Embedded Industrial Linux Distribution
Long-term Maintenance Model of Embedded Industrial Linux Distribution
 
005 skyeye
005 skyeye005 skyeye
005 skyeye
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
 
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generatorKernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
 
QEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded DevelopmentQEMU and Raspberry Pi. Instant Embedded Development
QEMU and Raspberry Pi. Instant Embedded Development
 
Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...Using open source software to build an industrial grade embedded linux platfo...
Using open source software to build an industrial grade embedded linux platfo...
 
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practice
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practiceEmbedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practice
Embedded Fest 2019. Wei Fu. Linux on RISC-V--Fedora and Firmware in practice
 
淺談 Live patching technology
淺談 Live patching technology淺談 Live patching technology
淺談 Live patching technology
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Building Embedded Linux
Building Embedded LinuxBuilding Embedded Linux
Building Embedded Linux
 
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theory
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theoryEmbedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theory
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theory
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
 

Ähnlich wie Kernel Recipes 2013 - ARM support in the Linux kernel

Petazzoni device-tree-dummies
Petazzoni device-tree-dummiesPetazzoni device-tree-dummies
Petazzoni device-tree-dummiesAlex Cherny
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Thomas Petazzoni
 
Introduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwareIntroduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwaredefinecareer
 
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner exampleKernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner exampleAnne Nicolas
 
Embedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerEmbedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerSatpal Parmar
 
Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Ionela
 
18CS44-MODULE1-PPT.pptx
18CS44-MODULE1-PPT.pptx18CS44-MODULE1-PPT.pptx
18CS44-MODULE1-PPT.pptxKokilaK25
 
SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture Abdullaziz Tagawy
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformSZ Lin
 
The sysfs Filesystem
The sysfs FilesystemThe sysfs Filesystem
The sysfs FilesystemJeff Yana
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsNational Cheng Kung University
 

Ähnlich wie Kernel Recipes 2013 - ARM support in the Linux kernel (20)

Petazzoni device-tree-dummies
Petazzoni device-tree-dummiesPetazzoni device-tree-dummies
Petazzoni device-tree-dummies
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
 
ARM Processor Tutorial
ARM Processor Tutorial ARM Processor Tutorial
ARM Processor Tutorial
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
Linux internals v4
Linux internals v4Linux internals v4
Linux internals v4
 
Introduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwareIntroduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmware
 
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner exampleKernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
 
Portin g
Portin gPortin g
Portin g
 
Studienarb linux kernel-dev
Studienarb linux kernel-devStudienarb linux kernel-dev
Studienarb linux kernel-dev
 
Embedding Linux On The Encore Simputer
Embedding Linux On The Encore SimputerEmbedding Linux On The Encore Simputer
Embedding Linux On The Encore Simputer
 
Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]Embedded Os [Linux & Co.]
Embedded Os [Linux & Co.]
 
Building
BuildingBuilding
Building
 
18CS44-MODULE1-PPT.pptx
18CS44-MODULE1-PPT.pptx18CS44-MODULE1-PPT.pptx
18CS44-MODULE1-PPT.pptx
 
SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture
 
Ceh v5 module 18 linux hacking
Ceh v5 module 18 linux hackingCeh v5 module 18 linux hacking
Ceh v5 module 18 linux hacking
 
Device drivers tsp
Device drivers tspDevice drivers tsp
Device drivers tsp
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 Platform
 
L4 Microkernel :: Design Overview
L4 Microkernel :: Design OverviewL4 Microkernel :: Design Overview
L4 Microkernel :: Design Overview
 
The sysfs Filesystem
The sysfs FilesystemThe sysfs Filesystem
The sysfs Filesystem
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM Boards
 

Mehr von Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 

Mehr von Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Kürzlich hochgeladen

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Kürzlich hochgeladen (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Kernel Recipes 2013 - ARM support in the Linux kernel

  • 1. Kernel Recipes 2013 ARM support in the Linux kernel Thomas Petazzoni Free Electrons thomas.petazzoni@free-electrons.com Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 1/38
  • 2. Thomas Petazzoni CTO and Embedded Linux engineer at Free Electrons Embedded Linux development: kernel and driver development, system integration, boot time and power consumption optimization, consulting, etc. Embedded Linux training, Linux driver development training and Android system development training, with materials freely available under a Creative Commons license. We’re hiring! http://free-electrons.com Contributing the kernel support for the new Armada 370 and Armada XP ARM SoCs from Marvell (widely used in NAS devices). Major contributor to Buildroot, an open-source, simple and fast embedded Linux build system Living in Toulouse, south west of France Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 2/38
  • 3. Agenda Background on the ARM architecture and Linux support The problems Changes in the ARM kernel support Getting the support for a SoC in mainline, story of Armada 370/XP Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 3/38
  • 4. From the ARM architecture to a board Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 4/38
  • 5. From the ARM architecture to a board, examples Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 5/38
  • 6. Schematic view of a board Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 6/38
  • 7. No standardization Beyond the ARM core itself, a lot of freedom is left to the SoC vendor. There is no standard for the devices, the management of clocks, pinmuxing, IRQ controllers, timers, etc. Note: some things like IRQ controllers and timers are now standardized. There is no mechanism to enumerate the devices available inside the SoC. All devices have to be known by the kernel. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 7/38
  • 8. “Old” ARM code organization in the Linux kernel arch/arm/ arch/arm/{kernel,mm,lib,boot}/ The core ARM kernel. Contains the code related to the ARM core itself (MMU, interrupts, caches, etc.). Relatively small compared to the SoC-specific code. arch/arm/mach-<foo>/ The SoC-specific code, and board-specific code, for a given SoC family. arch/arm/mach-<foo>/board-<bar>.c. The board-specific code. drivers/ The device drivers themselves. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 8/38
  • 9. Issue #1: too much code, lack of review Exploding number of ARM SoC, from different vendors The historical maintainer, Russell King, got overflowed by the amount of code to review. Code started to flow directly from sub-architecture maintainers directly to Linus Torvalds. Focus of each sub-architecture teams on their own problems, no vision of the other sub-architectures. Consequences: lot of code duplication, missing common infrastructures, maintenability problems, etc. Linus Torvalds, March 2011: Gaah. Guys, this whole ARM thing is a f*cking pain in the ass. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 9/38
  • 10. Issue #2: the need for multiplatform kernel On x86 PC, one can build a single kernel image (with many modules) that boots and work on all PCs Good for distributions: they can ship a single kernel image. On ARM, it was impossible to build a single kernel that would boot on systems using different SoCs. Issue for distributions: they have to build and maintain a kernel image almost for each ARM hardware platform they want to support. Need for ARM multiplatform support in the kernel. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 10/38
  • 11. Change #1: arm-soc and maintainers A new maintainer team for the ARM sub-architectures: Arnd Bergmann (Linaro) (currently replaced by Kevin Hilman) and Olof Johansson (Google) All the ARM SoC-specific code goes through them, in a tree called arm-soc They send the changes accumulated in arm-soc to Linus Torvalds. Those maintainers have a cross-SoC view: detection of things that should be factorized, consistency accross SoC-specific code. Core ARM changes continue to go through Russell King. Role of the Linaro consortium Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 11/38
  • 12. Change #2: Before the Device Tree... (1) Most devices inside an ARM SoC and on the board cannot be dynamically enumerated: they have to be statically described. The old way of doing this description was by using C code, registering platform_device structures for each hardware device. Each board was identified by a unique machine ID passed by the bootloader. This code represented a significant portion of the code in arch/arm/mach-<foo>. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 12/38
  • 13. Change #2: Before the Device Tree... (2) From arch/arm/mach-at91/at91sam9263_devices.c static struct resource udc_resources[] = { [0] = { .start = AT91SAM9263_BASE_UDP, .end = AT91SAM9263_BASE_UDP + SZ_16K - 1, .flags = IORESOURCE_MEM, }, [1] = { .start = NR_IRQS_LEGACY + AT91SAM9263_ID_UDP, .end = NR_IRQS_LEGACY + AT91SAM9263_ID_UDP, .flags = IORESOURCE_IRQ, }, }; static struct platform_device at91_udc_device = { .name = "at91_udc", .id = -1, .dev = { .platform_data = &udc_data, }, .resource = udc_resources, .num_resources = ARRAY_SIZE(udc_resources), }; some_init_code() { platform_device_register(&at91_udc_device); } Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 13/38
  • 14. Change #2: Device Tree This has been replaced by a hardware description done in structure separated from the kernel, called the Device Tree. Also used on PowerPC, Microblaze, ARM64, Xtensa, OpenRisc, etc. Not invented specifically for Linux: was part of the OpenFirmware standard used on PowerPC. The Device Tree Source, in text format, gets compiled into a Device Tree Blob, in binary format, thanks to the Device Tree Compiler. Sources are stored in arch/arm/boot/dts At boot time, the kernel parses the Device Tree to instantiate the available devices. Can also be used by other platform software than Linux: the U-Boot and Barebox bootloaders have started using it as well. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 14/38
  • 15. Change #2: SoC Device Tree example /include/ "skeleton.dtsi" / { compatible = "brcm,bcm2835"; model = "BCM2835"; interrupt-parent = <&intc>; chosen { bootargs = "earlyprintk console=ttyAMA0"; }; soc { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x7e000000 0x20000000 0x02000000>; [...] intc: interrupt-controller { compatible = "brcm,bcm2835-armctrl-ic"; reg = <0x7e00b200 0x200>; interrupt-controller; #interrupt-cells = <2>; }; uart@20201000 { compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; reg = <0x7e201000 0x1000>; interrupts = <2 25>; clock-frequency = <3000000>; status = "disabled"; }; }; }; Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 15/38
  • 16. Change #2: Board Device Tree example /dts-v1/; /memreserve/ 0x0c000000 0x04000000; /include/ "bcm2835.dtsi" / { compatible = "raspberrypi,model-b", "brcm,bcm2835"; model = "Raspberry Pi Model B"; memory { reg = <0 0x10000000>; }; soc { uart@20201000 { status = "okay"; }; }; }; Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 16/38
  • 17. Change #2: Device Tree inheritance Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 17/38
  • 18. Change #2: Booting with a Device Tree Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 18/38
  • 19. Change #2: The notion of DT binding The idea of the Device Tree is that it should be a data structure that represents the hardware. It should not be specific to Linux. It should not contain configuration, but only hardware description The Device Tree becomes part of the kernel ABI. The kernel must remain capable of using old Device Trees. Device Tree bindings are the description of a particular entry of the Device Tree to represent a specific device (or set of devices). Due the ABI stability requirement, they must be very carefully designed. A specific mailing list, and a team of maintainers has been assigned to review those bindings. Documentation/devicetree/bindings/ Increase in complexity? Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 19/38
  • 20. Change #3: Multiplatform kernel Fits the need of distributions willing to build a single kernel image that works on many ARM platforms. The SoC choice now contains a Allow multiple platforms to be selected option, and all the SoC families that are compatible with this can be compiled together in the same kernel. There is still a split between ARMv4/ARMv5 on one side, and ARMv6/ARMv7 on the other side. A lot of changes have been done in the ARM kernel to make this possible: avoid two different platforms from defining the same symbol, from using the same header names, no more #ifdef but runtime detection instead. The support for all new SoCs must use the multiplatform mechanism. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 20/38
  • 21. Change #4: Pinctrl subsystem, introduction Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 21/38
  • 22. Change #4: Pinctrl subsystem, old code Each ARM sub-architecture had its own pin-muxing code The API was specific to each sub-architecture A lot of similar functionality implemented in different ways The pin-muxing had to be done at the SoC level, and couldn’t be requested by device drivers Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 22/38
  • 23. Change #4: Pinctrl subsystem, new subsystem Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 23/38
  • 24. Change #5: Clocks In a System-on-Chip, all peripherals are driven by one or more clocks. Those clocks are organized in a tree, and often are software configurable. Since quite some time, the kernel had a simple API: clk_get, clk_enable, clk_disable, clk_put that were used by device drivers. Each ARM sub-architecture had its own implementation of this API. Does not work for multiplatform kernels. Does not allow code sharing, and common mechanisms. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 24/38
  • 25. Change #5: Common clock framework A proper common clock framework has been added in kernel 3.4, released in May 2012 This framework: Implements the clk_get, clk_put, clk_prepare, clk_unprepare, clk_enable, clk_disable, clk_get_rate, etc. API for usage by device drivers Implements some basic clock drivers (fixed rate, gatable, divider, fixed factor, etc.) and allows the implementation of custom clock drivers using struct clk_hw and struct clk_ops Allows to declare the available clocks and their association to devices in the Device Tree (preferred) or statically in the source code (old method) Provides a debugfs representation of the clock tree Is implemented in drivers/clk Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 25/38
  • 26. Change #5: Common clock framework architecture Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 26/38
  • 27. Change #6: More things in drivers/ Another goal of the ARM cleanup is to have less code in arch/arm and create proper drivers and related infrastructures. For example IRQ controller drivers drivers/irqchip/ Timer drivers drivers/clocksource/ PCI host controller drivers drivers/pci/host/ Clock drivers drivers/clk/ Pinmux drivers drivers/pinctrl/ Memory drivers drivers/memory/ Bus drivers drivers/bus/ Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 27/38
  • 28. Adoption rate Size in bytes of the source code, in the following directories: drivers/clocksource, drivers/irqchip, drivers/pinctrl, drivers/clk, arch/arm/boot/dts. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 28/38
  • 29. Armada 370/XP, Linux 3.6 Total: 10 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 29/38
  • 30. Armada 370/XP, Linux 3.7 Total: 35 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 30/38
  • 31. Armada 370/XP, Linux 3.8 Total: 99 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 31/38
  • 32. Armada 370/XP, Linux 3.9 Total: 58 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 32/38
  • 33. Armada 370/XP, Linux 3.10 Total: 57 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 33/38
  • 34. Armada 370/XP, Linux 3.11 Total: 66 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 34/38
  • 35. Armada 370/XP, Linux 3.12-rc1 Total: 92 patches Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 35/38
  • 36. Getting an ARM SoC in mainline Throw away the vendor BSP code. Most likely it is completely crappy. You have to start from scratch. Start small, and send code piece by piece. Don’t wait to have everything fully working. Comply with the latest infrastructure changes: Device Tree, clock framework, pinctrl subsystem. They are mandatory. Read and post to the LAKML, Linux ARM Kernel Mailing List Listen to reviews and comments, and repost updated versions regularly. Look at recently merged sub-architectures: highbank, mvebu, sunxi, bcm2835, socfpga, etc. Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 36/38
  • 37. And now... Over the last year, ARM has gone from a constant headache every merge window to an outstanding citizen in the Linux community Linus Torvalds, August 2012 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 37/38
  • 38. Questions? Thomas Petazzoni thomas.petazzoni@free-electrons.com Thanks to Gregory Clement, Ezequiel Garcia (Free Electrons, working with me on Marvell mainlining), Lior Amsalem and Maen Suleiman (Marvell) Slides under CC-BY-SA 3.0 http://free-electrons.com/pub/conferences/2013/kernel-recipes/arm- support-kernel/ Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http://free-electrons.com 38/38