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:SPI/SPIDEV 问题

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/884031/tda4vm-spi-spidev-issue

器件型号:TDA4VM

您好!

 

在我们的定制板上、我们有一个可通过 SPI (SPI 从器件)进行配置的 ASIC。

此 ASIC 连接到 MCSPI0

 

焊珠       TDA4

A1      SPI0_CLK

Y4          SPI0_CS1

AB5       SPI0_D0

A3      SPI0_D1

 

我们目前使用修改后的 SDK 版本06_01_00_05 (根据我们的定制板进行了调整)

 

我的步骤:

 

arch/arm64/boot/dts/ti/k3-j721e-main.dtsi

 

MAIN_spi0:SPI@2100000{

兼容="ti、am654-mcspi"、"ti、omAP4-mcspi";

REG =<0x0 0x2100000 0x0 0x400>;

中断= ;

时钟=<&K3_CLKS 266 1>;

电源域=<&K3_PDS 266 TI_SCI_PD_Excluse>;

#address-cells =<1>;

#size-cells =<0>;

};

 

arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts

 

main_pmx0{

 

        (笑声)

 

        myspi1_pins_default:myspi1_pins_default{

                  pinctrl-single、pins =<

                          J721E_IOPAD (0x1c8、PIN_OUTPUT、0)/*(AA1) SPI0_CLK *

                          J721E_IOPAD (0x1c4、PIN_OUTPUT、0)/*(Y4) SPI0_CS1 *

                         J721E_IOPAD (0x1cc、PIN_INPUT、0)/*(AB5) SPI0_D0 */

                          J721E_IOPAD (0x1d0、PIN_OUTPUT、0)/*(Aa3) SPI0_D1 *

                  >;

        };

};

 

main_spi0{

状态="正常";

pinctrl-names ="default";

pinctrl-0 =<&myspi1_PINs_default>;

spidev@1{

SPI-max-frequency =<24000000>;

reg =<0>;

兼容="linux、spidev";

};

};


arch/arm64/configs/tisdk_j7-evm_defconfig

 

CONFIG_SPI=y

CONFIG_SPI_MASTER=y

CONFIG_SPI_SPIDEV=y

 

编译并重新引导后:

 

[1.308485]  spidev spi2.0:db车 DT:spidev 直接列在 DT 中

…μ A

[1.319201]  警告:CPU:1 PID:27、位于 drivers/SPI/spidev.c:730 spidev_prob+0x1cc/0x1e0

…μ A

[1.353314]  PC:spidev_prob+0x1cc/0x1e0

[1.357309]  LR:spidev_probe +0x1cc/0x1e0

…μ A

[1.446466]  spidev_probe +0x1cc/0x1e0

[1.450112]  SPI_drv_probe +0x7c/0xd8

…μ A

[1.484846]  SPI_ADD_DEVICE_0xac/0x168

 

 

root@j7-evm:~# ls -la /dev/spi

Crw---- 1根根根153、0 OCT 24 03:20 /dev/spidev2.0

 

 

root@j7-evm:~# ls -la /sys/class/spi

/sys/class/spi_master:

总计0

drwxr-xr-x 2 root 用户0 ocT 2403:20。

drwxr-xr-x 60 root 用户0 ocT 2403:20。

lrwxrwxrwx 1 root root 用户0 oct 24 03:20 SPI2 ->../../devices/platform/interconnect@100000/2100000.SPI/SPI_MASTER/SPI2

 

/sys/class/spidev:

总计0

drwxr-xr-x 2 root 用户0 ocT 2403:20。

drwxr-xr-x 60 root 用户0 ocT 2403:20。

lrwxrwxrwx 1 root root 用户0 oct 24 03:20 spidev2.0 ->../../devices/platform/interconnect@10000/2100000.SPI/SPI_MASTER/SPI2/spi2.0/spidev/spidev2.0

 

 

在下一步中、我将编写一个小 python 脚本以初始化和读取/写入数据。 但是、正如您看到的、存在错误。

 

根目录@J7-EVM:~# python

Python 2.7.16 (默认值、2019年10月24日、04:00:06)

[GCC 8.3.0]

键入"帮助"、"版权"、"信用"或"许可"以了解更多信息。

>>导入 spidev

回溯(最近一次调用最后一次):

文件" "、第1行、输入

ImportError:没有名为 spidev 的模块

>>>  

 

我的配置是否正确? 如您所见、日志显示了错误 DT 和警告。

 

非常感谢您的帮助、

Sergei

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

    您好、Sergei、

    下面的 Linux 驱动程序中的代码片段、了解您看到警告的原因。

    /*
    *在没有特定值的情况下、绝不能在 DT 中引用 spidev
    *兼容字符串、它是 Linux 实现方案
    *而不是对硬件的描述。
    *
    警告(SPI->DEV_NODE &&
    of _device_is 兼容(spi->dev.of _node、"spidev")、
    "%POF:db车 DT:spidev 直接列在 dT 中\n"、spi->dev.for_node);
    



    您看到的问题是 Linux 文件系统上存在 python 模块?



    此致、
    Vishal

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

    您好、Sergei、

    配置中有一个与芯片选择相关的不匹配。

    SPI 从节点具有:

    spidev@1{
        SPI-max-frequency =<24000000>;
        reg =<0>;
        兼容="";
    };

    但引脚多路复用器具有:
    J721E_IOPAD (0x1c4、PIN_OUTPUT、0)/*(Y4) SPI0_CS1 *

    如果从器件位于 CS1上、则设置:reg =<1>;
    如果从器件位于 CS0上、则引脚多路复用器错误、应配置 SPI0_CS0引脚。


    此致、
    Vishal