sclsql
1
你好,
我们准备将 SPI1_SCK pin,配置成 GPIO 模式并进行控制。我们在 extlinux.conf 中,修改如下:
OVERLAYS /boot/jetson-io-hdr40-user-custom.dtbo, /boot/my_custom_overlay.dtbo
my_custom_overlay.dts 这样写:
/dts-v1/;
/plugin/;
/ {
compatible = “nvidia,p3768-0000+p3767-0000”;
fragment@0 {
target-path = "/pinmux@2430000";
__overlay__ {
spi1_sck_pz3_gpio: spi1_sck_pz3 {
nvidia,pins = "spi1_sck_pz3";
nvidia,function = "rsvd1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
}
};
};
};
然后,将 dts 文件转为 dto 文件,并放在 /boot 目录下。重启系统后,使用如下命令去查看:
cat /sys/kernel/debug/pinctrl/2430000.pinmux/pins | grep pin133
结果:
pin 133 (SPI1_SCK_PZ3) 133:tegra234-gpio 2430000.pinmux
发现 SPI1 没有变成期望的 SOC_GPIOXX_PZ3,这样 OVERLAY 应该没有起到作用。
请问一下,应该如何修改,才能将 SPI1_SCK_PZ3 配置为 GPIO ?
Could you specify it as following instead?
OVERLAYS /boot/jetson-io-hdr40-user-custom.dtbo /boot/my_custom_overlay.dtbo
sclsql
4
你好,
多谢回应!
我试过了。还是不行。
在 6.2 版本下,无法通过 jetson-io 来单独修改 40 pin 的功能,我们又不想重新烧录系统,应该只能修改 overlay 来解决吧?
sclsql
5
目前看起来,直接去修改 jetson-io-hdr40-user-custom.dtbo(先转成 dts),按上面的 gpio 格式撰写新代码,更容易一些。
sclsql
6
我之前对 cat /sys/kernel/debug/pinctrl/2430000.pinmux/pins 的显示结果有误会,以为在正确配置后,SPI1_SCK_PZ3 可以变成 SOC_GPIOXX_PZ3, 在搜寻了定义相关文件后,我发现 SOC_GPIOXX_PZ3 并不存在。 目前 pinmux-pins 可以在提示 pin 是 SPI 配置:
如果利用 jetson-io.py 将 SPI1_SCK_PZ3 配置为 SPI :
sudo cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinmux-pins
pin 133 (SPI1_SCK_PZ3): 2430000.pinmux (GPIO UNCLAIMED) (HOG) function spi1 group spi1_sck_pz3
如果不配置为 SPI ,
则结果是:
pin 133 (SPI1_SCK_PZ3): (MUX UNCLAIMED) (GPIO UNCLAIMED)
注意: 看到这种情况,不意外着该 PIN 可以用 gpioset 操作,实际上还得修改配置文件,最简单的办法就是在 jetson-io-hdr40-user-custom.dtbo (先转成 dts)的基础上进行修改:
以 PIN-7(144) 为例(刚才 PIN23 已切成 SPI 模式了, 用 PIN-7 做测试)
hdr40-pin7 {
nvidia,pins = “soc_gpio59_pac6”;
nvidia,tristate = <0x0>;
nvidia,enable-input = <0x1>;
nvidia,pull = <0x0>;
};
然后将修改好的 dts 转回 dtbo,覆盖之前的 jetson-io-hdr40-user-custom.dtbo,重启即可。
另需注意:
- 由于修改了 jetson-io-hdr40-user-custom.dtbo, jetson-io.py 会闪退,如果想恢复,得删掉 jetson-io-hdr40-user-custom.dtbo,重新生成即可
- 如果用 C/PYTHON 编程,问题不大,如果用 gpioset 命令,需要用 –mode==wait
sclsql
7
以上方法只是临时测试用,希望能提供更方便可靠的方式。
It seems the expected workflow to update the configuration on runtime device as you don’t want to reflash the board.