社区导航

 

搜索
查看: 5807|回复: 10

[原创] BB Black 入门基础之 Device Tree 常用target

[复制链接]

1739

TA的帖子

24

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2014-3-20 09:48 | 显示全部楼层 |阅读模式
本帖最后由 lonerzf 于 2014-3-20 14:36 编辑 最近正学习Device Tree,过了这么长一段时间,进展也不是很大。总结下,主要原因还是基础比较薄弱,不太明白DTS这个文件的写法,不清楚哪里去找一些常用的属性值。 补充几个缩写 (AM335x TRM Page 1972) OMAP Open Multimedia Application Platform PWMSS Pulse-Width Modulation Subsystem ePWM enhanced PWM eHRPWM enhanced high resolution PWM eCAP enhanced Capture eQEP enhanced Quadrature Encode Pulse 其中PWMSS 包括了 eHRPWM eCAP eQEP 几个功能模块。所以要使用ehrpwm1 那就必须先使能epwmss1。 好久之前发表过心得 BB Black 入门基础之 Device Tree 当时还不清楚具体怎么去写一个DTS文件,比如不知道target有哪些,就像下面这种。
  1. fragment@0 {

  2. target = <&am33xx_pinmux>;

    ...

    }

复制代码
以及下面这种
  1. fragment@1 {
  2. target = <&epwmss1>;
  3. __overlay__ {
  4. status = "okay";
  5. };
  6. };
复制代码
  1. fragment@2 {
  2. target = <&ehrpwm1>;
  3. __overlay__ {
  4. status = "okay";
  5. };
  6. };
复制代码
看到了这里target = <&am33xx_pinmux>; 很多时候我们都不知道 am33xx_pinmux 这个东西它究竟是怎么来的。 这里大胆揣测一下,咱们平时常用的target就在下面包括了。
  1. am33xx_pinmux = "/pinmux@44e10800";
  2. user_leds_s0 = "/pinmux@44e10800/user_leds_s0";
  3. i2c0_pins = "/pinmux@44e10800/pinmux_i2c0_pins";
  4. uart0_pins = "/pinmux@44e10800/pinmux_uart0_pins";
  5. clkout2_pin = "/pinmux@44e10800/pinmux_clkout2_pin";
  6. cpsw_default = "/pinmux@44e10800/cpsw_default";
  7. cpsw_sleep = "/pinmux@44e10800/cpsw_sleep";
  8. davinci_mdio_default = "/pinmux@44e10800/davinci_mdio_default";
  9. davinci_mdio_sleep = "/pinmux@44e10800/davinci_mdio_sleep";
  10. i2c2_pins = "/pinmux@44e10800/pinmux_i2c2_pins";
  11. mmc1_pins = "/pinmux@44e10800/pinmux_mmc1_pins";
  12. nxp_hdmi_bonelt_pins = "/pinmux@44e10800/nxp_hdmi_bonelt_pins";
  13. intc = "/ocp/interrupt-controller@48200000";
  14. edma = "/ocp/edma@49000000";
  15. gpio0 = "/ocp/gpio@44e07000";
  16. gpio1 = "/ocp/gpio@4804c000";
  17. gpio2 = "/ocp/gpio@481ac000";
  18. gpio3 = "/ocp/gpio@481ae000";
  19. uart0 = "/ocp/serial@44e09000";
  20. uart1 = "/ocp/serial@48022000";
  21. uart2 = "/ocp/serial@48024000";
  22. uart3 = "/ocp/serial@481a6000";
  23. uart4 = "/ocp/serial@481a8000";
  24. uart5 = "/ocp/serial@481aa000";
  25. i2c0 = "/ocp/i2c@44e0b000";
  26. tps = "/ocp/i2c@44e0b000/tps@24";
  27. dcdc1_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@0";
  28. dcdc2_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@1";
  29. dcdc3_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@2";
  30. ldo1_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@3";
  31. ldo2_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@4";
  32. ldo3_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@5";
  33. ldo4_reg = "/ocp/i2c@44e0b000/tps@24/regulators/regulator@6";
  34. vmmcsd_fixed = "/ocp/i2c@44e0b000/tps@24/fixedregulator@0";
  35. baseboard_eeprom = "/ocp/i2c@44e0b000/baseboard_eeprom@50";
  36. i2c1 = "/ocp/i2c@4802a000";
  37. i2c2 = "/ocp/i2c@4819c000";
  38. cape_eeprom0 = "/ocp/i2c@4819c000/cape_eeprom0@54";
  39. cape_eeprom1 = "/ocp/i2c@4819c000/cape_eeprom1@55";
  40. cape_eeprom2 = "/ocp/i2c@4819c000/cape_eeprom2@56";
  41. cape_eeprom3 = "/ocp/i2c@4819c000/cape_eeprom3@57";
  42. mmc1 = "/ocp/mmc@48060000";
  43. mmc2 = "/ocp/mmc@481d8000";
  44. mmc3 = "/ocp/mmc@47810000";
  45. wdt2 = "/ocp/wdt@44e35000";
  46. dcan0 = "/ocp/d_can@481cc000";
  47. dcan1 = "/ocp/d_can@481d0000";
  48. timer1 = "/ocp/timer@44e31000";
  49. timer2 = "/ocp/timer@48040000";
  50. timer3 = "/ocp/timer@48042000";
  51. timer4 = "/ocp/timer@48044000";
  52. timer5 = "/ocp/timer@48046000";
  53. timer6 = "/ocp/timer@48048000";
  54. timer7 = "/ocp/timer@4804a000";
  55. spi0 = "/ocp/spi@48030000";
  56. spi1 = "/ocp/spi@481a0000";
  57. musb = "/ocp/usb@47400000";
  58. usb = "/ocp/usb@47400000";
  59. ctrl_mod = "/ocp/usb@47400000/control@44e10000";
  60. usb0_phy = "/ocp/usb@47400000/usb-phy@47401300";
  61. usb0 = "/ocp/usb@47400000/usb@47401000";
  62. usb1_phy = "/ocp/usb@47400000/usb-phy@47401b00";
  63. usb1 = "/ocp/usb@47400000/usb@47401800";
  64. cppi41dma = "/ocp/usb@47400000/dma-controller@07402000";
  65. epwmss0 = "/ocp/epwmss@48300000";
  66. ecap0 = "/ocp/epwmss@48300000/ecap@48300100";
  67. ehrpwm0 = "/ocp/epwmss@48300000/ehrpwm@48300200";
  68. epwmss1 = "/ocp/epwmss@48302000";
  69. ecap1 = "/ocp/epwmss@48302000/ecap@48302100";
  70. ehrpwm1 = "/ocp/epwmss@48302000/ehrpwm@48302200";
  71. epwmss2 = "/ocp/epwmss@48304000";
  72. ecap2 = "/ocp/epwmss@48304000/ecap@48304100";
  73. ehrpwm2 = "/ocp/epwmss@48304000/ehrpwm@48304200";
  74. mac = "/ocp/ethernet@4a100000";
  75. davinci_mdio = "/ocp/ethernet@4a100000/mdio@4a101000";
  76. cpsw_emac0 = "/ocp/ethernet@4a100000/slave@4a100200";
  77. cpsw_emac1 = "/ocp/ethernet@4a100000/slave@4a100300";
  78. ocmcram = "/ocp/ocmcram@40300000";
  79. wkup_m3 = "/ocp/wkup_m3@44d00000";
  80. elm = "/ocp/elm@48080000";
  81. tscadc = "/ocp/tscadc@44e0d000";
  82. am335x_adc = "/ocp/tscadc@44e0d000/adc";
  83. gpmc = "/ocp/gpmc@50000000";
  84. baseboard_beaglebone = "/bone_capemgr/baseboardmaps/board@0";
  85. baseboard_beaglebone_black = "/bone_capemgr/baseboardmaps/board@1";
  86. fb = "/fb@4830e000";
  87. hdmi = "/hdmi";
复制代码
这个能解释得了许多我们已经看到的dts文件的target写法。 但同时,还会遇到如
  1. fragment@3 {

  2. target =
  3. <&ocp>;

    ...

    }

