7307|10

1560

帖子

24

TA的资源

五彩晶圆(初级)

楼主
 

BB Black 入门基础之 Device Tree 常用target [复制链接]

本帖最后由 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> 的节点来实现。 不知理解是否有误,请拍砖指正。

最新回复

我比较纳闷,楼主的target地址是在哪里找到的 am33xx_pinmux = "/pinmux@44e10800"; user_leds_s0 = "/pinmux@44e10800/user_leds_s0"; i2c0_pins = "/pinmux@44e10800/pinmux_i2c0_pins"; 请问是在/lib/firmware目录下的吗  详情 回复 发表于 2014-10-11 16:19
点赞 关注(1)
个人签名这孩子,成熟的象征,理智的典范。
 

回复
举报

5979

帖子

8

TA的资源

版主

沙发
 
加油 加油!

点评

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

回复

189

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
Nice work!

点评

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

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

4
 

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

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

5
 

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

回复

5979

帖子

8

TA的资源

版主

6
 
有问题发上来一起讨论
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(中级)

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

点评

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

回复

88

帖子

0

TA的资源

一粒金砂(中级)

8
 
明白了,感谢!
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

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

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

回复

9

帖子

0

TA的资源

一粒金砂(初级)

10
 
我比较纳闷,楼主的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
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

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

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

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表