SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Linaro IoT and
Embedded Group (LITE)
Device Tree and CMSIS Discussion
Andy Gross
Introduction to Device Tree
● Device tree is a way of describing hardware configurations in a way that is extensible and easy to
utilize in system configuration and device driver initialization.
● Adding device nodes is fairly straightforward and extensible enough to handle any type of device.
● New boards utilizing already supported SoCs can leverage definitions and add or change nodes to
correctly describe that board’s implementation. This approach promotes reuse of existing
configuration information.
● Classical device tree use involves compiling a textual DTS file into a flattened device tree blob (dtb).
Bootloaders and later operating systems can access the blob and build up device lists or pull out
required information.
● A full description of device tree can be found in the device tree specification.
Configuration in Zephyr
● Configuration is spread out between two different areas in the Zephyr directory structure. One place
resides in the arch/arm/soc/ directory, and another is in the boards/ directory.
● Each board has a defconfig that defines a set of options. Additional options are included from Kconfig
files spread out in the two configuration directories.
● Kconfig options are also used to control inclusion of multiple instances of devices/peripherals. A good
example of this are the GPIO ports on a number of boards. UART ports is also another good example.
● Configuration is mainly hard coded using the Kconfig options.
● The user does choose the architecture for building (ARM in our case), but this is also true of the other
arches.
● Adding new boards from the same SoC family requires copying a lot of previous work.
● Device drivers use the Kconfig options to build up their device data. #ifdef statements in the drivers
decide which devices are actually created and initialized.
Configuration Sources and other Distributions
● CMSIS is a vendor agnostic hardware abstraction layer for the ARM Cortex-M processors with the
intent of standardization of interfaces to peripherals, RTOSs, and middleware.
● CMSIS provides some configuration information through different components. A few of the more
relevant ones are:
○ CMSIS-Core provides API and definitions for the Cortex M and associated peripherals.
○ CMSIS-Driver provides peripheral driver interfaces. Essentially, it is a HAL.
○ CMSIS-SVD describes all the components of the system using XML.
○ CMSIS-Pack uses a XML based package description to pull together
● ARM’s Keil uses a good portion of the CMSIS components and ties it into an IDE.
● MBED uses json for their configuration. Can someone speak to this?
What can device tree do for Zephyr?
● Adding new boards based on already supported platforms is much easier due to reuse of a lot of the
configuration information.
● Device tree is architecturally neutral. One can easily describe hardware components regardless of the
architecture of the processor.
● Device tree can be used to generate build options, and also configuration structures that will be used
by device drivers and system initialization code.
● Using device tree for configuration would result in a much smaller set of Kconfig options, as most of
the options can be derived from the device tree information.
● As device tree is very flexible, it can describe all of the attributes/properties of the devices out there
currently, and also handle future changes.
● The same device tree information can also be used by upper layers of software (libs, apps,
frameworks, etc). This would reduce variation in these areas due to differences between boards.
What parts of device tree will we need?
● With Zephyr, the concern is configuration of the SoC and associated peripherals. We are not looking
at using the flattened device tree blob, the APIs to access information from that blob, or associating
nodes with devices in the system.
● The device tree files will contain device information that will in turn be used to generate build options,
structures that are used during device initialization, and perhaps even during initial system bringup.
● Runtime device tree access is not in the scope of the proposed changes. The device tree will only be
used to source information during building and board initialization.
● Will versioning be an issue?
Building a device tree specification for Zephyr
● CPU hierarchy
● Devices and resources
○ Register address space
○ Interrupts
○ GPIOs
○ Pinmux information
○ Clock gating/control
○ Clock frequencies and multipliers/divisors
○ String names for devices
○ Device specific information (PWM, RTC, WDT, etc).
● Static pinmux settings?
Example DTS for NXP FRDMK64F
/dts-v1/;
/ {
compatible = "nxp,k64f", "nxp,mk64f12";
#address-cells = <1>;
#size-cells = <1>;
cpus {
cpu@0 {
compatible = "arm,cortex-m4f";
};
};
memory {
compatible = "mmio-sram";
reg = <0x20000000 0x30000>;
};
interrupt-controller@e000e100 {
compatible = "arm,cortex-m4-nvic";
reg = <0xe000e100 0x3ef>;
num-irq-prio-bits = <4>;
num-irqs = <86>;
};
timer@e00e010 {
compatible = "arm,cortex-m4-systick";
reg = <0xe000e010 0x10>;
clk-source = <0>; /* AHB or AHB/8 */
};
mpu@4000d000 {
compatible = "nxp,k64f-mpu";
reg = <0x4000d000 0x824>;
/* Add regions here that describes address, range, valid, and
permissions */
};
clock-controller@40064000 {
compatible = "nxp,k64f-mcg";
reg = <0x40064000 0xd>;
system-clock-frequency = <120000000>;
};
clock-controller@40065000 {
compatible = "nxp,k64f-osc";
reg = <0x40065000 0x4>;
enable-external-reference;
};
Example DTS for NXP FRDMK64F - Continued
rtc@4003d000 {
compatible = "nxp,k64f-rtc";
reg = <0x4003d000 0x808>;
clock-frequency = <32768>; /* fixed 32kHz clk */
};
sim@40047000 {
compatible = "nxp,k64f-sim";
reg = <0x40047000 0x1060>;
clk-divider-core = <1>;
clk-divider-bus = <2>;
clk-divider-flexbus = <3>;
clk-divider-flash = <5>;
};
flash-controller@4001f000 {
compatible = "nxp,k64f-flash-controller";
dev-name = "flash_woah";
reg = <0x4001f000 0x27c>;
interrupts = <18 0 3>;
};
flash@0 {
reg = <0 0x100000>;
};
uart@4006a000 {
compatible = "nxp,k64f-uart";
reg = <0x4006a000 0x1000>;
interrupts = <31 0 0>; /* irq 31 - no flags - prio 0 */
baud-rate = <115200>;
pinmux = <1 16 3>,
<1 17 3>; /* RX/TX - Port B - pins 16/17 - alt func 3 */
dev-name = "UART_0";
};
uart@4006b000 {
compatible = "nxp,k64f-uart";
reg = <0x4006b000 0x1000>;
interrupts = <33 0 0>;
baud-rate = <115200>;
dev-name = "UART_1";
};
pinmux@40049000 {
compatible = "nxp,k64f-pinmux";
reg = <0x40049000 0x40ca>;
};
Example DTS for NXP FRDMK64F - Continued
gpioa: gpio@400ff000 {
compatible = "nxp,k64f-gpio";
reg = <0x400ff000 0x40>;
interrupts = <59 0 3>;
dev-name = "GPIO_0";
};
gpiob: gpio@400ff040 {
compatible = "nxp,k64f-gpio";
reg = <0x400ff040 0x40>;
interrupts = <60 0 3>;
dev-name = "GPIO_1";
};
gpioc: gpio@400ff080 {
compatible = "nxp,k64f-gpio";
reg = <0x400ff080 0x40>;
interrupts = <61 0 3>;
dev-name = "GPIO_2";
};
gpiod: gpio@400ff0c0 {
compatible = "nxp,k64f-gpio";
reg = <0x400ff0c0 0x40>;
interrupts = <62 0 3>;
dev-name = "GPIO_3";
};
gpioe: gpio@400ff100 {
compatible = "nxp,k64f-gpio";
reg = <0x400ff100 0x40>;
interrupts = <63 0 3>;
dev-name = "GPIO_4";
};
spi@4002c000 {
compatible = "nxp,k64f-spi";
reg = <0x4002c000 0x88>;
interrupts = <26 0 3>;
clocks = <0x4004803C 12>; /* clk gate */
dev-name = "SPI_0";
cs = <&gpiob 10>, <&gpiob 9>; /* cs0 = PTB10, cs1 = PTB9 */
pinmux = <1 10 2>, <1 9 2>; /* PTB9/10 set to alt func 2 */
};
Example DTS for NXP FRDMK64F - Continued
spi@4002d000 {
compatible = "nxp,k64f-spi";
reg = <0x4002d000 0x88>;
interrupts = <27 0 3>;
clocks = <0x4004803C 13>; /* clk gate */
dev-name = "SPI_1";
};
watchdog@40052000 {
compatible = "nxp,watchdog-k64";
reg = <0x40052000 16>;
dev-name = "WDT_0";
clock-source = <0>; /* LPO 1kHz or alternate source */
reload-counter = <40000>;
start-on-boot;
prescaler = <2>;
};
pwm@40038000{
compatible = "nxp,pwm-k64";
reg = <0x40038000 0x98>;
dev-name = "PWM_0";
prescaler = <2>;
period = <1000>;
clock-source = <0>;
/* channel information needed - fixme */
};
pwm@40039000{
compatible = "nxp,pwm-k64";
reg = <0x40039000 0x98>;
dev-name = "PWM_1";
prescaler = <2>;
period = <1000>;
clock-source = <0>;
/* channel information needed - fixme */
};
};
Tooling required for Zephyr Device Tree Usage
● Device tree files can be written using information contained in other files. These files could include the
CMSIS files, SoC vendor generated files, and other sources for configuration information. This
information needs to be separated out so that it can be included in the device tree file.
● Using the C preprocessor and running the device tree compiler in a DTS to DTS passthrough, the end
result is a file that contains all of the required information in a format that is usable to create data
structures that would feed device drivers and board initialization functions.
● Using a tool like the dt_to_config from the Linux kernel, the device tree file can be parsed and a set of
defconfig options will be generated. This gives the advantage of capturing all the options required for
a board, and it also reduces duplicate sets of options for device multiples. One simple solution for the
matching would involve using a whitelist file for each SoC that gives a compatible to config option
mapping.
Collect
include
information
Preprocess
and replace
Final DTS
containing raw
data
Build data
structures
Proposed changes to Zephyr Configuration
● With configuration information primarily coming from device tree, the board and arch/arm directories
can get squashed down to one. A lot of redundant information could be removed.
● The data structures derived from the device tree information will feed into the device creation API calls.
This would remain the same. The only difference being how the information was sourced.
● All of the device tree manipulations and code generation would occur as part of the building of a
target.
● Could system memory be recouped using __init section for the device information?
Work for the near term
● Define DTS files for a few platforms, not just the NXP FRDM.
● Get the tooling in place for creating a set of data structures that are consumed by the board init
functions. The followup to this is to extend that to also work for the device drivers.
● Generate the config from the dts files and work this into the Makefiles
● Cleanup the configuration directories for the boards as the required existing config and board files are
retired. This will most likely involve complete removal of the board/ directories.
Questions?