复制代码
这类的target。这里不妨再大胆假设下,OCP即片上外设,如果需要自己定义target,那么就在这个片段里边进行引脚等数据的定义。
  1. gpio-leds-cape-lcd7 {
  2. compatible = "gpio-leds";
  3. pinctrl-names = "default";
  4. pinctrl-0 = <&bone_lcd7_cape_led_00A3_pins>;
  5. lcd7-led0 {
  6. label = "lcd7:green:usr0";
  7. gpios = <&gpio2 28 0>;
  8. linux,default-trigger = "heartbeat";
  9. default-state = "off";
  10. };
复制代码
总结起来就是: 1 常用的target都可用上表给出的 am33xx_pinmux epwmss1 i2c0 这些表示。 2 自定义引脚的意义及配置,通过新建一个包含target = <&ocp> 的节点来实现。 不知理解是否有误,请拍砖指正。
这孩子,成熟的象征,理智的典范。


回复

使用道具 举报

6551

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-3-20 09:55 | 显示全部楼层
加油 加油!

点评

正在研究你的LCD CAPE,不过好多东西不懂,得抓紧学。呵呵。  详情 回复 发表于 2014-3-20 14:38
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰


回复

使用道具 举报

219

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2014-3-20 10:26 | 显示全部楼层
Nice work!

点评

你的文章对我也很有启发。  详情 回复 发表于 2014-3-20 14:39
更多BBB经验分享,请访问我的博客http://blog.csdn.net/wyt2013


回复

使用道具 举报

1739

TA的帖子

24

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

 楼主| 发表于 2014-3-20 14:38 | 显示全部楼层

正在研究你的LCD CAPE,不过好多东西不懂,得抓紧学。呵呵。
这孩子,成熟的象征,理智的典范。


回复

使用道具 举报

1739

TA的帖子

24

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

 楼主| 发表于 2014-3-20 14:39 | 显示全部楼层

你的文章对我也很有启发。
这孩子,成熟的象征,理智的典范。


回复

使用道具 举报

6551

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2014-3-20 15:55 | 显示全部楼层
有问题发上来一起讨论
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰


回复

使用道具 举报

90

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-7-11 08:58 | 显示全部楼层
想问一下,这些Target是怎么来的.是不是编译系统内核的时候增加的部分.
BBB板载的系统好像已经有了这些支持.但是如果使用ubuntu系统或者debian系统,如何实现Target的支持.
也许描述不对,希望楼主指点指点!

点评

因为从咱们使用的镜像基于linux 3.8.13内核。这么理解吧,从3.x内核开始,linux系统本身就支持Devic Tree,实现设备扁平管理。所以像ubuntu、debian等基于3.8.13内核的镜像都是直接能用的。 不知道这个问答是否贴切  详情 回复 发表于 2014-7-11 10:19


回复

使用道具 举报

90

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-7-11 10:10 | 显示全部楼层
明白了,感谢!


回复

使用道具 举报

1739

TA的帖子

24

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

 楼主| 发表于 2014-7-11 10:19 | 显示全部楼层
dwh000 发表于 2014-7-11 08:58
想问一下,这些Target是怎么来的.是不是编译系统内核的时候增加的部分.
BBB板载的系统好像已经有了这些支持 ...

因为从咱们使用的镜像基于linux 3.8.13内核。这么理解吧,从3.x内核开始,linux系统本身就支持Devic Tree,实现设备扁平管理。所以像ubuntu、debian等基于3.8.13内核的镜像都是直接能用的。
不知道这个问答是否贴切。不妥之处欢迎指针。
这孩子,成熟的象征,理智的典范。


回复

使用道具 举报

9

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2014-10-11 16:19 | 显示全部楼层
我比较纳闷,楼主的target地址是在哪里找到的
am33xx_pinmux = "/pinmux@44e10800";
user_leds_s0 = "/pinmux@44e10800/user_leds_s0";
i2c0_pins = "/pinmux@44e10800/pinmux_i2c0_pins";
请问是在/lib/firmware目录下的吗

点评

过去这么长时间,手头没BBB的板子,暂时没法回答你。不好意思。不过应该是在你说的那个文件夹下找到的。  详情 回复 发表于 2014-10-11 22:48


回复

使用道具 举报

1739

TA的帖子

24

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

 楼主| 发表于 2014-10-11 22:48 | 显示全部楼层
yaked 发表于 2014-10-11 16:19
我比较纳闷,楼主的target地址是在哪里找到的
am33xx_pinmux = "/pinmux@44e10800";
user_leds_s0 = "/pi ...

过去这么长时间,手头没BBB的板子,暂时没法回答你。不好意思。不过应该是在你说的那个文件夹下找到的。
这孩子,成熟的象征,理智的典范。


回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-10 15:17 , Processed in 0.370661 second(s), 34 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表