【linux】驅動-9-設備樹插件
- 2021 年 4 月 7 日
- 筆記
- /label/driver/09, /label/linux, /label/linux/driver, /label/lzm, linux, 小筆記, 嵌入式, 教程集合, 程式框架
前言
建議:去原文鏈接觀看,排版、觀感便於學習。
鏈接:
參考:用到野火提供的工具腳本。
9. Linux設備樹插件
設備樹插件(Dynamic DeviceTree)與 Linux4.4 後引入。
設備樹插件可以理解為設備樹的修補程式。可以動態載入到系統中,無需重新編譯整個設備樹。
9.1 格式
設備樹插件是有相對固定的格式的,相當於多穿一件衣服而已。
格式如下:
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target-path = "/";
__overlay__ {
/*在此添加要插入的節點*/
};
};
};
分析:
/dts-v1/
:指定 dts 版本。/plugin/
:表示設備樹插件中可以引用設備樹中的節點。因為這些節點在設備樹插件中是未定義的,所以,要加上本行code。target-path = "/";
:指定設備樹插件載入的位置。(默認在根節點下)- 我們要插入的設備及節點或者要引用(追加)的設備樹節點放在
__overlay__ {…};
內。 - 其它都是固定的。
9.2 設備樹插件的編譯和載入
9.2.1 單獨使用dtc工具編譯
設備樹和設備樹插件都是使用 DTC 編譯工具編譯。
設備樹編譯後得到的是 .dtb 文件;
而設備樹插件編譯後得到的是 .dtbo 文件。
使用野火提供的一鍵式編譯工具:
- 地址:git clone //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(卸載命令為:
sudo apt-get autoremove device-tree-compiler
), 重新安裝,然後在 ebf-linux-dtoverlays/basic/fixdep 文件的許可權, 修改許可權命令為:chmod 777 scripts/basic/fixdep
。
9.2.2 內核dtc工具編譯設備樹插件
編譯設備樹插件和編譯設備樹類似,這裡使用內核中的dtc工具編譯編譯設備樹插件。
編譯命令:內核構建目錄/scripts/dtc/dtc -I dts -O dtb -o xxx.dtbo xxx.dts
- 意為編譯 dts 為 dtbo
9.2.3 載入設備樹插件
先拷貝設備樹插件文件到開發板上。
9.2.3.1 使用 echo 命令載入
先在 /sys/kernel/config/device-tree/overlays/下創建一個新目錄,名字自定義。
然後將 dtbo 韌體 echo 到 path 屬性文件中或將 dtbo 的內容 cat 到 dtbo 屬性文件中。
echo xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/path
# 或
cat xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/dtbo
刪除設備插件:rmdir /sys/kernel/config/device-tree/overlays/xxx
。
9.2.3.2 uboot 載入
不同的板子可能不支援。
修改環境變數文件即可,進入/boot目錄下 修改 vim uEnv.txt