A Tour of the ARM Architecture and Its Linux Support
Total Page:16
File Type:pdf, Size:1020Kb
Linux Conf Australia 2017 A tour of the ARM architecture and its Linux support Thomas Petazzoni Bootlin [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/1 I Since 2012: Linux kernel contributor, adding support for Marvell ARM processors I Core contributor to the Buildroot project, an embedded Linux build system I From Toulouse, France Thomas Petazzoni I Thomas Petazzoni I CTO and Embedded Linux engineer at Bootlin I Embedded Linux expertise I Development, consulting and training I Strong open-source focus I Linux kernel contributors, ARM SoC support, kernel maintainers embedded Linux and kernel engineering - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/1 I Core contributor to the Buildroot project, an embedded Linux build system I From Toulouse, France Thomas Petazzoni I Thomas Petazzoni I CTO and Embedded Linux engineer at Bootlin I Embedded Linux expertise I Development, consulting and training I Strong open-source focus I Linux kernel contributors, ARM SoC support, kernel maintainers I Since 2012: Linux kernel contributor, adding support for Marvell ARM processors - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/1 I From Toulouse, France Thomas Petazzoni I Thomas Petazzoni I CTO and Embedded Linux engineer at Bootlin I Embedded Linux expertise I Development, consulting and training I Strong open-source focus I Linux kernel contributors, ARM SoC support, kernel maintainers I Since 2012: Linux kernel contributor, adding support for Marvell ARM processors I Core contributor to the Buildroot project, an embedded Linux build system - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/1 Thomas Petazzoni I Thomas Petazzoni I CTO and Embedded Linux engineer at Bootlin I Embedded Linux expertise I Development, consulting and training I Strong open-source focus I Linux kernel contributors, ARM SoC support, kernel maintainers I Since 2012: Linux kernel contributor, adding support for Marvell ARM processors I Core contributor to the Buildroot project, an embedded Linux build system I From Toulouse, France - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/1 I Goal I ARM is significantly different from x86 I More and more Linux developers coming from x86 doing ARM development I Number of misunderstandings I Agenda I ARM: from the architecture to the board I Software level: bootloader and Linux kernel support Goal and agenda I ARM is everywhere: in your phone, your TV, your router, your set-top box, your IoT devices, etc. - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/1 I Agenda I ARM: from the architecture to the board I Software level: bootloader and Linux kernel support Goal and agenda I ARM is everywhere: in your phone, your TV, your router, your set-top box, your IoT devices, etc. I Goal I ARM is significantly different from x86 I More and more Linux developers coming from x86 doing ARM development I Number of misunderstandings - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/1 Goal and agenda I ARM is everywhere: in your phone, your TV, your router, your set-top box, your IoT devices, etc. I Goal I ARM is significantly different from x86 I More and more Linux developers coming from x86 doing ARM development I Number of misunderstandings I Agenda I ARM: from the architecture to the board I Software level: bootloader and Linux kernel support - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/1 ARM: architecture specification I ARM Holdings plc writes the specification of the ARM architecture I Instruction-set, including multimedia/DSP oriented instructions I MMU I Interrupt and exception handling I Caches I Virtualization I etc. I Over time, improvements of the architecture, with numerous versions: ARMv4, ARMv5, ARMv6, ARMv7, ARMv8 I Takes the form of voluminous documentation, named ARM ARM, i.e ARM Architecture Reference Manual - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 4/1 ARM cores: an actual implementation I ARM Holdings plc then creates IP cores that implement the specification I IP core = implementation in VHDL or Verilog of a block of hardware logic I Examples: I ARM926 = implementation of ARMv5 I ARM1176 = implementation of ARMv6 I Cortex-A15 = implementation of ARMv7-A I Cortex-A53 = implementation of ARMv8-A I Multiple possible implementations for the same architecture specification I Example: all of Cortex-A5,7,8,9,12,15 implement the same ARMv7-A architecture (with some additions in some cases) I Cortex-A5 is a low-power lower-performance implementation, Cortex-A15 is a very high-performance and more power hungry implementation. I Difference in internal implementation: depth of the pipeline, out-of-order execution, size of caches, etc. I This is NOT hardware: ARM does not sell silicon - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 5/1 ARM System-on-Chip I System-on-chip: integrated circuit that integrates all components of a computer system I CPU, but also peripherals: Ethernet, USB, UART, SPI, I2C, GPU, display, audio, etc. I Integrated in a single chip: easier to use, more cost effective I SoC vendors I Buy an ARM core from ARM I Integrate other IP blocks, either designed internally, or purchased from other vendors I Create and sell silicon I Large spectrum of SoCs available, addressing very different markets: automotive, mobile, industrial, low-power, set-top box, etc. - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 6/1 SoC example: Freescale i.MX6 block diagram - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 7/1 ARM hardware platform I Even though an SoC is a full system on a chip, it is generally not self-sufficient I RAM, NAND flash or eMMC, power circuitry I Display panel and touchscreen I WiFi and Bluetooth chip I Ethernet PHY I HDMI transceiver I CAN transceiver I Connectors I SoC connected to a wide variety of peripherals, through various busses I Laid out on a PCB, with components soldered on it. - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 8/1 ARM: from the architecture to the board - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 9/1 I C.H.I.P I SoC: Allwinner R8 I ARM core: Cortex-A8 (single) I ARM architecture: ARMv7-A I RaspberryPi 2 I ESPRESSOBin I SoC: Broadcom 2836 I SoC: Marvell Armada 3700 I ARM core: Cortex-A7 (quad) I ARM core: Cortex-A53 (dual) I ARM architecture: ARMv7-A I ARM architecture: ARMv8-A Examples of ARM boards I RaspberryPi 1 I SoC: Broadcom 2835 I ARM core: ARM1176JZF (single) I ARM architecture: ARMv6 - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 10/1 I C.H.I.P I SoC: Allwinner R8 I ARM core: Cortex-A8 (single) I ARM architecture: ARMv7-A I ESPRESSOBin I SoC: Marvell Armada 3700 I ARM core: Cortex-A53 (dual) I ARM architecture: ARMv8-A Examples of ARM boards I RaspberryPi 1 I SoC: Broadcom 2835 I ARM core: ARM1176JZF (single) I ARM architecture: ARMv6 I RaspberryPi 2 I SoC: Broadcom 2836 I ARM core: Cortex-A7 (quad) I ARM architecture: ARMv7-A - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 10/1 I ESPRESSOBin I SoC: Marvell Armada 3700 I ARM core: Cortex-A53 (dual) I ARM architecture: ARMv8-A Examples of ARM boards I RaspberryPi 1 I C.H.I.P I SoC: Broadcom 2835 I SoC: Allwinner R8 I ARM core: ARM1176JZF (single) I ARM core: Cortex-A8 (single) I ARM architecture: ARMv6 I ARM architecture: ARMv7-A I RaspberryPi 2 I SoC: Broadcom 2836 I ARM core: Cortex-A7 (quad) I ARM architecture: ARMv7-A - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 10/1 Examples of ARM boards I RaspberryPi 1 I C.H.I.P I SoC: Broadcom 2835 I SoC: Allwinner R8 I ARM core: ARM1176JZF (single) I ARM core: Cortex-A8 (single) I ARM architecture: ARMv6 I ARM architecture: ARMv7-A I RaspberryPi 2 I ESPRESSOBin I SoC: Broadcom 2836 I SoC: Marvell Armada 3700 I ARM core: Cortex-A7 (quad) I ARM core: Cortex-A53 (dual) I ARM architecture: ARMv7-A I ARM architecture: ARMv8-A - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 10/1 I Three “levels” of hardware, three “levels” of software support 1. The ARM core 2. The SoC 3. The board I All three levels are needed to support a given hardware platform. I Also supporting a platform with just the serial port and Ethernet is very different from fully supporting a platform (graphics, audio, power management, etc.). Software support for hardware layers I Asking “does Linux support ARM?” doesn’t make a lot of sense - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 11/1 I All three levels are needed to support a given hardware platform. I Also supporting a platform with just the serial port and Ethernet is very different from fully supporting a platform (graphics, audio, power management, etc.). Software support for hardware layers I Asking “does Linux support ARM?” doesn’t make a lot of sense I Three “levels” of hardware, three “levels” of software support 1. The ARM core 2. The SoC 3. The board - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 11/1 Software support for hardware layers I Asking “does Linux support ARM?” doesn’t make a lot of sense I Three “levels” of hardware, three “levels” of software support 1.