目錄
前言
建議:去原文連結觀看,排版、觀感便於學習。
連結:
參考:用到野火提供的工具指令碼。
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 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(解除安裝命令為:
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