回答

收藏

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

#板卡评测 #板卡评测 2187 人阅读 | 0 人回复 | 2023-11-14

本帖最后由 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)和设备树规范文档的描述文档是一致的。

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节点信息

我们在之前的实验中(/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 下一条