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:是否有人让 enc28j60驱动程序在 drivers/net/microchip 目录中工作?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579562/linux-has-anyone-gotten-the-enc28j60-driver-working-in-the-drivers-net-ethernet-microchip-directory

工具/软件:Linux

您好!

我正在寻找任何有助于实现这一目标的器件树结构。 我在互联网上发现的所有内容似乎都不适用于 BeagleBone Black。 我想知道我的中断引脚可能配置不正确。 请参阅以下内容。

单击"固定     BBB 引脚    信号"         MODE   $引脚     ADDR/偏移     GPIO 编号

CS               P9.28         SPI1_CS0           3        103           0x99c/19c            113
SCK            P9.31         SPI1_SCLK        3         100           0x990/190           110
MISO           P9.29        SPI1_D0              3         101           0x994/194           111
MOSI           P9.30        SPI1_D1              3         102           0x998/198           112
int              P9.15         GPIO1_16      7          16             0x840/040           48

am33xx.dts

   OCP:OCP{

(笑声)

      SPI1:SPI@481a0000{
         兼容="ti、omAP4-mcspi";
         #address-cells =<1>;
         #size-cells =<0>;
         reg =<0x481a0000 0x400>;
         中断=<125>;
         TI、SPI-num-cs =<2>;
         ti、hwmods ="SPI1";
         DMA =<&EDMA 42 0
            EDMA 43 0 (&E)
            EDMA 44 0 (&E)
            EDMA 45 0>(&E);
         dma-names ="tx0"、"rx0"、"tx1"、"rx1";
         STATUS ="禁用";
      };

AM335x-bone-common.dtsi

am33xx_pinmux{(am33xx_pinmux)}
   (笑声)

   SPI1_Pins:pinmux_SPI1_Pins{
      pinctrl-single、pins =<
         0x190 0x33   /* McASP0_aclkx.SPI1_SCLK、INPUT_PULLUP | MODE3 */
         0x194 0x33   /* McASP0_FSX.SPI1_d0、INPUT_PULLUP | MODE3 */
         0x198 0x13   //* McASP0_axr0.SPI1_D1、output_pullup | MODE3 *
         0x19c 0x13   //* McASP0_ahclkr.SPI1_cs0、output_pullup | MODE3 *
      >;
   };

   GPIO_Pins:pinmux_GPIO_Pins{
      pinctrl-single、pins =<
         0x040 0x17   //* GPMC_a0.GPIO1_16、output_pullup | MODE7 */
      >;
   };
};

(笑声)

SPI1{(&S)
   状态="正常";
   pinctrl-names ="default";
   pinctrl-0 =<&SPI1_PINs>;

   #address-cells =<1>;
   #size-cells =<0>;

   /*添加此处连接的任何 SPI 设备*/
   /*请注意,您现在可以通过 spidev 直接执行 SPI */
   SPI1_0{
      #address-cells =<1>;
      #size-cells =<0>;
      兼容="微芯片、enc28j60";
      reg =<0>;
      SPI-max-frequency =<20000000>;
      interrupt-parent=<&GPIO_PINs>;
      中断=<48 0x2>;/*下降沿*/
      SPI-cpol;
      spi-cpha;
   };
};

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

    您是否检查了以下 e2e 线程?

    e2e.ti.com/.../378610
    e2e.ti.com/.../331869
    e2e.ti.com/.../321533
    e2e.ti.com/.../334717

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

    您好、Pavel、

    如果我将中断引脚切换至 GPIO1_15 (P8.15)、则它工作正常。 您知道如何配置 GPIO1_16 (P9.15)吗?

    GPIO1_15 (P8.15)

    SPI1{(&S)

        pinctrl-names ="default";

        pinctrl-0 =<&SPI1_PINs>;

        状态="正常";

        spidev2:SPI@0{

            兼容="微芯片、enc28j60";

            reg =<0>;

            SPI-max-frequency =<24000000>;

            中断=<15 2>;

            interrupt-parent =<&GPIO1>;

        };

    };

    GPIO1_16 (P9.15)

    SPI1{(&S)

        pinctrl-names ="default";

        pinctrl-0 =<&SPI1_PINs>;

        状态="正常";

        spidev2:SPI@0{

            兼容="微芯片、enc28j60";

            reg =<0>;

            SPI-max-frequency =<24000000>;

            中断=<16 2>;

            interrupt-parent =<&GPIO1>;

        };

    };

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

    您是否检查了引脚多路复用器? 检查寄存器 conf_GPMC_ad15/0x83c 和 conf_GPMC_a0/0x840。 确保[2:0]位中的值为0x7。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我是这样做的。 但是、我不知道为什么我不需要 GPIO1_15 (P8.15)的值0x7、该值仍然有效。
    即使我为 conf_GPMC_a0/0x840添加了0x7、我仍然无法使用 GPIO1_16 (P9.15)。
    此外、寄存器 conf_GPMC_ad15/0x83c 的用途是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CONF_GPMC_AD15/0x83C 用于选择 GPMC_AD15焊盘上的 GPIO1_15信号(ZCZ 封装的引脚 U13)。 在工作案例中、您在该寄存器中具有什么值?

    CONF_GPMC_a0/0x840用于选择 GPMC_A0焊盘上的 GPIO1_16信号(ZCZ 封装的引脚 R13)。 在非工作情况下、您在该寄存器中具有什么值?

    您是否使用 BeagleBoneBlack 或定制板?

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 BeagleBoneBlack。 我的寄存器设置值为0x17。
    我不使用 conf_GPMC_ad15/0x83C 来选择 GPIO1_15。 enc28j60仍然适用于我。
    但是、我更喜欢改用 GPIO1_16。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chihsing、

    让我澄清一下您的用例。 您有 BeagleBoneBlack 基板、并将您的 enc28j60芯片连接到 P8连接器、它工作正常、这是正确的吗?

    当您将 enc28j60芯片连接到 P9连接器时、它停止工作、这是正确的吗?

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pavel、
    正是这样、我尝试将我的 enc28j60芯片连接到 P9连接器、而不是 P8。
    现在、我尝试弄清为什么 P8不需要引脚多路复用值。 这是我的 P8 (GPIO1_15)、它运行良好。
    SPI1_Pins:pinmux_SPI1_Pins{
    pinctrl-single、pins =<
    0x190 0x33/* McASP0_aclkx.SPI1_SCLK、INPUT_PULLUP | MODE3 */
    0x194 0x33/* McASP0_FSX.SPI1_d0、INPUT_PULLUP | MODE3 */
    0x198 0x13//* McASP0_axr0.SPI1_D1、output_pullup | MODE3 *
    0x19c 0x13//* McASP0_ahclkr.SPI1_cs0、output_pullup | MODE3 *
    >;
    };
    SPI1{(&S)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&SPI1_PINs>;

    #address-cells =<1>;
    #size-cells =<0>;

    /*添加此处连接的任何 SPI 设备*/
    /*请注意,您现在可以通过 spidev 直接执行 SPI */
    SPI1_0{
    兼容="微芯片、enc28j60";
    reg =<0>;
    SPI-max-frequency =<12000000>;
    interrupt-parent=<&GPIO1>;
    中断=<15 0x2>;/*下降沿*/
    };
    };
    谢谢、
    Chia-Hsing
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chia-Hsing、

    您是否使用 AM335x TI PSDK? 如果是、是哪个版本?

    当您将 enc28j60连接到 P8时、您正在使用哪个引脚? 似乎您正在使用 SPI1 (cs0、d0、D1、SCLK)和 INTn (GPIO1_15)、但是否也使用 clkout 和 RESETn? 我是说您是否还将 enc28j60 clkout 和 RESETn 引脚映射到 AM335x 引脚?

    您能否使用 devmem2工具在用户空间提供 conf_GPMC_ad15/0x44E1083C 和 conf_GPMC_a0/0x44E10840寄存器的值?

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pavel、
    否 我不使用 TI SDK。 我在4.4.4.3版上运行。
    是的、如果我切换到 GPIO1_15 (P8.15)、我只使用了 cs0、d0、D1、SCLK 和 GPIO1_16 (P9.15)、它运行良好。 我想知道为什么我不能使用 P9.15。
    谢谢、
    温斯顿
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引述用户="Chihing Wu)]否 我不使用 TI SDK。[/quot]

    此论坛仅支持 TI SDK (Arago Linux)。 检查您是否可以切换到它、以便我们可以更好地帮助您。 BeagleBoard 社区论坛支持其他 Linux 发行版(Ubuntu、Debian 等)。

    [引用 USER="Chihing Wu']是的、我只是使用 cs0、d0、D1、SCLK 和 GPIO1_16 (P9.15)、如果我切换到 GPIO1_15 (P8.15)、它运行良好。 我想知道为什么我不能改用 P9.15 [/QUERPILE]

    检查 GPIO1_15和 GPIO1_16的引脚多路复用值是否相同。 探索 GPIO1模块寄存器、检查是否为 GPIO1_16启用了中断生成(类似于 GPIO1_15)。

    此致、
    帕维尔