This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在努力将 TCAN4550连接到 Raspberry Pi 3B+ 、但我似乎无法确定使 Linux 驱动程序正常工作的过程。 我已将内核更新为5.4.42、因此我可以告诉您应该内置驱动程序、但我无法确定如何与 TCAN4550进行实际通信。 如果有任何帮助,将不胜感激。
我尚未设置设备树绑定。 我正在尝试按照 https://www.raspberrypi.org/documentation/configuration/device-tree.md 上的说明 执行新的器件树绑定、但当我尝试在.dts 文件上使用 DTC 命令时、我创建了包含您发布的示例 tcan4x5x、我收到一个错误、说明 DTC 无法解析输入 树。 感谢您的帮助、
Nathan
示例中的器件树绑定特定于所使用的处理器和将要使用的 GPIO 线。 您将需要针对您的特定应用和硬件调整这些参数。 我建议按照器件树的另一个 Raspberry Pi 示例 ping GPIO 线路和 SPI、以帮助确定可能需要进行哪些修改。 TCAN4x5x 器件树绑定基于 TI 处理器而不是 Raspberry Pi。
此外、您能否发布您收到的特定错误消息、以帮助我们更好地了解您面临的特定问题、并帮助我们就可能的解决方案提供更具体的建议。
此致、
Jonathan
好的、我想我更接近修复、但我还没有解决。 我已调整 https://github.com/Ysurac/raspberry_kernel_mptcp/blob/master/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts 以适应导致此 DTS 文件的 tcan4x5x 器件树绑定。
/DTS-v1/; /plugin/; /{ 兼容="BRCM、BCM2835"、"BRCM、BCM2836"、"BRCM、bcm2708"、"BRCM、bcm2709"; /*禁用 spi0.0的 SPI-dev */ 片段@0{ 目标=<&spi0>; _overlay__{ 状态="正常"; }; }; 片段@1{ target =<&spidev0>; __overlay__{ status ="disabled"; }; }; /* CAN 控制器的中断引脚*/ 碎片@2{ Target =<&GPIO>; _overlay__{ tcan4x5x_pins:tcan4x5x_pins{ BRCM、引脚=<25>; BRCM、函数=<0>;/*输入*/ }; }; }; /* CAN 控制器本身的 SPI 配置将所有内容绑定在一起*/ 碎片@4{ 目标=<&spi0>; _overlay__{ /*需要避免 DTC 警告*/ #address-cells =<1>; 大小单元格=<1>; tcan4x5x:tcan4x5x@0{ 兼容="ti、tcan4x5x"; reg =<0>; pinctrl-names ="default"; pinctrl-0 =<&T 4x5x_pines>; SPI-max-frequency =<10000000>; Bosch、MRAM-cfg =<0x0 0 0 32 0 1 1>; interrupt-parent =<&GPIO>; 中断=<25 0x2>; }; }; }; _override__{ 振荡器=<&T 4x5x_osc>、"时钟频率:0"; spimaxfrequency =<&tcan4x5x>、"SPI-max-frequency:0"; 中断=<&tcan4x5x_pines>、"BRCM, pines:0"、<&tcan4x5x>、"interrupts:0"; }; };
然后、我将此 DTS 文件编译成 dtbo 文件、并将其放入 Raspberry PI 上的/boot/overlays 中。 我还需要做什么吗? 我没有收到任何错误、但我找不到如何访问 tcan4450、即使在器件树绑定有希望的情况下也是如此。
谢谢、
Nathan
如果有人验证我的 DTS 文件设置是否正确、我们将非常感谢您的帮助。
谢谢、
Nathan
您好、Nathan、
很抱歉耽误您的时间并忽略您之前的帖子。 我将查看您提供的文件、并在短期内进行跟进。
此致、
Jonathan
您好、Nathan、
我没有看到任何我认为您的 DTS 文件有问题的东西、我也向我们的开发人员进行了检查。 如果它没有提供任何编译错误、我们可以说的内容不多、没有可能显示不同内容的引导日志。
要访问 TCAN4550、您需要下载并构建 Linux CAN 实用程序 https://github.com/linux-can/can-utils。 这为 CAN 器件以及发送和接收数据包提供了接口。 这就是驱动程序的开发和测试方法、您可以通过此 IP 查看 CAN 接口。
这是一个 Wiki、您可以将其用作一般参考。 https://developer.ridgerun.com/wiki/index.php/How_to_configure_and_use_CAN_bus
加载 CAN-utils IP 后、我们的开发人员向我提供了一个在开发和验证过程中使用的一些命令列表、您可以使用参考来开始:
发送消息非 FD 消息
./IP 链路设置 CAN0 UP 类型 CAN 比特率50000
发送 CAN0 123#DEADBEEF
接收消息
/candump -A CAN0
设置 CAN FD 并生成大量数据包
./IP 链路设置 CAN0 UP 类型 CAN 比特率50000 dbitrate 2000000 FD 打开
/cangen CAN0 -g 0 -p 3 -i -f -e &
以下内容阻止 cangen 发送数据包
kill $(ps ax | grep -m 1 cangen | awk '{print$1}')
显示了 CAN 接口
/ip -d 链接显示 CAN0
此致、
Jonathan
在组合器件树覆盖时、我没有收到任何错误、但在引导日志中也找不到任何有关 CAN 的引用。 如果我的器件树覆盖设置不正确、我会收到错误、还是会静默失败? 我已随附引导日志和 config.txt、以查看是否有任何明显错误。
感谢您的帮助、
Nathan
您好、Nathan、
我们似乎需要从内核构建的 defconfig 中构建的.config、而不是 config.txt、因为它对于 TCAN 器件没有任何作用。 如果您可以提供、我们可以查看它。
此致、
Jonathan
您好、Nathan、
此外、请确保在构建时在 defconfig 中使用此选项。 这将告诉编译器编译驱动程序。 我们的开发人员没有看到任何与这两者相关的消息。
CONFIG_CAN_M_CAN=y
CONFIG_CAN_M_CAN_TCAN4X5X=y
或者、如果您希望它们作为模块:
CONFIG_CAN_M_CAN=m
CONFIG_CAN_M_CAN_TCAN4X5X=m
此致、
Jonathan
这是构建内核的.config 文件。 我添加了您提供的这些行、但我似乎仍然找不到任何有关 m_can 或 tcan4x5x 驱动器在系统中启动位置的参考。
您好、Nathan、
我们的开发人员唯一能想到的是、您可能没有将模块复制到器件中、您可以尝试使用内置模块而不是模块。 他建议尝试以下各项:
CONFIG_CAN_M_CAN=y
CONFIG_CAN_M_CAN_TCAN4X5X=y
此致
Jonathan