Más contenido relacionado

La actualidad más candente

LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLinaro
 
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEE
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEEBKK16-110 A Gentle Introduction to Trusted Execution and OP-TEE
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEELinaro
 
TEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source securityTEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source securityLinaro
 
LAS16-203: Platform security architecture for embedded devices
LAS16-203: Platform security architecture for embedded devicesLAS16-203: Platform security architecture for embedded devices
LAS16-203: Platform security architecture for embedded devicesLinaro
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLinaro
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201Linaro
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control InterfaceLinaro
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
LAS16-200: Firmware summit - Tianocore Progress and Status
LAS16-200:  Firmware summit - Tianocore Progress and StatusLAS16-200:  Firmware summit - Tianocore Progress and Status
LAS16-200: Firmware summit - Tianocore Progress and StatusLinaro
 
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLinaro
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLinaro
 
LAS16-109: LAS16-109: The status quo and the future of 96Boards
LAS16-109: LAS16-109: The status quo and the future of 96BoardsLAS16-109: LAS16-109: The status quo and the future of 96Boards
LAS16-109: LAS16-109: The status quo and the future of 96BoardsLinaro
 
BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformLinaro
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
 
LCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure frameworkLCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure frameworkLinaro
 
RISC-V NOEL-V - A new high performance RISC-V Processor Family
RISC-V NOEL-V - A new high performance RISC-V Processor FamilyRISC-V NOEL-V - A new high performance RISC-V Processor Family
RISC-V NOEL-V - A new high performance RISC-V Processor FamilyRISC-V International
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingLinaro
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 Linaro
 

