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-Q1:J721e

Guru**** 2487425 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1436992/tda4vm-q1-j721e

器件型号:TDA4VM-Q1

工具与软件:

您好、TI、 迫切需要支持

我需要启用 MCSPI3功能、TDA4是主设备。  我遵循了本文档的操作、并模仿 SPI6来设置 SPI3。 结果是未生成/dev/下 的 spidev 节点。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/947437/faq-ccs-tda4vm-how-to-use-spi-spi_dev-on-tda4-j721e

root@j721e-evm:~ ls -l /sys/class/spi
/sys/class/spi_master:
总计0
lrwxrwxrwx 1根根0 2月27日17:26 spi0 ->../../devices/platform/bus@100000/2130000.spi/spi_master/spi0
lrwxrwxrwx 1根0 2月27日17:26 SPI1 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.bus/47040000.SPI/SPI_MASTER/SPI1

/sys/class/spi_slave:
总计0

/sys/class/spidev:
总计0

SDK 是 "ti-processor-sdk-linux-adas-j721e-evm-10_00_00_08-linux-x86-Install"

    

linux/board-support/ti-linux-kernel-6.6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
加法:
+spi3_pins_defaultspi3_pins_default
+pinctrl-single、pins =<
+J721E_IOPAD (0x144PIN_INPUT4)/*(Y25) PRG0_PRU1_GPO17.SPI3_CLK */
+J721E_IOPAD (0x148PIN_INPUT4)/*(AA26) PRG0_PRU1_GPO18.SPI3_D0 */
+J721E_IOPAD (0x14cPIN_INPUT4)/*(AA29) PRG0_PRU1_GPO19.SPI3_D1 */
+J721E_IOPAD (0x11cPIN_INPUT4)/*(AA24) PRG0_PRU1_GPO7.SPI3_CS0 */
+>;
+};
+&main_spi3
+pinctrl-names ="默认值"
+pinctrl-0 =<&spi3_PINS_DEFAULT>
+status ="好"
+spidev@0
+spi-max-Frequency =<24000000>
+reg =<0>
+compatible ="linux、spidev"
+};
+};
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更多信息

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sijia:

    似乎驱动程序中有一些更改、使得常见问题解答有点过时。 您能否参考以下补丁? 具体而言、添加行"{.compatible ="linux、spidev"、.data =&spidev_of_check}"的最后一部分。

    e2e.ti.com/.../7674.0001_2D00_Enable_2D00_main_5F00_spi6_2D00_for_2D00_J7200_2D00_9.2_2D00_SDK.patch

    过去、spidev 兼容字段可以在以前的 Linux 内核中使用、如下所示: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/spi/spidev.c?h=ti-linux-5.10.y#n744

    但是、在较新的内核中、他们实施了更严格的检查来强制执行正确的 spidev 兼容字段: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/spi/spidev.c?h=ti-linux-6.6.y#n721

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Takuma、我曾尝试将补丁添加到 spidev.c、但它仍然不起作用。

    "root@j721e-evm:~ ls -l /sys/class/spi
    /sys/class/spi_master:
    总计0
    lrwxrwxrwx 1根根0 2月27日17:26 spi0 ->../../devices/platform/bus@100000/2130000.spi/spi_master/spi0
    lrwxrwxrwx 1根0 2月27日17:26 SPI1 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.bus/47040000.SPI/SPI_MASTER/SPI1

    /sys/class/spi_slave:
    总计0

    /sys/class/spidev:
    总计0

    root@j721e-evm:~ ls -l /dev/spi
    LS:无法访问"/dev/spi *":没有此类文件或目录
    ROOT@j721e-EVM:~Ω#"

    以下是对我的项目中 dts 和 spidev.c 的修改。  SDK 是 "ti-processor-sdk-linux-adas-j721e-evm-10_00_00_08-linux-x86-Install"

      

    --- /home/sijia/Linux_SDK/board-support/ti-linux-kernel-6.6.32+git-ti/drivers/spi/spidev.c	2018-03-09 20:34:56.000000000 +0800
    +++ /home/sijia/TDA4_SDK/Linux/board-support/ti-linux-kernel-6.6.32+git-ti/drivers/spi/spidev.c	2024-11-13 11:02:24.822241076 +0800
    @@ -732,6 +732,7 @@
     }
     
     static const struct of_device_id spidev_dt_ids[] = {
    +	{ .compatible = "linux,spidev", .data = &spidev_of_check },
     	{ .compatible = "cisco,spi-petra", .data = &spidev_of_check },
     	{ .compatible = "dh,dhcom-board", .data = &spidev_of_check },
     	{ .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check },
    

    --- /home/sijia/Linux_SDK/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts	2018-03-09 20:34:56.000000000 +0800
    +++ /home/sijia/TDA4_SDK/Linux/board-support/ti-linux-kernel-6.6.32+git-ti/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts	2024-11-13 10:19:44.085397874 +0800
    @@ -334,6 +334,15 @@
     			J721E_IOPAD(0x200, PIN_INPUT, 7) /* (AC4) UART1_CTSn.GPIO0_127 */
     		>;
     	};
    +
    +	spi3_pins_default: spi3_pins_default {
    +        pinctrl-single,pins = <
    +            J721E_IOPAD(0x144, PIN_INPUT, 4) /* (Y25) PRG0_PRU1_GPO17.SPI3_CLK */
    +            J721E_IOPAD(0x148, PIN_INPUT, 4) /* (AA26) PRG0_PRU1_GPO18.SPI3_D0 */
    +            J721E_IOPAD(0x14c, PIN_INPUT, 4) /* (AA29) PRG0_PRU1_GPO19.SPI3_D1 */
    +            J721E_IOPAD(0x11c, PIN_INPUT, 4) /* (AA24) PRG0_PRU1_GPO7.SPI3_CS0 */
    +        >;
    +    };
     };
     
     &wkup_pmx0 {
    @@ -995,3 +1004,16 @@
     			>;
     	};
     };
    +
    +&main_spi3 {
    +	status = "okay";
    +    pinctrl-names = "default";
    +    pinctrl-0 = <&spi3_pins_default>;
    +    
    + 
    +    spidev@0 {
    +        spi-max-frequency = <24000000>;
    +        reg = <0>;
    +        compatible = "linux,spidev";
    +    };
    +};
    \ No newline at end of file

    在我修改后,我执行了

    #make linux

    然后执行

    #sudo make linux_install   

    以更新我的 SD 卡。

    下面是启动日志

    e2e.ti.com/.../2555.start_5F00_log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sijia:

    可能最新的内核发生了一些变化。 附加的补丁适用于使用6.1 Linux 内核的9.2 SDK。 您可以在2个工作日内让我看看我是否可以将补丁移植到10.0 SDK?

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、感谢您的支持、等待新闻发布。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sijia:

    看起来10.0 SDK 中使用的6.6 Linux 内核中有一些针对 spidev 的附加检查、并且兼容字段需要是唯一的。

    e2e.ti.com/.../0001_2D00_J721E_2D00_TDA4VM_2D00_10.0_2D00_SDK_2D00_enable_2D00_spi3.patch

    ^您可以尝试上述补丁吗? 我看到 spidev 在/dev/下 创建。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Takuma

      它的工作原理是这样。 非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fei:

    您是否与 Sijia 合作?  主要是 尝试看看我是否可以假设这是否在 Sijia 描述的同一个 SDK 和系统上。

    在任何情况下、spidev_test 都是上游 Linux 中的应用程序。 所以源代码可从以下位置获得: https://github.com/torvalds/linux/blob/master/tools/spi/spidev_test.c

    仔细查看源代码、您似乎可以为 spidev_test 指定每个字参数的"BPW"位。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Takuma、

    是的、我们是一个团队、专注于处理相同的 SPI 问题、我们尝试每个字8或16位、但 RX 仍然为零、spidev_test 具有定义 BPW 8位

    BR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fei:  

    我们关闭该主题、继续查看下一主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1441122/tda4vm-q1-spidev_test-rx-fail

    听起来您将 RX 混合为0以及每个字的位问题。

    此致、

    Takuma