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.

[参考译文] PROCESSOR-SDK-AM68A:如何为 AM68A 配置 spidev

Guru**** 1472385 points
Other Parts Discussed in Thread: AM68, SYSCONFIG, SK-TDA4VM, SK-AM68, TDA4VM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1313556/processor-sdk-am68a-how-to-configure-spidev-for-am68a

器件型号:PROCESSOR-SDK-AM68A
主题中讨论的其他器件:SK-AM68、AM68、 TDA4VM、SysConfig、SK-TDA4VM

您好!  

我 已尝试  按照 TI 专家提供的以下指导在我们自己的电路板上配置 SPI 器件接口(spidev)。

但是,spidev  不存在。  

我还尝试了   SK-AM68最新 SDK 上配置 SPI 器件接口(spidev)。

但 我也可以在/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

e2e.ti.com/.../4539931

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1188254/sk-tda4vm-spidev-not-showing-under-dev

请检查我的问题。  

下面是 我尝试的东西。  

  • 在我这边办理入住
    • root@am68a-sk:/sys/class # ls -l spi*
      SPI_MASTER:
      总计0
      lrwxrwxrwx 1根根根0 Apr 28 2022 spi5 ->../../devices/platform/bus@100000/2150000.spi/spi_master/spi5

      spidev:
      总计0
      root@am68a-sk:/sys/class

      root@am68a-sk:/dev# ls -l SPI*
      LS:无法访问'SPI*':无此类文件或目录

  • 设置信息
    • EVK:TI SK-AM68
    • SDK 版本:  tti-processor-sdk-linux-edgeai-j721s2-evm-09_01_00_06-Linux-x86-Install.bin
    • SDK 映像: tisdk-edgeai-image-j721s2-evm.wic.xz (预编译 EdgeAI 映像)+自定义内核我构建的内容(6.1.46-dirty )

  • 我试过的  
    • 更改了内核配置(arch/arm64/configs/defconfig)
      CONFIG_SPI_SPIDEV=y
      CONFIG_SPI_OMAP24xx=y
    • 更改了器件树文件
      k3-am68-sk-base-board.dtb ( 对于 spidev、i 已禁用 dss_vout0_PINS_DEFAULT 和 rpi_header_gpins_default 的引脚多路复用设置。)
      #include <dt-bindings/mux/ti-serdes.h>
      
      / {
              compatible = "ti,am68-sk", "ti,j721s2";
              model = "Texas Instruments AM68 SK";
      
              chosen {
                      stdout-path = "serial2:115200n8";
              };
      
              aliases {
                      serial2 = &main_uart8;
                      mmc1 = &main_sdhci1;
                      spi5 = &main_spi5;
              };
      .......................
      .......................
      &main_pmx0 {
      .......................
              spi5_pins_default: spi5-pins-default {
                      pinctrl-single,pins = <
                              J721S2_IOPAD(0x07C, PIN_INPUT, 8) /* (T27) MCASP0_AXR3.SPI5_CLK */
                              J721S2_IOPAD(0x070, PIN_INPUT, 8) /* (R27) MCAN1_RX.SPI5_D0 */
                              J721S2_IOPAD(0x088, PIN_INPUT, 11) /* (AD27) MCAN4_RX.SPI5_D1 */ 
                              J721S2_IOPAD(0x068, PIN_INPUT, 8) /* (U28) MCAN0_RX.SPI5_CS0 */
                              J721S2_IOPAD(0x064, PIN_INPUT, 8) /* (W28) MCAN0_TX.SPI5_CS1 */
                              J721S2_IOPAD(0x054, PIN_INPUT, 8) /* (Y27) MCASP2_ACLKX.SPI5_CS2 */
                              J721S2_IOPAD(0x058, PIN_INPUT, 8) /* (AA27) MCASP2_AFSX.SPI5_CS3 */
                      >;
              };
      .......................
      
      &main_spi5 {
              pinctrl-names = "default";
              pinctrl-0 = <&spi5_pins_default>;
              status = "okay";
      
              spidev@0 {
                      spi-max-frequency = <2000000>;
                      reg = <0>;
                      compatible = "linux,spidev";
              };
      };
      .......................
       

Tnanks、

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

    尊敬的 Jang:

    请给我一天时间,以便更深入地了解这一问题。

    可能会发生的一件事是 GPIO 的差异、因为 J721S2/AM68与大多数 E2E 和应用手册使用的 J721E/TDA4VM 略有不同。 另一点可能是 SDK 版本的差异。 我想我们过去试过的大多数示例都是在8.x SDK 上、因此9.0/9.1 SDK 中可能会发生更改、从而导致过去的一些示例失败。

    此致、

    大沼市

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

    您好、Takuma、  

    感谢您的更新。

    我将尝试使用8.x 版的 SDK 和 SK-AM68。  

    这里有一个拼写错误。  很抱歉让你困惑。

    我的错字-

    我还尝试了  在 SK-AM68 和 最新 SDK 上配置 SPI 器件接口(spidev)。

    但 我也可以在/dev 上找到 spidev。  ==>但我也无法在/dev 上找到 spidev。

    谢谢。  

    张。  

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

    尊敬的 Jang:

    仔细观察、似乎在软件层面上、大多数内容都已到位。 但是、如果使用默认 SDK 映像、我确实会看到与引脚多路复用有关的一些资源冲突问题。

    尤其是对于 AM68的 SPI5、CLK 线路由 DSS (也称为 display)使用: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts?h=ti-linux-5.10.y#n267。此外、MCAN 使用其中一条数据线: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts?h=ti-linux-5.10.y#n351。最后、各种不同的模块使用一些芯片选择。 每个器件只需要一根 CS、因此如果只连接单个器件、则可以删除 SPI5引脚多路复用中使用的 CS 线路。

    我的建议是两个选项:

    1. 继续使用 SPI5、但不具有显示屏。 如果删除显示节点和 MCAN 并为 SPI5释放引脚、则可以使用 SPI5。 大多数其他 SPI 接口还使用通过引脚多路复用来显示的时钟和数据线路。
    2. 通过 SysConfig 工具选择不同的 SPI 接口、如 SPI2、它使用 MCAN7、Main I2C1 (与用于 CSI 的 GPIO 扩展器有连接)的引脚以及40引脚 Raspberry Pi 接头的引脚来进行时钟和数据。 删除了此引脚多路复用、以便 SPI2能够自由使用这些引脚。

    此致、

    大沼市

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

    您好、Takuma、  

    感谢您的更新。  

    关于您的选项、  

    • #Option1、2: 实际上、在  创建此 TT 之前、我已经尝试过此功能。  我禁用了"所有 mcan 设备"、"ospi"和"DSS 显示节点"  

    您  是否可以确定是否可以通过使用 SDK 9.x 和您的两个选项来成功查看 spidev?

    我现在正在尝试使用 SDK 8.x。 我将分享我的身份。

    谢谢。  

    张。  

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

    您好、Takuma、  

    我共享我的调试状态。  

    我可以 使用  SDK 08_06_00_10 + SK AM68找到 spidev。   

    下面 是我捕获的日志。

    root@am68a-sk:/sys/class # ls -l spi*
    SPI_MASTER:
    总计0
    lrwxrwxrwx 1根根0 Mar 1 2023 spi10 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/40320000.spi/spi_master/spi10
    lrwxrwxrwx 1根根0 Mar 1 2023 spi11 ->../../devices/platform/bus@100000/2100000.spi/spi_master/spi11
    lrwxrwxrwx 1根根0 Mar 1 2023 spi12 ->../../devices/platform/bus@100000/2110000.spi/spi_master/spi12
    lrwxrwxrwx 1根根目录0 Mar 1 2023 spi13 ->../../devices/platform/bus@100000/2120000.spi/SPI_MASTER/spi13
    lrwxrwxrwx 1根根0 Mar 1 2023 spi14 ->../../devices/platform/bus@100000/2130000.SPI/SPI_MASTER/spi14
    lrwxrwxrwx 1根根0 Mar 1 2023 spi15 ->../../devices/platform/bus@100000/2140000.spi/spi_master/spi15
    lrwxrwxrwx 1根根0 Mar 1 2023 spi16 ->../../devices/platform/bus@100000/2160000.spi/spi_master/spi16
    lrwxrwxrwx 1根根0 Mar 1 2023 spi17 ->../../devices/platform/bus@100000/2170000.spi/spi_master/spi17
    lrwxrwxrwx 1根根0 Mar 1 2023 spi5 ->../../devices/platform/bus@100000/2150000.spi/spi_master/spi5
    lrwxrwxrwx 1根根0 Mar 1 2023 spi6 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.SYSCON/4704000.SPI/SPI_MASTER/spi6
    lrwxrwxrwx 1根根0 Mar 1 2023 spi7 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/47000000.SYSCON/4705000.SPI/SPI_MASTER/spi7
    lrwxrwxrwx 1根根0 Mar 1 2023 spi8 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/40300000.spi/spi_master/spi8
    lrwxrwxrwx 1根根0 Mar 1 2023 spi9 ->../../devices/platform/bus@100000/bus@100000:bus@28380000/4031000.spi/SPI_MASTER/spi9

    spidev:
    总计0
    lrwxrwxrwx 1根根0 Mar 1 2023 spidev5.0 ->/../devices/platform/bus@100000/2150000.spi/spi_master/spi5/spi5.0/spidev/spidev5.0
    root@am68a-sk:/sys/class cd /dev/
    root@am68a-sk:/dev# ls -l SPI*
    crw------- 1根153, 0一月18 05:11 spidev5.0
    root@am68a-sk:/dev# uname -a
    Linux am68a-sk 5.10.162-g76b3e88d56 #1 SMP 抢占 Thu Jan 18 15:48:30 KST 2024 Aarch64 Aarch64 GNU/Linux
    root@am68a-sk:/dev#

    谢谢。  

    张。  

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

    尊敬的 Jang:

    感谢您在8.6上试用并感谢您提供的信息。 我需要花一天时间自行尝试一下、并为9.x SDK 收集一些初始信息。

    此致、

    大沼市

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

    尊敬的 Jang:

    我目前正在设置一些实验、但与此同时、您能否检查何时使用9.x SDK、SPI 的内核模块是否加载了 modprobe?

    要列出 SPI 相关模块、可以使用以下命令:

    • 查找/lib/modules /$(uname -r)-type f -name '*.ko'| grep -i spi

    然后查看调制这些是否为9.x SDK 生成了错误。

    此致、

    大沼市

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

    尊敬的 Jang:

    我做了一些实验、还看到了与9.0.1 SDK 相同的问题。 由于我能立即使用 SK-TDA4VM 作为器件、但我认为我能够重现此处的问题并制作补丁来获取基本功能。

    您能否尝试在对器件树所做的更改之上应用此单线修补程序?

    e2e.ti.com/.../0001_2D00_adding_2D00_linux_2D00_spidev_2D00_device_2D00_tree_2D00_compatibility_2D00_into_2D00_s.patch

    用于将驱动程序与设备树中的设备匹配的 spidev_probe 函数中似乎发生了更改、这可能导致 spidev 不在/dev 文件夹下出现。

    请告诉我这是否会改善您在适用于 SK-AM68的9.x SDK 上看到的行为、因为驱动程序应该在 SK-AM68和 SK-TDA4VM 之间共享。

    此致、

    大沼市

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

    您好、Takuma、

    感谢您给我这个好消息。

    我将在下星期一尝试安装您的补丁。 我会向您提供反馈。

    谢谢。

    张。

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

    您好、Takuma、  

    此问题已通过您的补丁解决。  

    谢谢。  

    张。

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

    尊敬的 Siwon:

    很高兴听到这个消息!

    此致、

    大沼市