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/m.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