SlideShare une entreprise Scribd logo
1  sur  18
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]

Contenu connexe

Tendances

U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
Macpaul Lin
 

Tendances (20)

Network Drivers
Network DriversNetwork Drivers
Network Drivers
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Kernel Recipes 2015: Representing device-tree peripherals in ACPI
Kernel Recipes 2015: Representing device-tree peripherals in ACPIKernel Recipes 2015: Representing device-tree peripherals in ACPI
Kernel Recipes 2015: Representing device-tree peripherals in ACPI
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
 
Linux kernel modules
Linux kernel modulesLinux kernel modules
Linux kernel modules
 
Kernel Module Programming
Kernel Module ProgrammingKernel Module Programming
Kernel Module Programming
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel Crashdump
 
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
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Introduction to Kernel and Device Drivers
Introduction to Kernel and Device DriversIntroduction to Kernel and Device Drivers
Introduction to Kernel and Device Drivers
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 
Introduction To Linux Kernel Modules
Introduction To Linux Kernel ModulesIntroduction To Linux Kernel Modules
Introduction To Linux Kernel Modules
 

Similaire à 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 -eve
chiportal
 
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
TAUS - The Language Data Network
 
Eff Plsql
Eff PlsqlEff Plsql
Eff Plsql
afa 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 2013
makezine
 
NEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator PresentationNEOOUG 2010 Oracle Data Integrator Presentation
NEOOUG 2010 Oracle Data Integrator Presentation
askankit
 
Netezza technicaloverviewportugues
Netezza technicaloverviewportugues Netezza technicaloverviewportugues
Netezza technicaloverviewportugues
hdkid82
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01
Karam Abuataya
 

Similaire à 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
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

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.