查看: 893|回复: 0

[评测分享] 【米尔 MYD-YM62X 开发板入门评测】 6.根文件系统查看设备树

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 128 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-11-14 23:26:43 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 andeyqi 于 2023-11-15 09:18 编辑

    简介:

       从之前的key,led 的评测贴可知,硬件的参数配置和设备树是密不可分,驱动程序解析设备树的参数可以获取配置信息,了解设备树有助于我们调试驱动程序,Uboot启动后会把DTB文件传递给内核,并且DTB 文件所占据的内存空间会保留不会被分配使用,我们可以产看到原始的DTB文件。

    1.查看原始的DTB文件

    系统启动后会在/sys/firmware 目录下保存设备树相关文件,在/sys/firmware 目录下有如下两个文件
    1. root@myd-am62x:/sys/firmware# ls
    2. devicetree  fdt
    复制代码
    fdt 文件为原始的dtb文件可以通过hexdump -C fdt 命令dump fdt文件,输入后可以产看dtb 文件的信息如下,以下只是截取了部分的内容:
    1. root@myd-am62x:/sys/firmware# hexdump -C fdt
    2. 00000000  d0 0d fe ed 00 00 f0 00  00 00 00 38 00 00 d6 78  |...........8...x|
    3. 00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 00 00  |...(............|
    4. 00000020  00 00 17 e4 00 00 d6 40  00 00 00 00 00 00 00 00  |.......@........|
    5. 00000030  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
    6. 00000040  00 00 00 03 00 00 00 11  00 00 17 b5 30 30 30 30  |............0000|
    7. 00000050  30 30 30 30 30 30 30 30  30 30 30 30 00 20 4b 33  |000000000000. K3|
    8. 00000060  00 00 00 03 00 00 00 1f  00 00 00 00 54 65 78 61  |............Texa|
    9. 00000070  73 20 49 6e 73 74 72 75  6d 65 6e 74 73 20 4b 33  |s Instruments K3|
    10. 00000080  20 41 4d 36 32 35 20 53  6f 43 00 00 00 00 00 03  | AM625 SoC......|
    11. 00000090  00 00 00 09 00 00 00 06  74 69 2c 61 6d 36 32 35  |........ti,am625|
    12. 000000a0  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 11  |................|
    13. 000000b0  00 00 00 01 00 00 00 03  00 00 00 04 00 00 00 22  |..............."|
    14. 000000c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 00 31  |...............1|
    15. 000000d0  00 00 00 02 00 00 00 01  63 68 6f 73 65 6e 00 00  |........chosen..|
    16. 000000e0  00 00 00 03 00 00 00 18  00 00 17 c3 32 30 32 33  |............2023|
    17. 000000f0  2e 30 34 2d 67 66 34 65  37 62 30 33 66 2d 64 69  |.04-gf4e7b03f-di|
    18. 00000100  72 74 79 00 00 00 00 03  00 00 00 11 00 00 00 3d  |rty............=|
    19. 00000110  73 65 72 69 61 6c 32 3a  31 31 35 32 30 30 6e 38  |serial2:115200n8|
    20. 00000120  00 00 00 00 00 00 00 03  00 00 01 ad 00 00 00 49  |...............I|
    21. 00000130  63 6f 6e 73 6f 6c 65 3d  74 74 79 53 32 2c 31 31  |console=ttyS2,11|
    22. 00000140  35 32 30 30 6e 38 20 65  61 72 6c 79 63 6f 6e 3d  |5200n8 earlycon=|
    23. 00000150  6e 73 31 36 35 35 30 61  2c 6d 6d 69 6f 33 32 2c  |ns16550a,mmio32,|
    24. 00000160  30 78 30 32 38 30 30 30  30 30 20 6d 74 64 70 61  |0x02800000 mtdpa|
    25. 00000170  72 74 73 3d 73 70 69 2d  6e 61 6e 64 30 3a 35 31  |rts=spi-nand0:51|
    26. 00000180  32 6b 28 6f 73 70 69 2e  74 69 62 6f 6f 74 33 29  |2k(ospi.tiboot3)|
    27. 00000190  2c 32 6d 28 6f 73 70 69  2e 74 69 73 70 6c 29 2c  |,2m(ospi.tispl),|
    28. 000001a0  34 6d 28 6f 73 70 69 2e  75 2d 62 6f 6f 74 29 2c  |4m(ospi.u-boot),|
    29. 000001b0  32 35 36 6b 28 6f 73 70  69 2e 65 6e 76 29 2c 32  |256k(ospi.env),2|
    30. 000001c0  35 36 6b 28 6f 73 70 69  2e 65 6e 76 2e 62 61 63  |56k(ospi.env.bac|
    31. 000001d0  6b 75 70 29 2c 39 38 30  34 38 6b 40 33 32 6d 28  |kup),98048k@32m(|
    32. 000001e0  6f 73 70 69 2e 72 6f 6f  74 66 73 29 2c 32 35 36  |ospi.rootfs),256|
    33. 000001f0  6b 40 31 33 30 38 31 36  6b 28 6f 73 70 69 2e 70  |k@130816k(ospi.p|
    34. 00000200  68 79 70 61 74 74 65 72  6e 29 3b 6f 6d 61 70 32  |hypattern);omap2|
    35. 00000210  2d 6e 61 6e 64 2e 30 3a  32 6d 28 4e 41 4e 44 2e  |-nand.0:2m(NAND.|
    36. 00000220  74 69 62 6f 6f 74 33 29  2c 32 6d 28 4e 41 4e 44  |tiboot3),2m(NAND|
    复制代码
    从dump 的dtb 数据头部对应的是header 信息按照大端格式保存的。第一个word 为magic(0xd00dfeed)和设备树规范文档的描述文档是一致的。
    dtb_header.png

    2.查看节点信息
    /sys/firmware 目录下fdt 文件对应着原始的Dtb 文件,另外一个devicetree  文件夹对应着设备树节点信息,通过tree dump下目录结构信息如下可知每个文件夹代表这个一个节点信息,文件夹下对应的文件对应着节点属性信息。
    1. devicetree/
    2. `-- base
    3.         |-- #address-cells
    4.         |-- #size-cells
    5.         |-- __symbols__
    6.         |        |-- L2_0
    7.         |        |-- a53_opp_table
    8.         |        |-- a53_timer0
    9.         |        |-- at9555
    10.         |        |-- audio_refclk0
    11.         |        |-- audio_refclk1
    12.         |        |-- cbass_main
    13.         |        |-- cbass_mcu
    14.         |        |-- cbass_wakeup
    15.         |        |-- cdns_csi2rx0
    16.         |        |-- chipid
    17.         |        |-- clk_ov5640_fixed
    18.         |        |-- codec_audio
    19.         |        |-- con_usbotg_hs_ep
    20.         |        |-- cpsw3g
    21.         |        |-- cpsw3g_mdio
    22.         |        |-- cpsw3g_phy0
    23.         |        |-- cpsw3g_phy1
    24.         |        |-- cpsw_port1
    25.         |        |-- cpsw_port2
    26.         |        |-- cpu0
    27.         |        |-- cpu1
    28.         |        |-- crypto
    29.         |        |-- csi0_port0
    30.         |        |-- csi0_port1
    31.         |        |-- csi0_port2
    32.         |        |-- csi0_port3
    33.         |        |-- csi0_port4
    34.         |        |-- csi1_io
    35.         |        |-- csi2_cam0
    36.         |        |-- csi2rx0_in_sensor
    37.         |        |-- csi_io_power_pins_default
    38.         |        |-- dmsc
    39.         |        |-- dmss
    40.         |        |-- dphy0
    41.         |        |-- dpi1_out
    42.         |        |-- dss
    43.         |        |-- dss_oldi_io_ctrl
    44.         |        |-- dss_ports
    45.         |        |-- ecap0
    46.         |        |-- ecap1
    47.         |        |-- ecap2
    48.         |        |-- eeprom
    49.         |        |-- elm0
    50.         |        |-- epwm0
    51.         |        |-- epwm1
    52.         |        |-- epwm2
    53.         |        |-- epwm_tbclk
    54.         |        |-- framebuffer
    55.         |        |-- fss
    56.         |        |-- gic500
    57.         |        |-- gic_its
    58.         |        |-- gpmc0
    59.         |        |-- gpu
    60.         |        |-- hdmi
    61.         |        |-- hdmi_connector_in
    62.         |        |-- hwspinlock
    63.         |        |-- inta_main_dmss
    64.         |        |-- k3_clks
    65.         |        |-- k3_pds
    66.         |        |-- k3_reset
    67.         |        |-- lpm_ctx_ddr
    68.         |        |-- lvds_power
    69.         |        |-- mailbox0_cluster0
    70.         |        |-- main0_crit
    71.         |        |-- main0_thermal
    72.         |        |-- main1_crit
    73.         |        |-- main1_thermal
    74.         |        |-- main_bcdma
    75.         |        |-- main_conf
    76.         |        |-- main_dss0_pins_default
    77.         |        |-- main_esm
    78.         |        |-- main_gpio0
    79.         |        |-- main_gpio1
    80.         |        |-- main_gpio_intr
    81.         |        |-- main_i2c0
    82.         |        |-- main_i2c0_pins_default
    83.         |        |-- main_i2c1
    84.         |        |-- main_i2c1_pins_default
    85.         |        |-- main_i2c2
    86.         |        |-- main_i2c3
    87.         |        |-- main_i2c3_pins_default
    88.         |        |-- main_mcan0
    89.         |        |-- main_mcan0_pins_default
    90.         |        |-- main_mcasp0_pins_default
    91.         |        |-- main_mcasp1_pins_default
    92.         |        |-- main_mdio1_pins_default
    93.         |        |-- main_mmc0_pins_default
    94.         |        |-- main_mmc1_pins_default
    95.         |        |-- main_mmc2_pins_default
    96.         |        |-- main_pktdma
    97.         |        |-- main_pmx0
    98.         |        |-- main_ptn5150_vbus_pins_default
    99.         |        |-- main_rgmii1_pins_default
    100.         |        |-- main_rgmii2_pins_default
    101.         |        |-- main_rti0
    102.         |        |-- main_rti1
    103.         |        |-- main_rti15
    104.         |        |-- main_rti2
    105.         |        |-- main_rti3
    106.         |        |-- main_spi0
    107.         |        |-- main_spi1
    108.         |        |-- main_spi2
    109.         |        |-- main_timer0
    110.         |        |-- main_timer1
    111.         |        |-- main_timer2
    112.         |        |-- main_timer3
    113.         |        |-- main_timer4
    114.         |        |-- main_timer5
    115.         |        |-- main_timer6
    116.         |        |-- main_timer7
    117.         |        |-- main_uart0
    118.         |        |-- main_uart0_pins_default
    119.         |        |-- main_uart1
    120.         |        |-- main_uart1_pins_default
    121.         |        |-- main_uart2
    122.         |        |-- main_uart3
    123.         |        |-- main_uart4
    124.         |        |-- main_uart4_pins_default
    125.         |        |-- main_uart4_rst_pins_default
    126.         |        |-- main_uart5
    127.         |        |-- main_uart6
    128.         |        |-- main_uart6_pins_default
    129.         |        |-- main_uart6_rst_pins_default
    130.         |        |-- main_user_key_pins_default
    131.         |        |-- mbox_m4_0
    132.         |        |-- mbox_r5_0
    133.         |        |-- mcasp0
    134.         |        |-- mcasp1
    135.         |        |-- mcasp2
    136.         |        |-- mcrc
    137.         |        |-- mcu_esm
    138.         |        |-- mcu_gpio0
    139.         |        |-- mcu_gpio_intr
    140.         |        |-- mcu_i2c0
    141.         |        |-- mcu_i2c0_pins_default
    142.         |        |-- mcu_lvds_power_pins_default
    143.         |        |-- mcu_m4fss
    144.         |        |-- mcu_m4fss_dma_memory_region
    145.         |        |-- mcu_m4fss_memory_region
    146.         |        |-- mcu_mcan1
    147.         |        |-- mcu_mcan2
    148.         |        |-- mcu_ov5640_gpio_pins_default
    149.         |        |-- mcu_pmx0
    150.         |        |-- mcu_rti0
    151.         |        |-- mcu_run_led_pins_default
    152.         |        |-- mcu_spi0
    153.         |        |-- mcu_spi1
    154.         |        |-- mcu_timer0
    155.         |        |-- mcu_timer1
    156.         |        |-- mcu_timer2
    157.         |        |-- mcu_timer3
    158.         |        |-- mcu_uart0
    159.         |        |-- mcu_wlan_reg_on_pins_default
    160.         |        |-- name
    161.         |        |-- oc_sram
    162.         |        |-- ospi0
    163.         |        |-- ospi0_pins_default
    164.         |        |-- ov5640
    165.         |        |-- phy_gmii_sel
    166.         |        |-- pmu
    167.         |        |-- pru0
    168.         |        |-- pru1
    169.         |        |-- pruss
    170.         |        |-- pruss_cfg
    171.         |        |-- pruss_coreclk_mux
    172.         |        |-- pruss_iepclk_mux
    173.         |        |-- pruss_intc
    174.         |        |-- pruss_mem
    175.         |        |-- psci
    176.         |        |-- ptn5150
    177.         |        |-- rtc
    178.         |        |-- rtos_ipc_memory_region
    179.         |        |-- sdhci0
    180.         |        |-- sdhci1
    181.         |        |-- sdhci2
    182.         |        |-- secure_ddr
    183.         |        |-- secure_proxy_main
    184.         |        |-- secure_proxy_sa3
    185.         |        |-- secure_tfa_ddr
    186.         |        |-- sgtl5000
    187.         |        |-- sgtl5000_mclk
    188.         |        |-- sii9022
    189.         |        |-- sii9022_in
    复制代码

    3 查看key-gpio节点信息

    我们在之前的实验中(https://www.eefocus.com/forum/thread-229593-1-1.html) 有修改dts文件更新按键信息的处理,我们通过对应的gpio-keys 节点读取键值信息属性信息,gpio-keys节点属性信息如下:
    1. root@myd-am62x:/sys/firmware/devicetree/base# tree   gpio-keys/
    2. gpio-keys/
    3. |-- autorepeat
    4. |-- compatible
    5. |-- name
    6. |-- pinctrl-0
    7. |-- pinctrl-names
    8. `-- user
    9.     |-- gpios
    10.     |-- label
    11.     |-- linux,code
    12.     |-- name
    13.     `-- phandle
    复制代码
    我们之前修改的 user 下的linux,code 属性为0x101,我们通过节点信息读取下看看是否和我们设置的匹配。
    1. de t@myd-am62x:/sys/firmware/devicetree/base/gpio-keys/user# hexdump -x linux,cod
    2. 0000000    0000    0101
    3. 0000004
    复制代码
    读取的结果跟我们预期是一致的。
    我们再看下我们的gpio-keys 在设备树中的描述如下:
    1. gpio-keys {
    2.                 compatible = "gpio-keys";
    3.                 autorepeat;
    4.                 pinctrl-names = "default";
    5.                 pinctrl-0 = <&main_user_key_pins_default>;

    6.                 user: user {
    7.                         label = "GPIO Key USER1";
    8.                         linux,code = <BTN_1>;
    9.                         gpios = <&main_gpio0 36 GPIO_ACTIVE_LOW>;
    10.                 };
    11.         };
    复制代码
    对比文件系统的gpio-keys 节点的节点配置信息和dts文件的结构可抑制,他们的对应关系是吻合的,其他节点也是类似的操作再次就不重复验证了。

    ===============资料分割线===============

    devicetree-specification-v0.2.pdf (334.81 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 19:58 , Processed in 0.120606 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.