linux内核合并dtb文件,c – 如何修改内核DTB文件
摘要
我目前正在使用一些自定義板的自定義驅動程序編譯Linux內核(內核,模塊和DTB).有時我會編譯內核并意識到DTB文件中的兼容性字符串不是自定義驅動程序要查找的內容.現在,我可以解決這個問題的唯一方法是修改DTS或內核驅動程序,使字符串匹配,然后再次重新編譯內核.有沒有辦法我可以編輯DTB文件來更新兼容性字符串?
嘗試失敗
我已經能夠使用以下命令將DTB文件反編譯回DTS文件:
dtc -I dtb -o .dts -.dtb
但是,如果我修改DTS文件并使用以下命令重新編譯:
dtc -I dts -o .dtb -.dts
內核不會加載重新編譯的DTB文件
解決方法:
你為什么不生成新的dtb?
DTB(設備樹blob /二進制)是表示板的硬件組件的硬件數據庫.
U-boot將板信息結構傳遞給內核,該內核源自U-Boot中的頭文件.
DTB由特殊編譯器編譯,該編譯器以適當的形式生成二進制文件,以便U-Boot和Linux理解.
DTC(設備樹編譯器)它將設備樹文件轉換為U-Boot和Linux內核可以理解的機器可讀二進制文件.
使用DTC的簡單方法.
$dtc -O dtb -o arm_board.dtb -b 0 arm_board.dts
從dtb獲取文本中的設備樹.
dtc -I dtb -O dts arm_board.dtb
board.dts是由上面的命令創建的二進制文件. -O指定輸出格式. -o flag是輸出文件. -b 0指定物理引導CPU.
然后做
$make ARCH=arm arm_board.dtb
另一種方法可能只是使用make dtbs這將調用dtc. arch / arm / boot / dts / Makefile列出了哪些DTB應該是
在構建時生成
這是另一種編譯方式. make會把它放在kernel tree / arch / arm / boot / dts的這個位置
標簽:c-3,linux,linux-kernel,arm,embedded-linux
來源: https://codeday.me/bug/20190522/1153629.html
總結
以上是生活随笔為你收集整理的linux内核合并dtb文件,c – 如何修改内核DTB文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 内核日志等级,Linux系统
- 下一篇: 管道半双工通信程序linux,Linux