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.

[参考译文] Linux/AM4378:spidev woes -未创建 spidev 设备

Guru**** 2581725 points
Other Parts Discussed in Thread: AM4378

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631457/linux-am4378-spidev-woes---spidev-devices-not-being-created

器件型号:AM4378

工具/软件:Linux

大家好!

我们的 AM4378在 SPI2上连接了两(2)个开关。  开关[1]连接到芯片选择1 (AE17)。  开关[2]连接到芯片选择2 (AB19)。

除了我的引脚多路复用之外...

SPI2_INTERNAL_PINS_DEFAULT:SPI2_INTERNAL_PINS_DEFAULT{
  pinctrl-single、pins =<
    0x260 (PIN_INPUT | MUX_MODE0)/*(N20) SPI2_SCLK/SPI2_SCLK */
    0x264 (PIN_OUTPUT | MUX_MODE0)/*(P22) SPI2_d0.SPI2_d0 *
    0x268 (PIN_INPUT | MUX_MODE0)/*(P20) SPI2_D1.SPI2_D1 *
    0x1b0 (PIN_OUTPUT | MUX_Mode4)/*(AE17) cam0_HD.SPI2_CS1 */
    0x1c4 (PIN_OUTPUT | MUX_Mode4)//(AB19) cam0_data8.SPI2_CS2 */
  >;
};

引脚多路复用器外部 DTS 的摘录、设置 SPI2...

SPI2{
  pinctrl-names ="default";
  pinctrl-0 =<&SPI2_INTERNAL_PINS_DEFAULT>;
  状态="正常";

  CS-GPIO =<0>、<0>、<0>、<0>;
  //num-cs = 4;

  spidev@1{
    compatible ="linux、spidev";
    SPI-max-frequency =<25000000>;
    reg =<0x1>;
    状态="正常";
  };
  spidev@2{
      compatible ="linux、spidev";
      SPI-max-frequency =<25000000>;
      reg =<0x2>;
      状态="正常";
   };
};

在配置中、我有...

编号
# SPI 协议主器件
编号
CONFIG_SPI_SPIDEV=y

在/sy...中

root@AM437X-EVM:/sys# find。 -名称 SPI\*
/class/spidev
/class/spi_master
/firmware/devicetree/base/aliases/spi0
/firmware/devicetree/base/ocp@44000000 /自旋锁@480ca000
/firmware/devicetree/base/ocp@44000000/SPI@481a0000
/firmware/devicetree/base/ocp@44000000/SPI@48030000
/firmware/devicetree/base/ocp@44000000/SPI@48345000
/firmware/devicetree/base/ocp@44000000/SPI@481a2000
/firmware/devicetree/base/ocp@44000000/SPI@481a2000/spidev@1.
/firmware/devicetree/base/ocp@44000000/SPI@481a2000/spidev@1/SPI-max-frequency
/firmware/devicetree/base/ocp@44000000/SPI@481a2000/spidev@2.
/firmware/devicetree/base/ocp@44000000/SPI@481a2000/spidev@2/SPI-max-frequency
/firmware/devicetree/base/ocp@44000000 / L4_wkup@44c00000/SCM@210000/引脚多路复用器@800/SPI2_INTERNAL_PINS_DEFAULT
/firmware/devicetree/base/ocp@44000000/SPI@481a4000
/bus/spi
/bus/spi/drivers/spidev
/module/spidev

但我没有在/dev/dev 中创建 spidev 设备。

我尝试手动制作...

mknod /dev/spidev2.1 c 153 1.

(笑声) 创建了一个节点、但我无法在程序中打开它。

有关故障排除的任何想法、为什么设备未出现在/dev/dev 中?

谢谢!

