天天看點

【linux】驅動-9-裝置樹插件

目錄

前言

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

繼續閱讀