SlideShare a Scribd company logo
1 of 18
Download to read offline
Device Tree Support on ARM Linux 趙至敏  (Chih-Min Chao) [email_address] http://gplus.to/cmchao COSCUP 2011 in Taiwan
Who am I ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Device Tree (DT) ,[object Object],[object Object],[object Object],[object Object],[object Object]
DT Can’t DO ,[object Object],[object Object],[object Object],[object Object],[object Object]
PPC’s Problems ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Progress on ARM Linux ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Device Tree Work Flow Description Script Compiler Binary  Data Bootloader Platform Kernel Hardware configuration Carry Pass Look up probe DTS DTC DTB
DTS (Device Tree Script) / {          model = &quot;ARM Versatile AB&quot;;          compatible = &quot;arm,versatile-ab&quot;;          #address-cells = <1>;          #size-cells = <1>;          interrupt-parent = <&vic>;               memory {                  reg = <0x0 0x08000000>;          };                         net@10010000 {                  compatible = &quot;smsc,lan91c111&quot;;                  reg = <0x10010000 0x10000>;                  interrupts = <25>;          }; };
DTS (Device Tree Script) / {          model = &quot;ARM Versatile AB&quot;;          compatible = &quot;arm,versatile-ab&quot;;          #address-cells = <1>;          #size-cells = <1>;          interrupt-parent = <&vic>;               memory {                  reg = <0x0 0x08000000>;          };                         net@10010000 {                  compatible = &quot;smsc,lan91c111&quot;;                  reg = <0x10010000 0x10000>;                  interrupts = <25>;          }; }; Initial Structure  (root node’s property) Node 1 Node 2 Root Node
DTS (Device Tree Script) / {          model = &quot;ARM Versatile AB&quot;;          compatible  = &quot; arm , versatile-ab &quot;;          #address-cells = <1>;          #size-cells = <1>;          interrupt-parent = <&vic>;               memory {                  reg = <0x0 0x08000000>;          };                         net@10010000 {                  compatible  = &quot; smsc , lan91c111 &quot;;                  reg = <0x10010000 0x10000>;                  interrupts = <25>;          }; }; Device loop-up “ <manufacturer>,<model>”
DTS (Device Tree Script) / {          model = &quot;ARM Versatile AB&quot;;          compatible = &quot;arm,versatile-ab&quot;;          #address-cells = <1>;          #size-cells = <1>;          interrupt-parent = <&vic>;               memory {                  reg = < 0x0   0x08000000 >;          };                         net@ 10010000  {                  compatible = &quot;smsc,lan91c111&quot;;                  reg = < 0x10010000   0x10000 >;                  interrupts = <25>;          }; }; Unit : 32bit <addr_u0 addr_u1 ..size_u0..>
DTS (Device Tree Script) /{                          i2c0: i2c@10002000 {                  #address-cells = <1>;                  #size-cells = <0>;                  compatible = &quot;arm,versatile-i2c&quot;;                  reg = <0x10002000 0x1000>;                  rtc@68 {                          compatible = &quot;dallas,ds1338&quot;;                          reg = <0x68>;                  };          }; }; child node
DTS (Device Tree Script) ,[object Object],[object Object],[object Object],[object Object],[object Object]
DTS - Driver Probing  #ifdef CONFIG_OF static const struct of_device_id smc91x_match[] = {          { .compatible = &quot;smsc,lan91c94&quot;, },          {  .compatible = &quot;smsc,lan91c111&quot; , },          {},}; MODULE_DEVICE_TABLE(of, smc91x_match); #else #define smc91x_match NULL #endif static struct platform_driver smc_driver = {          .driver         = {                  .name   = CARDNAME,                  .owner  = THIS_MODULE,                  .pm     = &smc_drv_pm_ops,                  .of_match_table = smc91x_match,  }, }; net@10010000 {                  compatible = &quot; smsc,lan91c111 &quot;;                  reg = <0x10010000 0x10000>;                  interrupts = <25>;          };
Device Tree Misc  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bootloader & Linux Support ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Live Demo ,[object Object],[object Object],[object Object],[object Object]
Reference ,[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)shimosawa
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal BootloaderSatpal Parmar
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24Varun Mahajan
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)RuggedBoardGroup
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/CoreShay Cohen
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot) Omkar Rane
 
Linux PCI device driver
Linux PCI device driverLinux PCI device driver
Linux PCI device driver艾鍗科技
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKBshimosawa
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_BootingRashila Rr
 
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
 

What's hot (20)

Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
linux device driver
linux device driverlinux device driver
linux device driver
 
Spi drivers
Spi driversSpi drivers
Spi drivers
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24
 
Hacking QNX
Hacking QNXHacking QNX
Hacking QNX
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
 
Introduction to Modern U-Boot
Introduction to Modern U-BootIntroduction to Modern U-Boot
Introduction to Modern U-Boot
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot)
 
Linux PCI device driver
Linux PCI device driverLinux PCI device driver
Linux PCI device driver
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
 
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
 
USB Drivers
USB DriversUSB Drivers
USB Drivers
 

Similar to Device tree support on arm linux

Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -evechiportal
 
TAUS USER CONFERENCE 2009, Normalization of translation memories
TAUS USER CONFERENCE 2009, Normalization of translation memoriesTAUS USER CONFERENCE 2009, Normalization of translation memories
TAUS USER CONFERENCE 2009, Normalization of translation memoriesTAUS - The Language Data Network
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source codeAndrey Karpov
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source codePVS-Studio
 
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLinaro
 
Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3Peter Maas
 
Csphtp1 18
Csphtp1 18Csphtp1 18
Csphtp1 18HUST
 
Eff Plsql
Eff PlsqlEff Plsql
Eff Plsqlafa reg
 
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013makezine
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game EngineJohan Andersson
 
Linux Networking Commands
Linux Networking CommandsLinux Networking Commands
Linux Networking Commandstmavroidis
 
NEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator PresentationNEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator Presentationaskankit
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver艾鍗科技
 
Netezza technicaloverviewportugues
Netezza technicaloverviewportugues Netezza technicaloverviewportugues
Netezza technicaloverviewportugues hdkid82
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree nodeHemakumar.S
 
Gpu and The Brick Wall
Gpu and The Brick WallGpu and The Brick Wall
Gpu and The Brick Wallugur candan
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisFastly
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11gfcamachob
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01Karam Abuataya
 

Similar to Device tree support on arm linux (20)

Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eve
 
TAUS USER CONFERENCE 2009, Normalization of translation memories
TAUS USER CONFERENCE 2009, Normalization of translation memoriesTAUS USER CONFERENCE 2009, Normalization of translation memories
TAUS USER CONFERENCE 2009, Normalization of translation memories
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
 
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
 
Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3Domain Specific Languages In Scala Duse3
Domain Specific Languages In Scala Duse3
 
Csphtp1 18
Csphtp1 18Csphtp1 18
Csphtp1 18
 
Eff Plsql
Eff PlsqlEff Plsql
Eff Plsql
 
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013
Alden Hart and Rob Giesburt at Hardware Innovation Summit 2013
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Linux Networking Commands
Linux Networking CommandsLinux Networking Commands
Linux Networking Commands
 
NEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator PresentationNEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator Presentation
 
Linux Serial Driver
Linux Serial DriverLinux Serial Driver
Linux Serial Driver
 
Netezza technicaloverviewportugues
Netezza technicaloverviewportugues Netezza technicaloverviewportugues
Netezza technicaloverviewportugues
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
 
Gpu and The Brick Wall
Gpu and The Brick WallGpu and The Brick Wall
Gpu and The Brick Wall
 
Drools BeJUG 2010
Drools BeJUG 2010Drools BeJUG 2010
Drools BeJUG 2010
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01
 

Recently uploaded

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Tecnogravura, Cylinder Engraving for Rotogravure
Tecnogravura, Cylinder Engraving for RotogravureTecnogravura, Cylinder Engraving for Rotogravure
Tecnogravura, Cylinder Engraving for RotogravureAntonio de Llamas
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemSafe Software
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationDianaGray10
 
Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Antonio de Llamas
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfHCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfROWELL MARQUINA
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 

Recently uploaded (20)

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Tecnogravura, Cylinder Engraving for Rotogravure
Tecnogravura, Cylinder Engraving for RotogravureTecnogravura, Cylinder Engraving for Rotogravure
Tecnogravura, Cylinder Engraving for Rotogravure
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data EcosystemThe Critical Role of Spatial Data in Today's Data Ecosystem
The Critical Role of Spatial Data in Today's Data Ecosystem
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automation
 
BoSEU24 | Bill Thompson | Talk From Another Century
BoSEU24 | Bill Thompson | Talk From Another CenturyBoSEU24 | Bill Thompson | Talk From Another Century
BoSEU24 | Bill Thompson | Talk From Another Century
 
Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+Tetracrom printing process for packaging with CMYK+
Tetracrom printing process for packaging with CMYK+
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdfHCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
HCI Lesson 1 - Introduction to Human-Computer Interaction.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 

Device tree support on arm linux

  • 1. Device Tree Support on ARM Linux 趙至敏 (Chih-Min Chao) [email_address] http://gplus.to/cmchao COSCUP 2011 in Taiwan
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. Device Tree Work Flow Description Script Compiler Binary Data Bootloader Platform Kernel Hardware configuration Carry Pass Look up probe DTS DTC DTB
  • 8. DTS (Device Tree Script) / {         model = &quot;ARM Versatile AB&quot;;         compatible = &quot;arm,versatile-ab&quot;;         #address-cells = <1>;         #size-cells = <1>;         interrupt-parent = <&vic>;              memory {                 reg = <0x0 0x08000000>;         };                        net@10010000 {                 compatible = &quot;smsc,lan91c111&quot;;                 reg = <0x10010000 0x10000>;                 interrupts = <25>;         }; };
  • 9. DTS (Device Tree Script) / {         model = &quot;ARM Versatile AB&quot;;         compatible = &quot;arm,versatile-ab&quot;;         #address-cells = <1>;         #size-cells = <1>;         interrupt-parent = <&vic>;              memory {                 reg = <0x0 0x08000000>;         };                        net@10010000 {                 compatible = &quot;smsc,lan91c111&quot;;                 reg = <0x10010000 0x10000>;                 interrupts = <25>;         }; }; Initial Structure (root node’s property) Node 1 Node 2 Root Node
  • 10. DTS (Device Tree Script) / {         model = &quot;ARM Versatile AB&quot;;         compatible = &quot; arm , versatile-ab &quot;;         #address-cells = <1>;         #size-cells = <1>;         interrupt-parent = <&vic>;              memory {                 reg = <0x0 0x08000000>;         };                        net@10010000 {                 compatible = &quot; smsc , lan91c111 &quot;;                 reg = <0x10010000 0x10000>;                 interrupts = <25>;         }; }; Device loop-up “ <manufacturer>,<model>”
  • 11. DTS (Device Tree Script) / {         model = &quot;ARM Versatile AB&quot;;         compatible = &quot;arm,versatile-ab&quot;;         #address-cells = <1>;         #size-cells = <1>;         interrupt-parent = <&vic>;              memory {                 reg = < 0x0 0x08000000 >;         };                        net@ 10010000 {                 compatible = &quot;smsc,lan91c111&quot;;                 reg = < 0x10010000 0x10000 >;                 interrupts = <25>;         }; }; Unit : 32bit <addr_u0 addr_u1 ..size_u0..>
  • 12. DTS (Device Tree Script) /{                         i2c0: i2c@10002000 {                 #address-cells = <1>;                 #size-cells = <0>;                 compatible = &quot;arm,versatile-i2c&quot;;                 reg = <0x10002000 0x1000>;                 rtc@68 {                         compatible = &quot;dallas,ds1338&quot;;                         reg = <0x68>;                 };         }; }; child node
  • 13.
  • 14. DTS - Driver Probing #ifdef CONFIG_OF static const struct of_device_id smc91x_match[] = {         { .compatible = &quot;smsc,lan91c94&quot;, },         {  .compatible = &quot;smsc,lan91c111&quot; , },         {},}; MODULE_DEVICE_TABLE(of, smc91x_match); #else #define smc91x_match NULL #endif static struct platform_driver smc_driver = {         .driver         = {                 .name   = CARDNAME,                 .owner  = THIS_MODULE,                 .pm     = &smc_drv_pm_ops,                  .of_match_table = smc91x_match, }, }; net@10010000 {                  compatible = &quot; smsc,lan91c111 &quot;;                 reg = <0x10010000 0x10000>;                 interrupts = <25>;         };
  • 15.
  • 16.
  • 17.
  • 18.