Nathan

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

    udev 守护程序是否在您的系统中运行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为是这样...

    root@AM437X-EVM:~# ps -ef | grep udev
    根114 1 2 11:32? 00:00:01 /lib/systemd/systemd-udevd

    是否有更好的检查方法?

    Nathan

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

    在我启用了更多的头砰砰声后...

      CONFIG_SPI_OMAP24xx=y

    我以前以为是用 spidev 替换了 spidev。 我想他们是两个不同的 thingus。

    然后、我遇到了有关芯片选择超过最大 Cs 的错误。

    所以我添加了...
      TI、SPI-num-cs =<4>;
    (笑声) 到 SPI2

    现在、我在 dmesg 中获取它...
    [1.209866] SPI spi1.1:不对 McSPI 使用 DMA (-19)
    [1.215334] spidev spi1.1:db车 DT:spidev 直接列在 DT 中
    [1.226143]警告:CPU:0 PID:1 at drivers/SPI/spidev.c:757 spidev_prob+0x1ac/0x1cc
    [1.295503][ ](warn_slowpath_null)、来自[ ](spidev_probe +0x1ac/0x1cc)
    [1.303831][ ](spidev_probe)从[ ](SPI_drv_probe +0x84/b4)
    [1.318276][ ](SPI_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_0x20c/0x2b8)
    [1.413367][ ](device_add)从[ ](SPI_ADD_DEVICE_0xa4/0x13c)
    [1.431472][ ](SPI_ADD_DEVICE)从[ ](共_个寄存器_SPI_DEVICE_0x220/0x318)
    [1.445996][ ](of _register_spi_device)、来自[ ](SPI_REGISTER_MASTER+0x28c/0x488)
    [1.461994][ ](SPI_REGISTER_MASTER)、来自[ ](devm_SPI_register_master+0x40/0x78)
    [1.481681][ ](devm_spi_register_master)、来自[ ](OMAP2_mcspi_prob+0x2e0/0x36c)
    [1.496645][ ](OMAP2_mcspi_probe)、来自[ ](platform_drv_probe +0x58/b8)
    [1.607569][ ](__platform_driver_register)、来自[ ](OMAP2_mcspi_driver_init+0x1c/0x20)
    [1.620952][ ](OMAP2_mcspi_driver_init)、来自[ ](do_one _initcall+0x4c/0x178)
    [1.683875] SPI spi1.2:不对 McSPI 使用 DMA (-19)
    [1.689173] spidev spi1.2:db车 DT:spidev 直接列在 DT 中
    [1.699970]警告:CPU:0 PID:1 at drivers/SPI/spidev.c:757 spidev_probe + 0x1ac/0x1cc
    [1.770524][ ](warn_slowpath_null)、来自[ ](spidev_probe +0x1ac/0x1cc)
    [1.778846][ ](spidev_probe)从[ ](SPI_drv_probe +0x84/b4)
    [1.793295][ ](SPI_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_0x20c/0x2b8)
    [1.888372][ ](device_add)从[ ](SPI_ADD_DEVICE_0xa4/0x13c)
    [1.906486][ ](SPI_ADD_DEVICE)从[ ](共_个寄存器_SPI_DEVICE_0x220/0x318)
    [1.921003][ ](of _register_spi_device)、来自[ ](SPI_REGISTER_MASTER+0x28c/0x488)
    [1.937009][ ](SPI_REGISTER_MASTER)、来自[ ](devm_SPI_register_master+0x40/0x78)
    [1.956692][ ](devm_spi_register_master)、来自[ ](OMAP2_mcspi_prob+0x2e0/0x36c)
    [1.971644][ ](OMAP2_mcspi_probe)、来自[ ](platform_drv_probe +0x58/b8)
    [2.082576][ ](__platform_driver_register)、来自[ ](OMAP2_mcspi_driver_init+0x1c/0x20)
    [2.095956][ ](OMAP2_mcspi_driver_init)、来自[ ](do_one _initcall+0x4c/0x178)

     

    现在我有了器件!  是的!  /dev/spidev1.1和/dev/spidev1.2

     

    总之、您需要在 defconfig 中启用"SPI 主控制器驱动程序"(在我的案例中为 OMAP24xx)和"SPI 协议主控制器"(SPIDEV)、并且您需要告诉它有足够的芯片选择、然后在/dev/中 获取器件。

     

    现在、看看我是否可以与那里的器件进行实际通信...

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

    好的、您已经取得了进展。 您可以使用
    兼容="Rohm、dh2228fv";以避免出现以上警告。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Dwarakesh、我做到了。 不过、我仍然对它有疑问。 在此处查看我的帖子...

    e2e.ti.com/.../2331287