Other Parts Discussed in Thread: TCA6424
器件型号: J722SXH01EVM
主题中讨论的其他器件: TCA6424
我们正在使用 Linux(在 A53 上)和 RTOS(在 MCU R5F 上)在 J722S EVM 上开发一个系统。
【问题】
RTOS 控制 STB MCAN (CAN-FD) 收发器的(待机)引脚、并 Low 通过 GPIO 将其设置为。 但是、在 Linux 启动并 RPMsg 准备就绪后、相应的 GPIO 引脚会意外切换到 High、从而停止 CAN 通信。
我们不打算在 Linux 端使用这个 STB 引脚;它应完全由 RTOS 控制。
【调查】
使用该 gpioinfo 命令、我们确认 line 17 的 gpiochip0(对应于) MCAN0_STB正在被“standby"占用“占用、并被 output high Linux 内核配置为。
gpiochip0 - 24 lines:
...
line 17: "MCAN0_STB" output consumer="standby"
此引脚位于tca6424上的 I2C GPIO 扩展器 () 上 i2c@20000000。
【我们尝试过的】
为了从 Linux 端禁用此引脚控制、我们在中尝试了几个设备树覆盖修改 k3-j722s-vision-apps.dts。 但是、这些方法都不会改变 gpioinfo 输出、并且问题仍然存在。
-
覆盖
pinctrl-0mcu_mcan0节点的属性以排除 STB 引脚定义。 -
standby-gpiosmcu_mcan0使用从节点中删除属性/delete-property/ standby-gpios;。 -
将
statusmcu_mcan0节点的设置为"disabled"。
即使将节点的状态设置为后 "disabled"、PIN 仍将作为“待机“使用。 这使我们认为问题可能源于更基本的内核行为、而这种行为无法通过简单的设备树叠加来解决。
【问题】
您能否提供正式的、推荐的方法来防止 Linux 内核控制 MCAN0_STB 引脚?
我们应如何修改器件树、内核配置或驱动程序源代码、以确保 RTOS 提供专用的 GPIO 控制?