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.

TDA4VM: MAIN CAN在linux下找不到设备

Part Number: TDA4VM

您好:

TDA4VM,我的用的是main_can0,我的设备树配置如下:

在k3-j721e-main.dtsi

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
main_mcan0: can@2701000 {
compatible = "bosch,m_can";
reg = <0x00 0x02701000 0x00 0x200>,
<0x00 0x02708000 0x00 0x8000>;
reg-names = "m_can", "message_ram";
power-domains = <&k3_pds 156 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 156 0>, <&k3_clks 156 1>;
clock-names = "hclk", "cclk";
interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "int0", "int1";
bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

在k3-j721e-sk.dts里

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
main_mcan0_pins_default: main-mcan0-pins-default {
pinctrl-single,pins = <
J721E_IOPAD(0x208, PIN_INPUT, 0) /* (W5) MCAN0_RX */
J721E_IOPAD(0x20c, PIN_OUTPUT, 0) /* (W6) MCAN0_TX */
>;
};
main_mcan0_gpio_pins_default: main-mcan0-gpio-pins-default {
pinctrl-single,pins = <
J721E_IOPAD(0x108, PIN_INPUT, 7) /* (AD27) PRG0_PRU1_GPO2.GPIO0_65 */
>;
};
transceiver2: can-phy1 {
compatible = "ti,tcan1042";
#phy-cells = <0>;
max-bitrate = <5000000>;
pinctrl-names = "default";
pinctrl-0 = <&main_mcan0_gpio_pins_default>;
standby-gpios = <&main_gpio0 65 GPIO_ACTIVE_HIGH>;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是系统启动之后,通过命令 dmesg | grep can

[   32.432940] m_can_platform 40528000.can: m_can device registered (irq=19, version=32)

发现只有MCU_CAN0有注册成功,其他main_can都没有注册成功

麻烦帮忙看一下是否其他配置有问题导致main_can没有注册成功?

  • 您好,您的问题我们已升级到英文论坛寻求帮助,链接如下,请持续关注:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1248580/tda4vm-main-can-cannot-find-device-under-linux

  • 您好,请看如下答复:

    是否可以分享完整的boot log? 您是否看到主域可能发生故障或从未被探测到? 请检查是否在任何DTS文件中禁用了该节点? 

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    U-Boot 2021.01 (May 31 2023 - 23:00:10 +0800)
    SoC: J721E SR1.1 GP
    Model: Texas Instruments K3 J721E SoC
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed 1
    Board: J721EX-PM1-SOM rev E2
    DRAM: 4 GiB
    Flash: 0 Bytes
    MMC: sdhci@4f80000: 0, sdhci@4fb0000: 1
    env_driver_lookup..success..loc=5...Loading Environment from11 MMC... OK
    In: serial@2800000
    Out: serial@2800000
    Err: serial@2800000
    am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA00101 cpsw_ver: 0x6BA80100 ale_ver: 0x00293904 Ports:1 mdio_freq:1000000
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed 1
    cdns,sierra serdes@5000000: PHY not found 0x7364 vs 0x0
    Sierra init failed:-22
    Net: eth0: ethernet@46000000port@1
    Hit any key to stop autoboot: 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    以上是完整的BOOT LOG,没有看到有主域相关CAN信息报错的,DTS文件里也没有禁用这些 节点,DTS的配置如原始问题里的DTS配置一样

  • 请问设备树中是否启用了其他 CAN 实例?

  • main_can0没有,搜查了一遍就只有这个实例,MCU_CAN0倒是有注册成功,设备树中的实例方法是一致的。所以不知道哪里除了问题

  • 好的了解,已跟进给工程师。

  • 最近的几个问题麻烦都再催一下进展

  • 十分抱歉,该条产品线回复相对较慢。如在周五前仍没给到您相关答复,我们来催促下看看。

  • 您能分享您编译的 dtb 吗?

    k3-j721e-main.dts 将具有 main_mcan*实例,但这些实例是根据*.dts 启用/禁用的。

    除了 mcu_mcan0之外,并没有看到您为任何 MCAN 器件调用任何探测函数,这代表正在通过 DTS 禁用其他节点。 

  • 可以分享,但是我没有看到这里如何上传附件,能够把我编译的dtb文件上传上来,麻烦您给说明一下如何上传dtb文件

  • 您好,

    点击回复框中的插入--图像/视频/文件--点击灰色的“上传”按钮(或直接将您需要上传的文件拖曳进来即可)。

  • 不好意思,不知道为什么现在突然有能找到Mcan了,配置的也能生效了~也没改到设备树这块的东西

  • 没关系,您的问题解决了就好,之后您有问题欢迎您随时提问!

x 出现错误。请重试或与管理员联系。