0% found this document useful (0 votes)
11 views18 pages

Device Tree Overview and Management

The document discusses the history and architecture of device trees. It explains that device trees originated with Sun Microsystems' Open Boot and have been adopted by various architectures including SPARC, PowerPC, x86, and ARM. A device tree uses a tree data structure and properties to describe the hardware components in a system. Linux device drivers interface with both the kernel and hardware to control peripheral devices and are integrated into the kernel. There are two main types: character drivers for devices that process individual bytes and block drivers for those that process groups of bytes.

Uploaded by

Miled Houssem
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views18 pages

Device Tree Overview and Management

The document discusses the history and architecture of device trees. It explains that device trees originated with Sun Microsystems' Open Boot and have been adopted by various architectures including SPARC, PowerPC, x86, and ARM. A device tree uses a tree data structure and properties to describe the hardware components in a system. Linux device drivers interface with both the kernel and hardware to control peripheral devices and are integrated into the kernel. There are two main types: character drivers for devices that process individual bytes and block drivers for those that process groups of bytes.

Uploaded by

Miled Houssem
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Device tree
 History of Device Tree (DT)

● Sun Microsystems - Open Boot / Open Firmware (1988)

● Used in SPARC systems ○ Uses DT to describe hardware

● IEEE-1275 formalized specification (1994) ○ Documents DT

● Apple adopts Open Firmware on Power Mac 7200 (1995) using DT

● Common Hardware Reference Platform (CHRP) specifies DT


(1995) ● ePAPR specifies DT (2008)
DT in the Linux kernel
 ● SPARC
○ All systems pass DT so it’s supported for a long time in the kernel
● PowerPC
○ PowerMacs also drove support of DT in the kernel
○ Major reorg in 2005 merging 32-bit/64-bit required all platforms
to use DT
● x86
○ Yes, really. CE4100 Falconfalls uses DT
● ARM
○ Linus’ ultimatum to ARM community
○ All new platforms must use DT to describe hardware
Architechture
 ePAPR defines DT
■ a concept called a device tree to describe system
hardware.

■ A device tree is a tree data structure with nodes that


decribe the physical devices in a system.

■ device tree describes device information in the


system that cannot be dynamically detected by a
client.
Device Tree Basics
● Nodes
○ Groupings of properties and child nodes
● Properties
○ Key-Value Pairs
■ Text strings “my string”
■ Cells (32-bit) <0xdeadbeef 11 0xf00d>
■ Binary data [0x01 0x02 0x03 0x04]
■ mixed data, concatenate with a comma
 ● “my string”, <0xdeadbeef>, [0x04], “your string”
 ● Phandles
 ○ Reference to another node
Managing Device Tree Source (DTS)
● DTS files found in arch/foo/boot/dts/ on ARM, MIPS, PowerPC, and

MicroBlaze

● A DTS file is compiled into a Device Tree Blob (DTB)

○ The resulting DTB is passed to the kernel at boot

○ All devices are created using the contents of the DTB.

● DTS files may include other files


Managing Device Tree Source (DTS)

● DTS files found in arch/foo/boot/dts/ on ARM, MIPS,


PowerPC, and MicroBlaze

● A DTS file is compiled into a Device Tree Blob (DTB)

○ The resulting DTB is passed to the kernel at boot

○ All devices are created using the contents of the DTB.

● DTS files may include other files


BeagleBone
White/Black
DTS/DTSI
Linux Device Drivers

What’s a ‘device-driver’?
•A special kind of computer program
•Intended to control a peripheral device
•Needs to execute ‘privileged’ instructions
•Must be integrated into the OS kernel
•Interfaces both to kernel and to hardware
•Program-format specific to a particular OS
Linux device-drivers

 A package mainly of ‘service functions’


 The package is conceptually an ‘object’
 But in C this means it’s a ‘struct’
 Specifically:struct file_operations { …; };
 Definition is found in a kernel-header:
‘/usr/src/linux/include/linux/fs.h’
Types of Device-Drivers

 Character drivers:
- the device processes individual bytes
(e.g., keyboard, printer, modem)

 Block drivers:
- the device processes groups of bytes
(e.g., hard disks, CD-ROM drives)
Linux treats devices as files

 Programmers accustomed to the file API


open(), seek(), read(), write(), close(), ...

 Requires creating a filename in a directory


(special ‘/dev’ directory is for devices)
Driver Identification

 Character/Block drivers:
 Use ‘major-number’ to identify the driver
 Use ‘minor-numbers’ to distinguish among
several devices the same driver controls
 Kernel also needs a driver-name
 Users need a device-node as ‘interface’
Developing a device-driver

 Clarify your requirements


 Devise a design to achieve them
 Test your design-concept (‘prototype’)
 ‘Debug’ your prototype (as needed)
 Build your final driver in iteratively
 Document your work for future use

You might also like