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/WL1801MOD:加载1801MOD 的固件时出错

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/583788/linux-wl1801mod-error-in-loading-firmware-for-1801mod

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

工具/软件:Linux

您好、社区成员:

我们在启动 wlan0接口时遇到问题。 我们使用的是定制的 AM335x 板、并使用最新的 ti-AM335x-03.02.00.05。

我们能够在内核中检测 SDIO 卡、因为我们将获得以下日志。

root@ngt:~# dmesg | grep mmc1
[1.462928]   mmc1:将未知 CIS tuple 排队0x91 (3个字节)
[1.478877]   mmc1:地址0001处的新高速 SDIO 卡

但我在加载固件 wl18xx-conf.bin 时似乎遇到问题。

我从 git://git.ti.com/wilink8-wlan/build-utilites.git 下载了 build-utilites、最新版本为8.7SP1。

当我尝试使用 wlconf -D 生成 wl18xx-conf.bin 时、我收到以下错误。

我使用内核4.4中的内置驱动程序。

这是我的 DTS 配置。

mmc3{(&M)
   /*这些都在纵横制上,并在中进行了概述
   Xbar-event-map 元素*/
   状态="正常";
   DMA =<&EDMA 12 1.
   EDMA 13 2>(&E);
   dma-names ="TX"、"Rx";
   状态="正常";
   VMMC-supply =<&wlan_en_reg>;
   总线宽度=<4>;
   pinctrl-names ="default";
   pinctrl-0 =<&mmc2_pins &wlan_pins >;
   pinctrl-1 =<&mmc2_PINS_SLEEP &WLAN_PINS_SLEEP >;
   TI、不可拆卸;
   TI、需要特殊处理;
   电容断电卡;
   暂停时保持供电;


       #address-cells =<1>;
       #size-cells =<0>;
       wlcore:wlcore@0{
               兼容="ti、wl1801";
               reg =<2>;
               interrupt-parent =<&GPIO3>;
               中断=<2 8>;
       };
};

         wlan_en_reg:fixedregator@2{
               兼容="稳压器固定";
               reguler-name ="wlan-en-regulator ";
               稳压器最小微伏=<1800000>;
               稳压器最大值微伏=<1800000>;
       针对这个电路板的/* WLAN_EN GPIO -组3、pin1 */
               GPIO =<&GPIO3 1 0>;

       /* WLAN 卡特定延迟*/
               启动延迟-us =<70000>;
               使能端高电平有效;
       };

能不能有人告诉我什么是问题

