Linux设备树 02 ———— 内核笔记


本篇主要是一些原理和架構的部份,實際應用時不需要太過深入,大概了解一下就可以

活动地址:CSDN21天学习挑战赛

學習計畫

1,學習目標

        1.dtb解析與架構

2,學習內容

        1.dtb解析

        2.dtb 轉化為 device_node 結構

        3.dts 架構下 device & driver  匹配流程

        4.kernel 對 dts  的處理

        5.dts解析 of function

3,學習時間

        週一至週五晚上八至十點

4,學習產出

        一週三篇

學習筆記

DTC版本

一般由廠商sdk包拿到的 dtc工具多數都是x86平台使用,可使用 readelf -h dtc 查看,無法執行在aarch64架構的m1 mac,所以必需自行安裝dtc,安裝完後可查看 Machine 如下為 aarch64.

#Ubuntu
sudo apt-get install device-tree-compiler

#MAC
brew install dtc

DTC使用方式

#dts -> dtb
dtc –I dts –O dtb –o xxx.dtb xxx.dts

#dtb -> dts
dtc –I dtb –O dts –o xxx.dts xxx.dtb

DTB Header

使用 fdtdump 可查看 dtb 文件之 head ,此 head  依 fdt_header 結構體描述,定義在 scripts\dtc\libfdt\fdt.h文件中

struct fdt_header {
    fdt32_t magic;               /* magic word FDT_MAGIC */
    fdt32_t totalsize;           /* total size of DT block */
    fdt32_t off_dt_struct;       /* offset to structure */
    fdt32_t off_dt_strings;      /* offset to strings */
    fdt32_t off_mem_rsvmap;      /* offset to memory reserve map */
    fdt32_t version;                 /* format version */
    fdt32_t last_comp_version;   /* last compatible version */
  
    /* version 2 fields below */
    fdt32_t boot_cpuid_phys;     /* Which physical CPU id we're booting on */
    /* version 3 fields below */
    fdt32_t size_dt_strings;     /* size of the strings block */
  
    /* version 17 fields below */
    fdt32_t size_dt_struct;      /* size of the structure block */
};

Device & Driver 匹配方式

board arch: 調用platform match fun,比對board_info 與 driver的name,match 就執行 probe.

dts: 一連串的流程最後在 _of_device_is_compatible function  ,將 driver->of_device_id ->compatible 與 dts->node->compatible 進行字串加分制的比較,match 後會進行 probe ,如果 probe 失敗會進行unmount .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值