目錄
前言
9. Linux裝置樹插件
9.1 格式
9.2 裝置樹插件的編譯和加載
9.2.1 單獨使用dtc工具編譯
9.2.2 核心dtc工具編譯裝置樹插件
9.2.3 加載裝置樹插件
9.2.3.1 使用 echo 指令加載
9.2.3.2 uboot 加載
建議:去原文連結觀看,排版、觀感便于學習。
連結:
本文原文連結:https://www.cnblogs.com/lizhuming/p/14627195.html
李柱明部落格:https://www.cnblogs.com/lizhuming/
參考:用到野火提供的工具腳本。
裝置樹插件(Dynamic DeviceTree)與 Linux4.4 後引入。
裝置樹插件可以了解為裝置樹的更新檔。可以動态加載到系統中,無需重新編譯整個裝置樹。
裝置樹插件是有相對固定的格式的,相當于多穿一件衣服而已。
格式如下:
分析:
<code>/dts-v1/</code>:指定 dts 版本。
<code>/plugin/</code>:表示裝置樹插件中可以引用裝置樹中的節點。因為這些節點在裝置樹插件中是未定義的,是以,要加上本行code。
<code>target-path = "/";</code>:指定裝置樹插件加載的位置。(預設在根節點下)
我們要插入的裝置及節點或者要引用(追加)的裝置樹節點放在 <code>__overlay__ {…};</code> 内。
其它都是固定的。
裝置樹和裝置樹插件都是使用 DTC 編譯工具編譯。
裝置樹編譯後得到的是 .dtb 檔案;
而裝置樹插件編譯後得到的是 .dtbo 檔案。
使用野火提供的一鍵式編譯工具:
位址:git clone https://gitee.com/Embedfire/ebf-linux-dtoverlays.git
要編譯的裝置樹插件源檔案放在 ebf-linux-dtoverlays/overlays/ebf 目錄下, 然後回到編譯工具的根目錄 ebf-linux-dtoverlays/ 執行 make 即可。
生成的.dtbo位于 ~/ebf-linux-dtoverlays/output 目錄下。
注意:如果你在執行 make 後出現報錯,可以嘗試先解除安裝 device-tree-compiler(解除安裝指令為:<code>sudo apt-get autoremove device-tree-compiler</code>), 重新安裝,然後在 ebf-linux-dtoverlays/basic/fixdep 檔案的權限, 修改權限指令為:<code>chmod 777 scripts/basic/fixdep</code>。
編譯裝置樹插件和編譯裝置樹類似,這裡使用核心中的dtc工具編譯編譯裝置樹插件。
編譯指令:<code>核心建構目錄/scripts/dtc/dtc -I dts -O dtb -o xxx.dtbo xxx.dts</code>
意為編譯 dts 為 dtbo
先拷貝裝置樹插件檔案到開發闆上。
先在 /sys/kernel/config/device-tree/overlays/下建立一個新目錄,名字自定義。
然後将 dtbo 固件 echo 到 path 屬性檔案中或将 dtbo 的内容 cat 到 dtbo 屬性檔案中。
删除裝置插件:<code>rmdir /sys/kernel/config/device-tree/overlays/xxx</code>。
不同的闆子可能不支援。
修改環境變量檔案即可,進入/boot目錄下 修改 vim uEnv.txt