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/AM5728:驱动程序中的 SPI 配置

Guru**** 2957270 points

Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/675017/linux-am5728-spi-configuration-in-driver

器件型号:AM5728

工具/软件:Linux

您好、先生、

我有一个包含 AM5728 Sitara 处理器的定制板。

我正在使用 SPI 1、2、3、4全部。 我修改了 DTB 文件、能够在/dev/.中查看用户空间中的所有 SPI 器件

但我的问题是、我希望在 spidev.c 中配置 SPI 1、并且不希望对用户空间产生任何干扰。 如何在驱动程序本身中配置 SPI 1我必须做哪些更改?

谢谢、此致、

Hiren

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

    有关如何配置 McSPI 内核驱动程序、请参阅以下 wiki:

    processors.wiki.ti.com/.../Linux_Core_SPI_User's_Guide

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

    感谢您的回复。
    我已经阅读了该文档。

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

    [引用 user="Hiren Gohel"]如何在驱动程序中配置 SPI 1我必须做哪些更改?

    您能否提供有关您需要了解的内容的更多详细信息?

    此致、
    帕维尔

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

    我想在 spidev.c 中写入2个函数、这样它应该在 SPI 1线路上写入和接收数据。
    对于该引脚多路复用、所有引脚都已完成、我能够在/dev/中 的 userspace 中看到这全部4行、但我想在驱动程序中编写2个函数、我将在其他驱动程序中执行所有这些函数。

    那么、我不确定如何仅使用 SPI 1编写函数?

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

    Hiren、

    当您希望发送和接收 SPI 消息时、可以使用 spidev 驱动程序。 Spidev 提供了一种用户空间可访问的方式来与 SPI 接口进行通信。 Spidev 驱动程序允许用户以各种可与内核 ioctls 通信的编程语言与 SPI 接口进行交互。

    在内核源代码中、linux-kernel/tools/spi/spidev_test.c 是内核中的一个测试应用程序、可以交叉编译该应用程序以显示与 SPI 外设交互的 C 应用程序。 另一个 spidev 示例位于:linux-kernel/tools/spi/spidev_fdx.c

    另请参阅以下指针:

    Linux-kernel/Documentation/SPI/spidev

    elinux.org/BeagleBone_Black_Enable_SPIDEV
    www.emcraft.com/.../accessing-spi-devices-in-linux
    armbedded.taskit.de/.../318

    要仅使用 SPI1,应检查映射到哪个 spidev 节点(即/dev/spidev1.0),然后仅使用此节点。

    此致、
    帕维尔

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

    我明白了、但我不想在用户空间中使用 SPI1、但创建了 spidev1.0节点。
    我想在 spidev.c 中实现2个函数(my_read 和 my_write、而不是文件操作、一个执行读取和写入的简单函数、所有 cconfig 均已完成)、我将在另一个驱动程序中调用这些函数。

    假设我在某些 xyz.ko 中调用此函数、如果我调用 my_write、那么它应该只通过 SPI1将数据写入从器件。

    主席先生,希望你能理解,如果不能,请问我更详细地说明。

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

    spidev.c 是用于连接 SPI 器件的用户空间接口、它支持使用正常的用户空间 I/O 调用访问 SPI 器件。

    如果只需要从内核空间使用 SPI、则可以使用 SPI 内核 API、其中包括诸如 SPI_READ()、SPI_write()、SPI_setup()等内核函数

    Linux-4.9.59/Documentation/SPI/SPI-summary

    linux-4.9.59/drivers/spi/spi.c
    Linux-4.9.59/include/Linux/SPI/spi.h

    有关示例、请参阅以下 e2e 线程:

    e2e.ti.com/.../469863
    e2e.ti.com/.../653566
    e2e.ti.com/.../599826
    e2e.ti.com/.../518439

    此致、
    帕维尔