La actualidad más candente (20)

LAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel AwarenessLAS16-403: GDB Linux Kernel Awareness
LAS16-403: GDB Linux Kernel Awareness
 
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEE
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEEBKK16-110 A Gentle Introduction to Trusted Execution and OP-TEE
BKK16-110 A Gentle Introduction to Trusted Execution and OP-TEE
 
TEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source securityTEE - kernel support is now upstream. What this means for open source security
TEE - kernel support is now upstream. What this means for open source security
 
LAS16-203: Platform security architecture for embedded devices
LAS16-203: Platform security architecture for embedded devicesLAS16-203: Platform security architecture for embedded devices
LAS16-203: Platform security architecture for embedded devices
 
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
 
LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201LAS16-TR03: Upstreaming 201
LAS16-TR03: Upstreaming 201
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control Interface
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
LAS16-200: Firmware summit - Tianocore Progress and Status
LAS16-200:  Firmware summit - Tianocore Progress and StatusLAS16-200:  Firmware summit - Tianocore Progress and Status
LAS16-200: Firmware summit - Tianocore Progress and Status
 
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
 
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSDLAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
LAS16-210: Hardware Assisted Tracing on ARM with CoreSight and OpenCSD
 
LAS16-109: LAS16-109: The status quo and the future of 96Boards
LAS16-109: LAS16-109: The status quo and the future of 96BoardsLAS16-109: LAS16-109: The status quo and the future of 96Boards
LAS16-109: LAS16-109: The status quo and the future of 96Boards
 
BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV Platform
 
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesBUD17-104: Scripting Languages in IoT: Challenges and Approaches
BUD17-104: Scripting Languages in IoT: Challenges and Approaches
 
LCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure frameworkLCA14: LCA14-418: Testing a secure framework
LCA14: LCA14-418: Testing a secure framework
 
RISC-V NOEL-V - A new high performance RISC-V Processor Family
RISC-V NOEL-V - A new high performance RISC-V Processor FamilyRISC-V NOEL-V - A new high performance RISC-V Processor Family
RISC-V NOEL-V - A new high performance RISC-V Processor Family
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance Testing
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
 

Similar a LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration

BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!Linaro
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureNeil Armstrong
 
Freertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreFreertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreeSAT Journals
 
Sys cat i181e-en-07+sysmac studio
Sys cat i181e-en-07+sysmac studioSys cat i181e-en-07+sysmac studio
Sys cat i181e-en-07+sysmac studioMaulana Kharis
 
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergence
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI ConvergenceDAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergence
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergenceinside-BigData.com
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA UnconferenceKohei KaiGai
 
Avionics Paperdoc
Avionics PaperdocAvionics Paperdoc
Avionics PaperdocFalascoj
 
BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveNetronome
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesJim St. Leger
 
An area and power efficient on chip communication architectures for image enc...
An area and power efficient on chip communication architectures for image enc...An area and power efficient on chip communication architectures for image enc...
An area and power efficient on chip communication architectures for image enc...eSAT Publishing House
 
8086 MICROPROCESSOR
8086 MICROPROCESSOR8086 MICROPROCESSOR
8086 MICROPROCESSORAlxus Shuvo
 
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022Stefano Stabellini
 
Developing a Windows CE OAL.ppt
Developing a Windows CE OAL.pptDeveloping a Windows CE OAL.ppt
Developing a Windows CE OAL.pptKundanSingh887495
 
Vortex86 Sx Linux How To
Vortex86 Sx Linux How ToVortex86 Sx Linux How To
Vortex86 Sx Linux How ToRogelio Canedo
 
UNIT 1 SONCA.pptx
UNIT 1 SONCA.pptxUNIT 1 SONCA.pptx
UNIT 1 SONCA.pptxmohan134666
 

Similar a LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration (20)

BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
Freertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreFreertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f core
 
ate_full_paper
ate_full_paperate_full_paper
ate_full_paper
 
