如何增加设备节点

为什么内核编译后将 kernal_tegra234-p3701-0005-p3737-0000.dtb 删除后,再运行nvbuild.sh 不再生成次文件了,除非把编译的产物全删掉,再重新编译,才会生成次文件

make看的是你的source code有沒有變動,不是編譯出來的檔案
你隨便加一行空白再run一次應該就有反應了

我试过 变更相关的dtsi文件是不可以的;难道必须变更kernal的源码?

dtsi只是標頭檔,就像你在C code改.h檔不會觸發make重新編譯一樣
如果你還是搞不懂原理的話就請每次都make clean再make

CVM 和 CVB 分别是什么的缩写?我试过改内核下的.c文件,在执行build.sh,依旧没有 kernal_tegra234-p3701-0005-p3737-0000.dtb

你要關心的是.dts檔,不是.c檔…

变更tegra234-p3701-0000-p3737-0000.dts这个文件不会生成 kernal_tegra234-p3701-0005-p3737-0000.dtb,这怎么解释

那就請你整包檔案刪掉再重新編譯

ok, CVM 和 CVB 分别是什么意思

CVM是module
CVB是base board (底板)

我现在还是无法定位在哪里添加自定义的设备节点 和 以什么形式添加设备节点 :(

…請問你到底要加什麼

我就想添加一个自定义的gpio的节点,实现翻转的功能,从而熟悉下整个流程,但我现在还是办不到

我問一個最基本的問題好了…你現在知道哪個dtb會被燒進你的module了嗎…

我理解这个设备树应该有3层,最底层是pinmux和gpio的设备树,这层由电子表自动生成;中间层是控制器的设备树,nvidia已经实现了所有芯片控制器的设备描述,最上层就是用户自定义的设备树,用户自定义设备树中的设备节点应该会引用中间层的设备节点名,不知道我理解的对不;如果是这样的,我现在就不知道如何编写自己的上层设备树,和把它放在哪个path/

最终是tegra234-p3701-0005-p3737-0000.dtb会被烧录,他的源文件是tegra234-p3701-0000-p3737-0000.dts,但此文件会include 很多的dtsi,我知道在他们其中的任何一个dtsi下添加内容就会生效,但这样做会很乱

那你就直接加在tegra234-p3701-0005-p3737-0000.dts不就行了… 你的問題應該是你根本不知道自己要加什麼吧…

我试过以这样的形式添加,但是烧录后并没有找到
gpio-keys {
compatible = “gpio-keys”;
gpio-keys,name = “gpio-keys”;
status = “okay”;

	forcerecovery {
		label = "force-recovery";
		gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
		linux,code = <BTN_1>;
	};

我想你欠缺的應該是你不知道自己build好的device tree有沒有正確被更新到板子上吧…

我试过用 dtc -I dtb -O dts 的命令操作tegra234-p3701-0005-p3737-0000.dtb,但是没有我自定义的字符串