谢谢

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

    此查询已分配给相关专家。 我们很快会回来。

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

    你(们)好  

    再进行一次开发、

    我在引导日志中也会看到这一点

    WLAN-en-regulator:正在禁用   

    尽管检测到 SDIO 卡 、但我可以通过查看 MMC 日志来查看该卡、但我的稳压器已禁用。

    root@ngt:/sys/class/gpio/gpio98 dmesg | grep mmc1
    [1.472488] mmc1:将未知 CIS tuple 排队0x91 (3字节)
    [1.478929] mmc1:地址0001处的新高速 SDIO 卡

    此外、WL_EN GPIO 也被使用、因为我无法在用户空间中导出。

    能不能有人告诉我这个问题。

    谢谢

    深度

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

    我没有看到完整的日志螺母。在驱动程序加载期间,wrror print abount 未找到配置文件"wl18xx-conf.bin"不是致命的。 它使用的默认值对于标准 TI 模块应该是可以接受的。

    驱动程序是否加载了此消息? 请发布完整日志。

    此外、有关 WLAN_ENABLE 稳压器禁用的消息也是正常的。 当您启动接口(例如、ifconfig wlan0 up)时、它将再次启用。

    BR、

    Eyal

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

    您好!

    我正在附加引导日志。

    问题似乎是 wl18xx 中断不起作用。 我在 cat /proc/interrupts.中看不到它们

    e2e.ti.com/.../canary_5F00_wifi.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定是否所有驱动程序模块都已预设。
    日志太短。 加载过程似乎没有完成、但我也没有看到任何错误。

    您看到哪些模块使用 lsmod 加载?
    您能否分享您的:

    zcat /proc/config.gz

    希望看到所有 wl18xx 相关模块都已选定。

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

    您好、Eyal、

    我已在 文件中重定向 zcat /proc/config.gz 的结果。

    我要附加文件。

    e2e.ti.com/.../file.txt

    如果需要修改、请告诉我。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    看起来它已启用所有正确的 wl18xx 相关模块。

    是否可以尝试仅启用此功能?:
    CONFIG_FW_LOADER_USER_helper_backfall

    您是否看到使用 lsmod 加载的所有模块?

    最后、是否确定已发送完整的控制台引导日志(dmesg?) 从引导?
    我希望看到更多消息。

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

    您好、Eyal、

    感谢您的快速回复。

    我已向您发送完整的引导日志。 下面是我的烟雾结果。



    e2e.ti.com/.../bootlogs.txt

    我还将再次附加引导日志。

    请告诉我您的具体期望。

    谢谢

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

    尚未加载 wlcore_SDIO。
    因此、它可能会在加载时停止、这是有某种原因的。 它要么必须失败、要么您应该看到更多消息...
    您使用的是什么文件系统? 是标准处理器 SDK 吗?

    [7.576153]内部函数 wlcore_probe ***
    [7.583737]***** wl18xx_setup**内
    [7.588941]********* 函数 wl18xx_conf_init 内的内容
    [7.594560]*** wl18xx_load_conf_file ***
    [7.615884]*** wl18xx_load_conf_file**结束
    [7.620298]***** HT_MODE_param**** (空)
    [7.624412]**内部功能2***** wl18xx_setup
    [7.629322] func wlcore_NVS_CB after wlcore_probe ****
    [7.635594] wl12xx_set_power_on 内的四颗星****

    这是最后一次看到的消息吗?您添加的打印件是否已添加?
    接下来会发生什么情况? 您是否已重新使用控制台?

    interrupt-parent =<&GPIO3>;
    中断=<2 8>;

    我假设您将 GPIO3_2用于 WLAN_IRQ、对吧?
    您能否尝试:
    interrupt-parent =<&GPIO3>;
    中断=<2 IRQ_TYPE_EDGE_FALLING>;

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

    我正在使用最新的 TI SDK ti-AM335x-03.02.00.05。
    是的、我使用的是 GPIO3_2。

    中断=<2 IRQ_TY_EDGE_FALLINGES>//写入此宏会给我编译错误。

    这就是我写入中断的原因=<2 8>

    如何加载 wlcore_SDIO。 谁加载它?


    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将此 include 添加到.dts 文件中以查看编译警告

    #include

    如所示:
    git.ti.com/.../am335x-evm.dts

    探测模块后、wlcore_SDIO 会自动加载、同时加载 wl18xx、wlcore 等。

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

    我尝试了相同的方法。 但我的 wlcore_SDIO 仍然没有被任何模块使用。
    另外,在 cat /proc/interrupts 之后,我无法通过 wl18xx 看到中断。

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

    没有人使用 wlcore_sio 是可以的。

    应如下所示:

    root@AM335x-EVM:~# lsmod | grep wlcore
    wlcore               228129 1 wl18xx
    mac80211             468843 2 wl18xx、wlcore
    cfg80211             248846 3 wl18xx、wlcore、mac80211
    wlcore_SDIO            8734 0
    root@AM335x-EVM:~# lsmod | grep wl18xx
    wl18xx                93660 0
    wlcore               228129 1 wl18xx
    mac80211             468843 2 wl18xx、wlcore
    cfg80211             248846 3 wl18xx、wlcore、mac80211
    根目录@AM335x-EVM:~编号

    问题是它是自动加载还是手动加载。

    不管怎样、它看起来没有完成加载、这就是为什么您看不到正在注册的中断的原因。

    是否确实要使用在引导过程中生成的正确.dtb 文件? 请注意/rootfs/boot 中的符号

    尝试在 drivers/net/wireless/ti/wlcore/SDIO.c 中添加调试打印、查看其故障位置。 从探头功能开始。

    BR、

    Eyal

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

    驱动程序已自动加载。 我正在使用 TI SDK 本身中提供的驱动程序。
    我没有在外部编译它、因为我的内核是4.4。

    我正在重新发送 DTS 配置。

    wlan_en_reg:fixedregator@2{
    兼容="稳压器固定";
    reguler-name ="wlan-en-regulator ";
    稳压器最小微伏=<1800000>;
    稳压器最大值微伏=<1800000>;
    针对这个电路板的/* WLAN_EN GPIO -组3、pin1 */
    GPIO =<&GPIO3 1 0>;

    /* WLAN 卡特定延迟*/
    启动延迟-us =<70000>;
    使能端高电平有效;
    };
    /*


    mmc3{(&M)
    /*这些都在纵横制上,并在中进行了概述
    Xbar-event-map 元素*/
    状态="正常";
    DMA =<&EDMA 12 1.
    EDMA 13 2>(&E);
    dma-names ="TX"、"Rx";
    状态="正常";
    VMMC-supply =<&wlan_en_reg>;
    总线宽度=<4>;
    pinctrl-names ="default";
    pinctrl-0 =<&mmc2_pins &wlan_pins >;
    TI、不可拆卸;
    TI、需要特殊处理;
    电容断电卡;
    暂停时保持供电;
    使能 SDIO 唤醒;


    #address-cells =<1>;
    #size-cells =<0>;
    wlcore:wlcore@0{
    兼容="ti、wl1801";
    Board-ref-clock =<4>;
    reg =<2>;
    interrupt-parent =<&GPIO3>;
    中断=<2 IRQ_TYPE_LEVEL_LOW_>;
    };



    我需要在中看到哪些 symLinks 请注意/rootfs/boot 中的 symlnks

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

    DTS 文件条目看起来正常、但您也将 GPIO3_1和 GPIO3_2多路复用为 GPIO、因为您没有附加.dts 的这一部分。

    它可能位于以下部分:

    pinctrl-0 =<&mmc2_pins &wlan_pins >;

    我所指的 symlink 如下:

    root@AM335x-EVM:~# ls /boot -l

    lrwxrwxrwx  1根  根根       3月32日19:50 AM335x-EVM.DTB -> devicetree-zImage-AM335x-EVM.DTB

    由于您可能使用的文件与 AM335x-EVM.dTB 不同、因此您需要确保在内核加载时由 u-boot 挑选。

    BR、

    Eyal

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

    我已经将它们多路复用为 GPIO

    /* wl12xx/wl18xx 卡使能/IRQ GPIO。 *
    wlan_pins:pinmux_wlan_pins{
    pinctrl-single、pins =<
    0x10C (PIN_OUTPUT PULLUP | MUX_MODE7)/* gmii1_crs.GPIO3_1用于 Wi-Fi EN *
    0x110 (PIN_INPUT_PULLUP | MUX_MODE7)/* MII1_RX_ER.GPIO3_2用于 Wi-Fi IRQ *

    此外/boot -l 显示了正确的 dtb 文件

    root@ngt:/boot# ls /boot -l
    -rwxrwxrwx 1根 根骨黑色.dtb
    -rwxr-xr-x 1 R9 2017 zImage

    我需要知道一个 thing..in AM335x-evm.dts、有3个引脚配置为 WLAN_PINS。 第三个引脚的作用是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Eyal、

    问题是我没有从 wlcore 获取任何日志。
    如何增加 wlcore 的调试日志。 我的 dynamic 调试在内核配置中启用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您要讨论的第三个引脚可能是 Bluetooth_ENABLE。

    有关其他日志、请参阅:
    processors.wiki.ti.com/.../WL18xx_Driver_Debug

    您还可以在 drivers/net/wireless/ti/wlcore/SDIO.c 中添加一组 printk、以防打开内置调试消息不会向您显示有用的信息。

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

    您好、Eyal、

    我对烟雾有疑问

    root@ngt:~# lsmod

    模块          使用的大小  

    wl18xx         91108 0

    wlcore         214379 2 wl18xx

    mac80211        350563 2 wl18xx、wlcore

    cfg80211        219748 3 mac80211、wl18xx、wlcore

    MUSB DSP        10667 0

    Musb_hdrc       105337 1 musb_dsp

    UDC_CORE        13867 1 musb_hdrc

    子内核        226099 1 musb_hdrc

    ECB           1909 0

    MD5           1897 0

    SHA1_generic       2621 0

    SHA1_ARM_NEON      6261 0

    SHA1_ARM         3862 1 SHA1_ARM_NEON

    Snd_soc_simple_card  8991 0

    OMAP-AES_DRIVER    21614 0

    OMAP-SHIM        25097 0

    OMA_Rng         4759 0

    C_CAN_platform      6590 0

    C_CAN          11311 1 c_CAN_platform

    RNG_CORE         7538 1 OMAP-Rng

    CAN_DEV         12779 1 c_CAN

    wlcore_SDIO       8554 0

    SND_SoC_tlv320aic3x  47880 1.

    SND_SoC_Davinci_McASP  20494 SoC_OMAP       3193 1 SND_SoC_Davinci_McASP

    SND_SoC_CORE      158914 5 snd_soc_davinci_mcasp、snd_soc_edma、snd_soc_OMAP、snd_soc_tlv320aic3x、snd_soc_simple_card

    SND_PCM_dmaEngine   5325 2 SND_SoC_CORE、SND_SoC_OMAP

    SND_PCM         93_SoC_core、snd_soc_OMAP、snd_soc_tlv320aic3x、snd_pcm_dmaengine

    SND_TIMER        23171 1 SND_PCM

    MUSB AM335x       1 4634 0

    为什么 wlcore 被2使用?

    此外、我还在 wlcore/SDIO.c 和 wlcore/main.c 中添加了调试打印  

    wl12xx_set_power_on () 是 called..it 进入 wlcore_set_partition ()时,它在这里出现故障。

    这意味着驱动程序无法读取芯片的寄存器。

    可以告诉我吗?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    有人能帮我解决这个问题吗? 我仍然卡在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您需要探测 wlan_enable 引脚、并确保在驱动程序尝试处理芯片时该引脚已开启。

    还请在该代码区域添加调试打印、以了解其故障的确切位置并附加日志。

    我想这会是 WLAN_ENABLE 引脚启动问题。

    此致、

    Eyal

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

     当驱动程序尝试访问芯片时、WLAN_ENABLE 引脚被启用。

    当驱动程序被加载、固件被加载时、问题就会出现、并且 SDIO_clk 会像 MMC 时钟一样持续出现。  。

    我正在发送捕捉

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

    您好、Eyal、

    我已经解决了这个问题。

    问题出在设备树中的 DMA 分配。

    现在,我的工作设备树是:

    mmc3{(&M)

      /*这些都在纵横制上,并在中进行了概述

      Xbar-event-map 元素*/

      状态="正常";

      DMA =<&EDMA_Xbar 12 0 1   

      EDMA_Xbar 13 0 2>;

      dma-names ="TX"、"Rx";

      VMMC-supply =<&wlan_en_reg>;

      总线宽度=<4>;

      pinctrl-names ="default";

      pinctrl-0 =<&mmc2_pins &wlan_pins >;

      pinctrl-1 =<&mmc2_PINS_SLEEP &wlan_PINs_SLEEP>;

      TI、不可拆卸;

      TI、需要特殊处理;

      电容断电卡;

      暂停时保持供电;

     /*使能 SDIO-WAKEUP;*/

        #address-cells =<1>;

        #size-cells =<0>;

        wlcore:wlcore@0{

            兼容="ti、wl1801";

            Board-ref-clock =<4>;

            reg =<2>;

            interrupt-parent =<&GPIO3>;

            中断=<2 IRQ_TYPE_EDGE_RISING >;

        };

    };

    感谢您的支持