Sys cat i181e-en-07+sysmac studio
Sys cat i181e-en-07+sysmac studioSys cat i181e-en-07+sysmac studio
Sys cat i181e-en-07+sysmac studio
 
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergence
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI ConvergenceDAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergence
DAOS - Scale-Out Software-Defined Storage for HPC/Big Data/AI Convergence
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference
 
Avionics Paperdoc
Avionics PaperdocAvionics Paperdoc
Avionics Paperdoc
 
BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep Dive
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith Wiles
 
An area and power efficient on chip communication architectures for image enc...
An area and power efficient on chip communication architectures for image enc...An area and power efficient on chip communication architectures for image enc...
An area and power efficient on chip communication architectures for image enc...
 
x86_1.ppt
x86_1.pptx86_1.ppt
x86_1.ppt
 
8086 MICROPROCESSOR
8086 MICROPROCESSOR8086 MICROPROCESSOR
8086 MICROPROCESSOR
 
NWU and HPC
NWU and HPCNWU and HPC
NWU and HPC
 
linux installation.pdf
linux installation.pdflinux installation.pdf
linux installation.pdf
 
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
 
Developing a Windows CE OAL.ppt
Developing a Windows CE OAL.pptDeveloping a Windows CE OAL.ppt
Developing a Windows CE OAL.ppt
 
Vortex86 Sx Linux How To
Vortex86 Sx Linux How ToVortex86 Sx Linux How To
Vortex86 Sx Linux How To
 
UNIT 1 SONCA.pptx
UNIT 1 SONCA.pptxUNIT 1 SONCA.pptx
UNIT 1 SONCA.pptx
 

Más de Linaro

Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...Linaro
 

Más de Linaro (20)

Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
HKG18-500K1 - Keynote: Dileep Bhandarkar - Emerging Computing Trends in the D...
 

