LinuxDev 板


LINE

以下是在下针对device tree写的文章,若有误请不吝指正。 网志好读版: http://gnitnawtw.blogspot.fr/2015/07/device-tree-overlayindustrial-io.html 终於把我第1个device tree overlay生出来了!要赶快把心得写下来。 Device tree的功用 想像若是没有device tree,为不同的处理器写kernel modules 会变成一件看起来复杂实际上很简单的事,举个例子, 以raspberry pi model B+跟raspberry pi 2来说,这两者只有 SoC、CPU、记忆体大小不一样,但是其他该外部设备(I2C、SPI等)都差不多。 可是若是没有device tree,写kernel module的时候就必须把以下步骤各做一次 - 弄一个machine type id - 在kernel里面建立关於此id的相关文件,设定SoC的相关代码 (包括外部设备如interrupt、timer、memory mapping等等)还有board-specific文件 - 设定其他的driver 但是现今的SoC都大同小异,了不起就是pin(gpio、I2C等)的位置不一样, 为了这些小差异,要把上面那三件事重做一次,增加一倍的coding到kerenl, 使得kernel最後越来越肥搞到Linus本人都出来骂。 Device tree的作法就是把外设资讯(怎麽连接、哪个memory mapping等) 以bootloader传送给kernel,让kernel把外设需要的module根据Device tree的 讯息连接起来。 实际做起来还挺有趣的。我自己写了两个可以在raspberry pi model B+ 连接industrial i/o (iio) driver用的device tree MCP3008(adc) 如果编译kernel的时候有勾选industrial i/o driver的时候就可以使用 可以在/lib/modules/{uname -r}/modules.alias找到这个module : alias spi:mcp3008 mcp320x 根据kernel document 的说明 https://www.kernel.org/doc/Documentation/devicetree/bindings/iio/adc/mcp320x.txt 我写了mcp320x.dts: /dts-v1/; /plugin/; / { compatible = "brcm,bcm2835", "brcm,bcm2708"; /* disable spi-dev for spi0.0 */ fragment@0 { target = <&spi0>; __overlay__ { status = "okay"; spidev@0{ status = "disabled"; }; }; }; fragment@1 { target = <&spi0>; __overlay__ { /* needed to avoid dtc warning */ #address-cells = <1>; #size-cells = <0>; mcp3x0x@0 { compatible = "mcp3008"; reg = <0>; spi-max-frequency = <1000000>; }; }; }; }; dts写好後用dtc编译: dtc -@ -I dts -O dtb -o mcp320x.dtb mcp320x.dts 然後把mcp320x.dtb copy到/boot/overlays/ 最後在/boot/config.txt加上:dtoverlay=mcp320x (跟我写的mcp320x.dtb做连结) 重开机後,只要mcp3008有接对应该就没问题了。 MPU6050(六轴陀螺仪) 一样根据 https://www.kernel.org/doc/Documentation/devicetree/bindings/iio/imu/inv_mpu6050.txt 来编辑mpu6050.dts // Definitions for MPU6050 /dts-v1/; /plugin/; / { compatible = "brcm,bcm2708"; fragment@0 { target = <&i2c1>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; clock-frequency = <400000>; inv-mpu6050@68 { compatible = "invensense,mpu6050"; reg = <0x68>; interrupts = <2 23>; //这行要看情况改不然IRQ有可能会冲到 }; }; }; }; 编译後放到/boot/overlays,/boot/config.txt上加入:dtoverlay=mpu6050 如果想要debug,可以在/boot/config.txt上加入:dtdebug=1 重开机後执行sudo vcdbg log msg 就可看device tree载入讯息: 参考资料: Device Tree 背景介绍 http://www.wowotech.net/linux_kenrel/why-dt.html Device Trees, Overlays and Parameters https://www.raspberrypi.org/documentation/configuration/device-tree.md https://patchwork.ozlabs.org/patch/464158/ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 90.27.173.93
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1437645786.A.774.html ※ 编辑: wtchen (90.27.173.93), 07/23/2015 18:04:54
1F:推 james732: 推 07/23 18:46
2F:推 openeyes222: dts和bootloader的关系呢? 07/23 19:14
3F:→ wtchen: 其实我还没有完全搞懂,有心得会再分享 07/24 00:30
4F:→ wtchen: 感谢提问。 07/24 00:31
5F:→ wens: dt 有 free electrons 的教学投影片,可以放一下 07/24 09:42
6F:→ wens: 目前有用到 overlay 的好像就 rpi 跟 beagle 系列而已? 07/24 09:43
7F:→ wens: 一种方式可能是你跟bootloader讲要什麽overlay, 他帮你合并 07/24 09:44
8F:→ wens: 到板子本身的 dt, 然後喂给 kernel 07/24 09:44
9F:推 onlywig: 推! 07/24 14:54
10F:推 zack2004: 推 07/24 20:10
※ 编辑: wtchen (86.200.13.228), 08/03/2015 23:30:16
11F:推 chadcoco1222: 推 08/09 00:54







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP