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.

[参考译文] WL1801MOD:将 WiLink 集成到 Linux 时出现的问题

Guru**** 2390755 points
Other Parts Discussed in Thread: WL1801, AM3352

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/730027/wl1801mod-issues-integrating-wilink-to-linux

器件型号:WL1801MOD
Thread 中讨论的其他器件:WL1801AM3352

这是我们目前为止在 WiLink - WL1801集成方面所做的工作的报告:

 

-我们的硬件工程师仔细检查了 WL1801组件的硬件设计、发现没有任何问题。

 

-在软件方面,我遵循了 wiki 中提供的说明,最后进行了以下修改:

 

-相关内核配置:

CONFIG_WLAN=y

CONFIG_WLAN_VENDOR_TI=y

CONFIG_WL18XX=m
CONFIG_WLCORE = m
CONFIG_WLCORE_SDIO=m
CONFIG_WiLink_platform_data=y

 

-相关设备树配置:

/*作为 CPU 节点的子节点*/

 wlan_en_regulator:fixedregulator2{
    兼容="稳压器固定";
    reguler-name ="wlan-en-regulator ";
    稳压器最小微伏=<1800000>;
    稳压器最大值微伏=<1800000>;
    启动延迟-us =<70000>;
    GPIO =<&GPIO2 1 GPIO_ACTIVE_HIGH>;/*<-已检查(引脚 V12)*/
    使能端高电平有效;
};
/*作为 am33xx-pinmux 节点的子节点*/

mmc0_PINS_DEFAULT:pinmux_mmc0_PINS_DEFAULT{
    pinctrl-single、pins =<
      0x100 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G17) mmc0_clk.mmc0_clk *
      0x104 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G18) mmc0_cmd.mmc0_cmd *
      0x0fc (PIN_INPUT_PULLUP | MUX_MODE0)/*(G16) mmc0_data0.mmc0_data0 */
      0x0f8 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G15) mmc0_data1.mmc0_data1 */
      0x0f4 (PIN_INPUT_PULLUP | MUX_MODE0)/*(F18) mmc0_data2.mmc0_data2 *
      0x0f0 (PIN_INPUT_PULLUP | MUX_MODE0)/*(F17) mmc0_data3.mmc0_data3 *
    >;
};

mmc0_PINS_SLEEP:pinmux_mmc0_PIN_SLEEP{
    pinctrl-single、pins =<
      0x100 (PIN_INPUT 下拉| MUX_MODE7)/*(G17) mmc0_clk.mmc0_clk *
      0x104 (PIN_INPUT 下拉| MUX_MODE7)/*(G18) mmc0_cmd.mmc0_cmd *
      0x0fc (PIN_INPUT_PULLDOWN | MUX_MODE7)/*(G16) mmc0_data0.mmc0_data0 */
      0x0f8 (PIN_INPUT 下拉| MUX_MODE7)/*(G15) mmc0_data1.mmc0_data1 */
      0x0f4 (PIN_INPUT 下拉| MUX_MODE7)/*(F18) mmc0_data2.mmc0_data2 *
      0x0f0 (PIN_INPUT 下拉| MUX_MODE7)/*(F17) mmc0_data3.mmc0_data3 */
    >;
};

wlan_pins_default:pinmux_wlan_pins_default{
    pinctrl-single、pins =<
      0x08C (PIN_OUTPUT 下拉| MUX_MODE7) /*(V12) WLAN_EN   GPMC_clk.GPIO2[1]*/
      0x088 (PIN_INPUT          | MUX_MODE7) /*(T13) WLAN_IRQ  GPMC_csn3.GPIO2[0]*/
    >;
};

wlan_pins_sleep:pinmux_wlan_pins_sleep{
    pinctrl-single、pins =<
      0x08C (PIN_OUTPUT 下拉| MUX_MODE7) /*(V12) WLAN_EN   GPMC_clk.GPIO2[1]*/
      0x088 (PIN_INPUT          | MUX_MODE7) /*(T13) WLAN_IRQ  GPMC_csn3.GPIO2[0]*/
    >;
};

/*将 mmc0引脚用作 SDIO。 *

mmc1{(&M)
 DMA =<&EDMA_Xbar 12 0 1
         EDMA_Xbar 13 0 2>;
 dma-names ="TX"、"Rx";
 状态="正常";
 VMMC-SUPPLY =<&WLAN_en_regulator >;
 总线宽度="4";
 pinctrl-names ="default"、"sleep";
 pinctrl-0 =<&mmc0_PINS_DEFAULT &WLAN_PINS_DEFAULT>;
 pinctrl-1 =<&mmc0_PINS_SLEEP &WLAN_PINS_SLEEP;
 TI、不可拆卸;
 TI、需要特殊处理;
 电容断电卡;
 暂停时保持供电;

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

 wlcore:wlcore@0{
    兼容="ti、wl1801";
    reg =<2>;
    interrupt-parent =<&GPIO2>;
    中断=<1 IRQ_TYPE_LEVEL_HIGH_>;
 };
};


-wlconf 已成功交叉编译
- wlconf 成功安装在目标板中
-所需的固件(wl1271-NVS.bin)已复制到/lib/firmware/ti-connectivity
- wlconf/configure-device.sh 生成的配置文件已复制到/lib/firmware/ti-connectivity
-由 configure-device.sh 询问的参数:TI-device= y、Mode=1801、SISO=SISO40
-不再显示来自 wl18xx 的错误消息(缺少固件和配置),因为已正确填充了 ti-connectivity
但是,wlan0没有注册
-尝试 modprobe -r wl18xx 会阻止控制台,但不会记录错误信息(dmesg/syslog);需要重新引导才能解除控制台的阻止(!)
显然,wl18xx (或其一些朋友)被阻止等待一些从未发生过的事件国王

如果您需要更多信息、请告诉我。

提前感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是哪个内核版本? 您使用的是哪些构建工具? 此外、哪款主机处理器?

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

    内核版本:4.14.59
    -构建工具:Yocto (Rocko)
    主机处理器:AM3352
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    具体而言:
    -内核版本:4.14.49-rt37,来自 :git.ti.com/.../ti-rt-linux-4.14.y
    - SRCREV:"0184cb49ab"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能列出/lib/firmware/ti-connectivity 的内容

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

    这是内容(ls -lah /lib/firmware/ti-connectivity 的输出):

    共计8.7m
    drwxr-xr-x 2 root 4.0K 2016年6月16日。
    drwxr-xr-x 73 root 用户12K Sep 19 20:19。
    -rw-r--r-- 1根根根48K 2016年6月16日 TIInit_7.2.31.bts
    -rw-r--r-- 1根根190K 2016年6月16日 wl1251-fw.bin
    -rw-r--r-- 1 root 用户752 2016年6月16日 wl1251-nvs.bin
    -rw-r--r-- 1 root root 268K 2016年6月16日 wl1271-fw-2.bin
    -rw-r--r-- 1根根267K 2016年6月16日 wl1271-fw-ap.bin
    -rw-r--r-- 1根根266K 2016年6月16日 wl1271-fw.bin
    lrwxrwxrwx 1 root root root 用户2016年6月16日 wl1271-nvs.bin -> wl127x-nvs.bin
    -rw-r--r-- 1根根274K 2016年6月16日 wl127x-fw-3.bin
    -rw-r--r-- 1根根根255K 2016年6月16日 wl127x-fw-4-mr.bin
    -rw-r--r-- 1根根256K 2016年6月16日 wl127x-fw-4-plt.bin
    -rw-r--r-- 1根根271K 2016年6月16日 wl127x-fw-4-sr.bin
    -rw-r--r-- 1根根347K 2016年6月16日 wl127x-fw-5-mr.bin
    -rw-r--r-- 1根345K 2016年6月16日 wl127x-fw-5-plt.bin
    -rw-r--r- 1根根根363K 2016年6月16日 wl127x-fw-5-sr.bin
    -rw-r--r-- 1 root root 262K Jun 16 2016 wl127x-fw-plt-3.bin
    -rw-r--r-- 1根根912 2016年6月16日 wl127x-nvs.bin
    -rw-r--r-- 1根根279K 2016年6月16日 wl128x-fw-3.bin
    -rw-r--r-- 1根根根259K 2016年6月16日 wl128x-fw-4-mr.bin
    -rw-r--r-- 1根根264K 2016年6月16日 wl128x-fw-4-plt.bin
    -rw-r--r-- 1根根278K 2016年6月16日 wl128x-fw-4-sr.bin
    -rw-r--r-- 1根根351K 2016年6月16日 wl128x-fw-5-mr.bin
    -rw-r--r-- 1 root root root 353K 2016年6月16日 wl128x-fw-5-plt.bin
    -rw-r--r-- 1根根371K 2016年6月16日 wl128x-fw-5-sr.bin
    -rw-r--r-- 1 root root 260K 2016年6月16日 wl128x-fw-ap.bin
    -rw-r--r-- 1根根267K 2016年6月16日 wl128x-fw.bin
    -rw-r--r-- 1根根266K 2016年6月16日 wl128x-fw-plt-3.bin
    -rw-r--r-- 1根根根1.1K 2016年6月16日 wl128x-nvs.bin
    lrwxrwxrwx 1 root root root 用户2016年6月16日 wl12xx-nvs.bin -> wl127x-nvs.bin
    -rw-r--r-- 1根根625K 2016年6月16日 wl18xx-fw-2.bin
    -rw-r--r-- 1根根658K 2016年6月16日 wl18xx-fw-3.bin
    -rw-r--r-- 1 root root 728K 2016年6月16日 wl18xx-fw-4.bin
    -rw-r--r-- 1根根405K 2016年6月16日 wl18xx-fw.bin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们等待 Saurabh 的评论。

    Wendell 和 Fabio、请测试以下内容:

    a)验证 MMC 和 WL_EN 引脚多路复用器的配置是否与电路板上的接线正确匹配。
    b)如果 WL_EN 被置为有效、请检查示波器。
    c)内核启动期间会发生 MMC 探针。 请检查 MMC 卡是否已识别。 您应该会看到如下所示的消息。 如果在内核启动时未发生 MMC 探测器本身故障…
    mmc1:对未知 CIS tuple 0x91 (3字节)排队
    mmc1:地址0001处的新高速 SDIO 卡
    d)在 DTS 文件中将‘max-frequency’(轴频率)设置为1MHz,尝试使用较慢的 MMC/SDIO 速度。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Raul、

    a)下面介绍了 WL_EN 以及 IRQ 引脚多路复用、它与电路板的接线相匹配:

     wlan_pins_default:pinmux_wlan_pins_default{
        pinctrl-single、pins =<
          0x08C (PIN_OUTPUT 下拉| MUX_MODE7) /*(V12) WLAN_EN   GPMC_clk.GPIO2[1]*/
          0x088 (PIN_INPUT          | MUX_MODE7) /*(T13) WLAN_IRQ  GPMC_csn3.GPIO2[0]*/
        >;
     };

     wlan_pins_sleep:pinmux_wlan_pins_sleep{
        pinctrl-single、pins =<
          0x08C (PIN_OUTPUT 下拉| MUX_MODE7) /*(V12) WLAN_EN   GPMC_clk.GPIO2[1]*/
          0x088 (PIN_INPUT          | MUX_MODE7) /*(T13) WLAN_IRQ  GPMC_csn3.GPIO2[0]*/
        >;
     };

    b) Fabio 验证了 WL_EN 在引导期间从向下(0v)变为向上(3V3)、并在电路板断电或重新插座之前保持上升状态。

    c)在我的情况下、mmc1 (Linux 检测到)是硬件中的 mmc2;SDIO 通过 mmc0 (Linux)/mmc1 (HW)进行配置;但是、"mmc0:排队..." 未显示、仅显示第二条消息:

    [1.386925]   mmc0:地址0001处的新高速 SDIO 卡

    d)尝试了最大频率、但没有 GO;以下是我尝试使用的引脚多路复用器配置的其余部分:

     mmc0_PINS_DEFAULT:pinmux_mmc0_PINS_DEFAULT{
        pinctrl-single、pins =<
          0x100 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G17) mmc0_clk.mmc0_clk *
          0x104 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G18) mmc0_cmd.mmc0_cmd *
          0x0fc (PIN_INPUT_PULLUP | MUX_MODE0)/*(G16) mmc0_data0.mmc0_data0 */
          0x0f8 (PIN_INPUT_PULLUP | MUX_MODE0)/*(G15) mmc0_data1.mmc0_data1 */
          0x0f4 (PIN_INPUT_PULLUP | MUX_MODE0)/*(F18) mmc0_data2.mmc0_data2 *
          0x0f0 (PIN_INPUT_PULLUP | MUX_MODE0)/*(F17) mmc0_data3.mmc0_data3 *
        >;
     };

     mmc0_PINS_SLEEP:pinmux_mmc0_PIN_SLEEP{
        pinctrl-single、pins =<
          0x100 (PIN_INPUT 下拉| MUX_MODE7)/*(G17) mmc0_clk.mmc0_clk *
          0x104 (PIN_INPUT 下拉| MUX_MODE7)/*(G18) mmc0_cmd.mmc0_cmd *
          0x0fc (PIN_INPUT_PULLDOWN | MUX_MODE7)/*(G16) mmc0_data0.mmc0_data0 */
          0x0f8 (PIN_INPUT 下拉| MUX_MODE7)/*(G15) mmc0_data1.mmc0_data1 */
          0x0f4 (PIN_INPUT 下拉| MUX_MODE7)/*(F18) mmc0_data2.mmc0_data2 *
          0x0f0 (PIN_INPUT 下拉| MUX_MODE7)/*(F17) mmc0_data3.mmc0_data3 */
        >;
     };

     wlan_en_regulator:fixedregulator1{
        兼容="稳压器固定";
        电脑控制器名称="WLAN_en_regulator ";
        稳压器最小微伏=<1800000>;
        稳压器最大值微伏=<1800000>;
        启动延迟-us =<70000>;

        GPIO =<&GPIO2 1 GPIO_ACTIVE_HIGH_>;
        使能端高电平有效;
     };

    mmc1{(&M)
     DMA =<&EDMA_Xbar 12 0 1
             EDMA_Xbar 13 0 2>;
     dma-names ="TX"、"Rx";
     状态="正常";
     VMMC-SUPPLY =<&WLAN_en_regulator >;
     总线宽度="4";
     pinctrl-names ="default"、"sleep";
     pinctrl-0 =<&mmc0_PINS_DEFAULT &WLAN_PINS_DEFAULT>;
     pinctrl-1 =<&mmc0_PINS_SLEEP &WLAN_PINS_SLEEP;
     TI、不可拆卸;
     TI、需要特殊处理;
     电容断电卡;
     暂停时保持供电;
     Max-frequency =<1000000>;
     #address-cells =<1>;
     #size-cells =<0>;

     wlcore:wlcore@0{
        兼容="ti、wl1801";
        reg =<2>;
        interrupt-parent =<&GPIO2>;
        中断=<0 IRQ_TYPE_LEVEL_HIGH_>;
     };
    };

    此外、这是 dmesg 报告的有关"wlan"的单个引用:

    [3.603001]   WLAN_en_regulator:正在禁用

    感谢您的指导。

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

    更多信息:

    我已经激活了内核的 debugfs、这就是我在 MMC 中找到的内容:

    mmc1 (eMMC)-工作完美:
    CAT /sys/kernel/debug/mmc1/ios
    时钟:        52000000 Hz
    VDD:         21 (3.3 ~ 3.4V)
    总线模式:     2 (推挽)
    芯片选择:   0 (无关)
    功率模式:    2 (开启)
    总线宽度:     3 (8位)
    时序规格:   1 (MMC 高速)
    信号电压:0 (3.30V)
    驱动程序类型:   0 (驱动程序类型 B)

    mmc0 (SDIO)-不起作用-这样的总线宽度非常奇怪、对吧?:

    CAT /sys/kernel/debug/mmc0/ios
    时钟:       1000000 Hz
    VDD:         7 (1.65 - 1.95V)
    总线模式:     2 (推挽)
    芯片选择:   0 (无关)
    功率模式:   2 (开启)
    总线宽度:    0 (1位)
    时序规格:   2 (SD 高速)
    信号电压:0 (3.30V)
    驱动程序类型:   0 (驱动程序类型 B)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    - WLAN_EN 为1.8V IO。 由于您提到了3.3V 的测量值、您能否确认有一个电平转换器将其降至1.8V
    -还要检查为 mmc1提到的 DMA 值以确保其正确
    -"mmc0:地址0001处的新高速 SDIO 卡"确认 wl8已通电并检测到正常

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

    感谢您的回复。

    - WLAN_EN:抱歉! 实际电压为1.8V -无需电平转换器;我的错。 (不要误会我的意思... 我是一名软件人员... ;-)
    - DMA 值:我已删除我的配置、并从 am33xx.dtsi 中保留 mmc0的默认配置
    wl8检测:既然您已经澄清了这个问题,那么我认为这不是一个硬件问题。

    已测试新配置;尚未执行。

    现在、我将研究更多可能的配置问题。

    如果你有任何线索...

    谢谢、

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

    您好!

    我很自豪地宣布 WL1801现已开始工作!

    问题的原因:设备树总线宽度属性配置错误。

    它是:

    mmc1{(&M)

    (笑声)

     状态="正常";

     VMMC-SUPPLY =<&WLAN_en_regulator >;

     总线宽度="4";//<--错误的方式!

    现在使用:

    mmc1{(&M)

    (笑声)

     状态="正常";

     VMMC-SUPPLY =<&WLAN_en_regulator >;

     总线宽度=<4>;//<---正确

    我不敢相信我已经快了将近一周时间来发现这一微小的巨大差异! 太糟糕了!

    虽然存在以下警告:

    [137.188842] wlcore:wl18xx 硬件:183x 或180x、PG 2.2 (ROM 0x11)
    [137.204433] wlcore:警告在 NVS 中检测到未配置的 MAC 地址、而是从保险丝派生。

    [137.214856] wlcore:警告可以从文件系统中删除此默认 NVS 文件

    [137.266127] wlcore:已加载
    (笑声)

    [1226.434693] wlcore:PHY 固件版本:版本8.2.0.236
    [1226.587096] wlcore:固件已启动(版本8.9.0.0.69)
    [1226.703966] IPv6:ADDRCONF (NETDEV_UP):wlan0:链路未就绪
    [1227.945677] wlan0:使用 A4:70:d6:0f:65:2e 进行身份验证
    [1227.995986] wlan0:将验证发送到 A4:70:d6:xx:xx:xx (请尝试1/3)
    [1228.033693] wlan0:已验证
    [1228.055067] wlan0:与 A4:70:d6:xx:xx:xx 关联(请尝试1/3)
    [1228.089160] wlan0:RX 等效值(来自 A4:70:d6:0f:65:2e)(capab=0x431 status=0 AID = 2)
    [1228.206506] wlan0:已关联
    [1229.220212] IPv6:ADDRCONF (NETDEV_CHANGE):wlan0:链路就绪
    [1229.251392] wlcore:关联已完成。
    (笑声)

    Ping 8.8.8.8
    Ping 8.8.8.8 (8.8.8.8):56个数据字节
    8.8.8.8.8中的64字节:SEQ=0 TTL=117 Time=47.081ms
    8.8.8.8中的64字节:SEQ=1 TTL=117 Time=48.000ms
    8.8.8.8中的64字节:SEQ=2 TTL=117 TIME=49.257ms
    8.8.8.8中的64字节:SEQ=3 TTL=117 Time=48.059ms
    8.8.8.8中的64字节:SEQ=5 TTL=117 Time=53.143ms

    感谢大家在这个问题上为我们提供帮助。

    -温德尔。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Wendell、
    好消息! 很高兴知道 wi8正在您的平台上工作、感谢您发布更新

    祝你好运
    Saurabh