Último

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration

  • 1. Linaro IoT and Embedded Group (LITE) Device Tree and CMSIS Discussion Andy Gross
  • 2. Introduction to Device Tree ● Device tree is a way of describing hardware configurations in a way that is extensible and easy to utilize in system configuration and device driver initialization. ● Adding device nodes is fairly straightforward and extensible enough to handle any type of device. ● New boards utilizing already supported SoCs can leverage definitions and add or change nodes to correctly describe that board’s implementation. This approach promotes reuse of existing configuration information. ● Classical device tree use involves compiling a textual DTS file into a flattened device tree blob (dtb). Bootloaders and later operating systems can access the blob and build up device lists or pull out required information. ● A full description of device tree can be found in the device tree specification.
  • 3. Configuration in Zephyr ● Configuration is spread out between two different areas in the Zephyr directory structure. One place resides in the arch/arm/soc/ directory, and another is in the boards/ directory. ● Each board has a defconfig that defines a set of options. Additional options are included from Kconfig files spread out in the two configuration directories. ● Kconfig options are also used to control inclusion of multiple instances of devices/peripherals. A good example of this are the GPIO ports on a number of boards. UART ports is also another good example. ● Configuration is mainly hard coded using the Kconfig options. ● The user does choose the architecture for building (ARM in our case), but this is also true of the other arches. ● Adding new boards from the same SoC family requires copying a lot of previous work. ● Device drivers use the Kconfig options to build up their device data. #ifdef statements in the drivers decide which devices are actually created and initialized.
  • 4. Configuration Sources and other Distributions ● CMSIS is a vendor agnostic hardware abstraction layer for the ARM Cortex-M processors with the intent of standardization of interfaces to peripherals, RTOSs, and middleware. ● CMSIS provides some configuration information through different components. A few of the more relevant ones are: ○ CMSIS-Core provides API and definitions for the Cortex M and associated peripherals. ○ CMSIS-Driver provides peripheral driver interfaces. Essentially, it is a HAL. ○ CMSIS-SVD describes all the components of the system using XML. ○ CMSIS-Pack uses a XML based package description to pull together ● ARM’s Keil uses a good portion of the CMSIS components and ties it into an IDE. ● MBED uses json for their configuration. Can someone speak to this?
  • 5. What can device tree do for Zephyr? ● Adding new boards based on already supported platforms is much easier due to reuse of a lot of the configuration information. ● Device tree is architecturally neutral. One can easily describe hardware components regardless of the architecture of the processor. ● Device tree can be used to generate build options, and also configuration structures that will be used by device drivers and system initialization code. ● Using device tree for configuration would result in a much smaller set of Kconfig options, as most of the options can be derived from the device tree information. ● As device tree is very flexible, it can describe all of the attributes/properties of the devices out there currently, and also handle future changes. ● The same device tree information can also be used by upper layers of software (libs, apps, frameworks, etc). This would reduce variation in these areas due to differences between boards.
  • 6. What parts of device tree will we need? ● With Zephyr, the concern is configuration of the SoC and associated peripherals. We are not looking at using the flattened device tree blob, the APIs to access information from that blob, or associating nodes with devices in the system. ● The device tree files will contain device information that will in turn be used to generate build options, structures that are used during device initialization, and perhaps even during initial system bringup. ● Runtime device tree access is not in the scope of the proposed changes. The device tree will only be used to source information during building and board initialization. ● Will versioning be an issue?
  • 7. Building a device tree specification for Zephyr ● CPU hierarchy ● Devices and resources ○ Register address space ○ Interrupts ○ GPIOs ○ Pinmux information ○ Clock gating/control ○ Clock frequencies and multipliers/divisors ○ String names for devices ○ Device specific information (PWM, RTC, WDT, etc). ● Static pinmux settings?
  • 8. Example DTS for NXP FRDMK64F /dts-v1/; / { compatible = "nxp,k64f", "nxp,mk64f12"; #address-cells = <1>; #size-cells = <1>; cpus { cpu@0 { compatible = "arm,cortex-m4f"; }; }; memory { compatible = "mmio-sram"; reg = <0x20000000 0x30000>; }; interrupt-controller@e000e100 { compatible = "arm,cortex-m4-nvic"; reg = <0xe000e100 0x3ef>; num-irq-prio-bits = <4>; num-irqs = <86>; }; timer@e00e010 { compatible = "arm,cortex-m4-systick"; reg = <0xe000e010 0x10>; clk-source = <0>; /* AHB or AHB/8 */ }; mpu@4000d000 { compatible = "nxp,k64f-mpu"; reg = <0x4000d000 0x824>; /* Add regions here that describes address, range, valid, and permissions */ }; clock-controller@40064000 { compatible = "nxp,k64f-mcg"; reg = <0x40064000 0xd>; system-clock-frequency = <120000000>; }; clock-controller@40065000 { compatible = "nxp,k64f-osc"; reg = <0x40065000 0x4>; enable-external-reference; };
  • 9. Example DTS for NXP FRDMK64F - Continued rtc@4003d000 { compatible = "nxp,k64f-rtc"; reg = <0x4003d000 0x808>; clock-frequency = <32768>; /* fixed 32kHz clk */ }; sim@40047000 { compatible = "nxp,k64f-sim"; reg = <0x40047000 0x1060>; clk-divider-core = <1>; clk-divider-bus = <2>; clk-divider-flexbus = <3>; clk-divider-flash = <5>; }; flash-controller@4001f000 { compatible = "nxp,k64f-flash-controller"; dev-name = "flash_woah"; reg = <0x4001f000 0x27c>; interrupts = <18 0 3>; }; flash@0 { reg = <0 0x100000>; }; uart@4006a000 { compatible = "nxp,k64f-uart"; reg = <0x4006a000 0x1000>; interrupts = <31 0 0>; /* irq 31 - no flags - prio 0 */ baud-rate = <115200>; pinmux = <1 16 3>, <1 17 3>; /* RX/TX - Port B - pins 16/17 - alt func 3 */ dev-name = "UART_0"; }; uart@4006b000 { compatible = "nxp,k64f-uart"; reg = <0x4006b000 0x1000>; interrupts = <33 0 0>; baud-rate = <115200>; dev-name = "UART_1"; }; pinmux@40049000 { compatible = "nxp,k64f-pinmux"; reg = <0x40049000 0x40ca>; };
  • 10. Example DTS for NXP FRDMK64F - Continued gpioa: gpio@400ff000 { compatible = "nxp,k64f-gpio"; reg = <0x400ff000 0x40>; interrupts = <59 0 3>; dev-name = "GPIO_0"; }; gpiob: gpio@400ff040 { compatible = "nxp,k64f-gpio"; reg = <0x400ff040 0x40>; interrupts = <60 0 3>; dev-name = "GPIO_1"; }; gpioc: gpio@400ff080 { compatible = "nxp,k64f-gpio"; reg = <0x400ff080 0x40>; interrupts = <61 0 3>; dev-name = "GPIO_2"; }; gpiod: gpio@400ff0c0 { compatible = "nxp,k64f-gpio"; reg = <0x400ff0c0 0x40>; interrupts = <62 0 3>; dev-name = "GPIO_3"; }; gpioe: gpio@400ff100 { compatible = "nxp,k64f-gpio"; reg = <0x400ff100 0x40>; interrupts = <63 0 3>; dev-name = "GPIO_4"; }; spi@4002c000 { compatible = "nxp,k64f-spi"; reg = <0x4002c000 0x88>; interrupts = <26 0 3>; clocks = <0x4004803C 12>; /* clk gate */ dev-name = "SPI_0"; cs = <&gpiob 10>, <&gpiob 9>; /* cs0 = PTB10, cs1 = PTB9 */ pinmux = <1 10 2>, <1 9 2>; /* PTB9/10 set to alt func 2 */ };
  • 11. Example DTS for NXP FRDMK64F - Continued spi@4002d000 { compatible = "nxp,k64f-spi"; reg = <0x4002d000 0x88>; interrupts = <27 0 3>; clocks = <0x4004803C 13>; /* clk gate */ dev-name = "SPI_1"; }; watchdog@40052000 { compatible = "nxp,watchdog-k64"; reg = <0x40052000 16>; dev-name = "WDT_0"; clock-source = <0>; /* LPO 1kHz or alternate source */ reload-counter = <40000>; start-on-boot; prescaler = <2>; }; pwm@40038000{ compatible = "nxp,pwm-k64"; reg = <0x40038000 0x98>; dev-name = "PWM_0"; prescaler = <2>; period = <1000>; clock-source = <0>; /* channel information needed - fixme */ }; pwm@40039000{ compatible = "nxp,pwm-k64"; reg = <0x40039000 0x98>; dev-name = "PWM_1"; prescaler = <2>; period = <1000>; clock-source = <0>; /* channel information needed - fixme */ }; };
  • 12. Tooling required for Zephyr Device Tree Usage ● Device tree files can be written using information contained in other files. These files could include the CMSIS files, SoC vendor generated files, and other sources for configuration information. This information needs to be separated out so that it can be included in the device tree file. ● Using the C preprocessor and running the device tree compiler in a DTS to DTS passthrough, the end result is a file that contains all of the required information in a format that is usable to create data structures that would feed device drivers and board initialization functions. ● Using a tool like the dt_to_config from the Linux kernel, the device tree file can be parsed and a set of defconfig options will be generated. This gives the advantage of capturing all the options required for a board, and it also reduces duplicate sets of options for device multiples. One simple solution for the matching would involve using a whitelist file for each SoC that gives a compatible to config option mapping. Collect include information Preprocess and replace Final DTS containing raw data Build data structures
  • 13. Proposed changes to Zephyr Configuration ● With configuration information primarily coming from device tree, the board and arch/arm directories can get squashed down to one. A lot of redundant information could be removed. ● The data structures derived from the device tree information will feed into the device creation API calls. This would remain the same. The only difference being how the information was sourced. ● All of the device tree manipulations and code generation would occur as part of the building of a target. ● Could system memory be recouped using __init section for the device information?
  • 14. Work for the near term ● Define DTS files for a few platforms, not just the NXP FRDM. ● Get the tooling in place for creating a set of data structures that are consumed by the board init functions. The followup to this is to extend that to also work for the device drivers. ● Generate the config from the dts files and work this into the Makefiles ● Cleanup the configuration directories for the boards as the required existing config and board files are retired. This will most likely involve complete removal of the board/ directories.