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.

[参考译文] M2-CC3351:cc33xx:错误器件信息命令失败

Guru**** 2468560 points
Other Parts Discussed in Thread: M2-CC3351, CC3300

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1534500/m2-cc3351-cc33xx-error-device-info-command-failure

器件型号:M2-CC3351
主题中讨论的其他部件: cc3300

工具/软件:

您好!

我想让一个 m2-CC3351 与 FRDM-imx93 板配合使用。 对电路板进行了修改以使功能 M2 插槽正常工作、我还交换了 M2 板上的 R7 和 R10 以在正确的 imx93 引脚上路由 IRQ。

使用 Linux 主线内核 v6.12.9、并将以下节点用于器件树:

&usdhc3{
  pinctrl-names =“default";“;
  pinctrl-0 =<&pinctrl_usdhc3>、<&pinctrl_usdhc3_WLAN>;
   MMC-pwrseq =<&usdhc3_pwrseq>;
   VMMC-SUPPLY =<Registered_usdhc3_VMMC>;
   总线宽度=<4>;
   保持电源处于挂起状态;
   电容断电卡;
   不可拆卸;
   最大频率=<10000000>;
   状态=“正常“;
   #address-cells =<1>;
   #size-cells =<0>;

   WiFi:WiFi@2 {
      compatible =“ti、cc3300“;
      reg =<2>;
      interrupt-parent =<&pcal6524>;
      中断=<10 IRQ_TYPE_EDGE_RISING>;
   };

   // TI-BLE-SDIO 接口
   Btti: btti@1 {
      兼容=“ti、cc33xxbt“;
      reg =<1>;
   };
}

现在、使用内核邮件列表和固件 v1.7.0.120 上找到的补丁(较高版本不兼容)。

我可以成功探测设备、并从 main.c 中启动 因此、它会卡住固件下载并显示以下消息:

[0.889279] cc33xx:将 BLKsize 设置为 128
[0.889925] cc33xx:HINT_STATUS:0x8、TSF:0x4402a、Rx 状态:0x1fff0000
[2.915544] cc33xx:命令 T.O
[ 2.915565] cc33xx:Device info command failure(设备信息命令失败)错误
[ 2.922133] cc33xx:错误固件下载失败
[ 2.922208] cc33xx:cc33xx_NVS_CB 完成

问题是什么?

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

    较小的更新、我删除了 IRQ 定义、因此它可以使用“带内“IRQ、只是为了检查它是否是路由问题。

    现在、我收到了以下消息:

    [ 13.036867] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 地址 0xbffc、256 字节
    [13.041536]警告:CPU:0 PID:46、/drivers/net/wireless/ti/cc33xx/sdio.c:81 0xff800080855a8c
    [ 13.200690] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [13.200767] cc33xx:读取内核状态期间出现 IO 错误
    [ 13.204353] cc33xx_SDIO_RAW_READ
    [ 23.268593] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 个地址 0xbffc、256 个字节
    [ 23.273247]警告:CPU:1 PID:24、/drivers/net/wireless/ti/cc33xx/sdio.c:81 0xff800080855a8c
    [23.425240] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [23.425252] cc33xx:读取内核状态期间出现错误 IO 错误
    [25.444339] cc33xx:错误引导 IRQ 超时
    [ 25.44362] cc33xx_SDIO_DISABLE_IRQ
    [35.560084] cc33xx_SDIO_POWER_OFF
    [45.799909] cc33xx:错误固件下载失败

    有什么想法吗?

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

    完成一些工作后、我就能让接口正常工作... 几分钟。

    我有三种不同的行为:

    #行为 1:

    未探测到任何内容并且 MMC 控制器失败:

    [ 102.882200] mmc2:等待硬件命令中断超时。
    [102.882222] mmc2:sdhci:=========== SDHCI 寄存器转储==========
    [ 102.882228] mmc2:sdhci:sys 地址:0x00000000 |版本:0x00000002
    [ 102.882236] mmc2:sdhci:BLK 大小:0x00000000 | Blk cnt:0x00000001
    [ 102.882242] mmc2:sdhci:参数:0x00000000 | Trn 模式:0x00000000
    [ 102.882248] mmc2:sdhci:present:0x01fd8009 | Host ctl:0x00000000
    [ 102.882253] mmc2:sdhci:电源:0x00000000 | Blk Gap:0x00000080
    [102.882258] mmc2:sdhci:wake-up:0x00000008 |时钟:0x000020ff
    [102.882263] mmc2:sdhci:超时:0x00000080 | Int stat:0x00000000
    [ 102.882268] mmc2:sdhci:int enab:0x007f1003 | Sig enab:0x007f1003
    [ 102.882273] mmc2:sdhci:ACmd stat:0x00000000 | Slot int:0x00000502
    [ 102.882278] mmc2:sdhci:caps:0x07eb0000 | Caps_1:0x0000b400
    [ 102.882283] mmc2:sdhci:cmd:0x0000371a | Max Curr:0x00ffffff
    [ 102.882288] mmc2:sdhci:RESP[0]:0x00000000 | Resp[1]:0x00000000
    [ 102.882293] mmc2:sdhci:RESP[2]:0x00000000 | Resp[3]:0x00000000
    [ 102.882298] mmc2:sdhci:主机 ctl2:0x00000000
    [ 102.882302] mmc2:sdhci:Adma Err:0x00000000 | ADMA PTR:0x00000000
    [102.882308] mmc2:sdHCi-esdhc-imx:======== ESDHC IMX 调试状态转储========
    [ 102.882312] mmc2:sdHCi-esdhc-imx:cmd 调试状态:0x3180
    [ 102.882317] mmc2:sdHCi-esdhc-imx:数据调试状态:0x3200
    [102.882322] mmc2:sdHCi-esdhc-imx:传输调试状态:0x3300
    [ 102.882326] mmc2:sdHCi-esdhc-imx:DMA 调试状态:0x3400
    [ 102.882331] mmc2:sdHCi-esdhc-imx:Adma 调试状态:0x3500
    [ 102.882336] mmc2:sdHCi-esdhc-imx:FIFO 调试状态:0x3680
    [ 102.882340] mmc2:sdHCi-esdhc-imx:异步 fifo 调试状态:0x3750
    [102.882345] mmc2:sdhci:===========================================

    #行为 2:

    设备已探测但没有响应

    [ 0.541262]器件:'mc2':device_add
    [0.584548] mmc2:使用 ADMA 在 428b0000.mmc [428b0000.MMC]上运行的 SDHCI 控制器
    [1.251679] mmc2:初始化 SDIO 卡时出现错误–16
    [1.944173] mmc2:初始化 SDIO 卡时出现错误–16
    [2.632275] mmc2:初始化 SDIO 卡时出现错误–16
    [ 3.328927] mmc2:初始化 SDIO 卡时出现错误–16
    [ 3.338604] mmc2:无法初始化不可拆卸的卡

    #行为 3:

    该接口可用于 Linux 并可连接、因此在几个二十兆字节的流量后崩溃

    [333.721664]警告:CPU:0 PID:54 at /drivers/net/wireless/ti/cc33xx/sdio.c:79 0xff8000808463a0
    [333.8727272727] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [333.872739] cc33xx:读取内核状态期间出现 IO 错误
    [333.872783] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872794] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872803] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872811] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872820] cc33xx:读取内核状态时出现错误 IO 错误
    [333.87282828] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872836] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872844] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872852] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872860] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872868] cc33xx:读取内核状态期间出现错误 IO 错误
    [333.872876] cc33xx:读取内核状态期间出现错误 IO 错误
    [ 333.873062] cc33xx:CC33xx 驱动程序正在尝试恢复
    [333.903873] cc33xx:mac80211 sta 0 state=4->3.
    [333.931944] cc33xx: mac80211 sta 0 state=3->2.
    [333.931951] cc33xx: mac80211 sta 0 state=2->1.
    [333.931956] cc33xx:mac80211 sta 0 state=1->0
    [ 333.932080] cc33xx:mac80211 conf TX 0
    [333.932089] cc33xx:mac80211 conf TX 1.
    [ 333.932093] cc33xx:mac80211 conf TX 2.
    [333.932097] cc33xx:mac80211 conf TX 3.
    [333.932110] cc33xx:mac80211 remove chanctx 6(类型 1)
    [ 333.932148] cc33xx:mac80211 config PSM off power 0 idle 已更改 0x100
    [334.939312] cc33xx:将 BLKsize 设置为 128
    [ 345.015349] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 地址 0xbffc、256 字节
    [345.020019]警告:CPU:1 PID:11、网址为/drivers/net/wireless/ti/cc33xx/sdio.c:79 0xff8000808463a0
    [345.168728] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [345.168741] cc33xx:读取内核状态期间出现 IO 错误
    [347.190244] cc33xx:错误引导 IRQ 超时
    [ 355.252187] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 地址 0xbffc、256 字节
    [355.256844]警告:CPU:0 PID:54、/drivers/net/wireless/ti/cc33xx/sdio.c:79 0xff8000808463a0
    [355.409122] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [355.409140] cc33xx:读取内核状态期间出现错误 IO 错误
    [ 365.490116] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 个地址 0xbffc、256 个字节
    [365.495965]警告:CPU:0 PID:54、/drivers/net/wireless/ti/cc33xx/sdio.c:79 0xff8000808463a0
    [365.647949] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [365.647961] cc33xx:读取内核状态期间出现错误 IO 错误
    [ 375.727969] cc33xx_SDIO mmc2:0001:2:SDIO 读取 53 地址 0xbffc、256 字节
    [ 375.732631]警告:CPU:0 PID:54 at /drivers/net/wireless/ti/cc33xx/sdio.c:79 0xff8000808463a0
    [ 375.884569] cc33xx_SDIO mmc2:0001:2:SDIO 读取失败(–110)
    [ 375.884581] cc33xx:读取内核状态期间出现错误 IO 错误
    [396.205408] cc33xx:使用预先分配的硬件队列基数 0
    [ 406.447621]警告:CPU:0 PID:54、/drivers/net/wireless/ti/cc33xx/sdio.c:105 0xff80008084619c
    [ 406.606713] cc33xx_SDIO mmc2:0001:2:SDIO 写入失败(–110)
    [406.606730] cc33xx:启动 cmd 角色启用失败

    现在、我问了很多问题、我最后用 M2-CC3351 模块换了 PA9019A M2 模块、目的是检查电路板是否正常。 它的工作就像一个魅力在第一次尝试。 尽管做了很多努力、但我找不到重现这些错误的确定性序列。

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

    如果是我、我会怀疑 SDIO 总线信号完整性问题...

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

    但它只会在这种模块中出现。 当我使用  PA9019A M.2 模块时、类似的设备树和系统没有问题。

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

    您好、John:

    我在器件树中注意到您正在使用 pcal6524。 这是一款基于 I2C 的 GPIO 扩展器、对吗?
    我以前在 imx93-QSB 板上 进行开发有经验、该板也使用了 GPIO 扩展器来连接 IRQ 引脚。 CC33xx 使用得非常快、因此我认为基于 I2C 的 GPIO 扩展器太慢(或处理的时序不正确)而无法处理 CC33xx 的 IRQ。  

    目前、我建议按如下方式注释掉 2 个中断线路:

        wifi: wifi@2 {
            compatible = "ti,cc3300";
            reg = <2>;
            //interrupt-parent = <&pcal6524>;
            //interrupts = <10 IRQ_TYPE_EDGE_RISING>;
        };

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

    您好 Sabeeh,

    是的、PCAL6524 是一个 GPIO 扩展器。 在 FRDM-IMX93 板 上、板上 IRQ 的默认 SDIO_WAKE 连接到 imx93 上不兼容的引脚、因此我们使用连接到此 GPIO 扩展器的第二个可选引脚。

    我也怀疑这个时间问题。 正如我在驱动程序代码中看到的那样、我在没有 IRQ 的情况下尝试它可以支持带内 IRQ(对我的初始线程的首次响应)。 没有帮助。 所示的三个错误与没有 IRQ 声明的器件树相对应。

    我还怀疑在设置 M.2 端口时存在一些潜在问题、该端口在默认情况下处于停用状态、且未配置 0r。 但是、与另一个基于 SDIO 的 M.2 模块的交叉检查使我对电路板充满信心。

    目前使用三个 FRDM-IMX93 板和两个 M2-CC3351 模块进行了测试。

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

    您好、John:

    您能否分享 FRDM-IMX93 电路板的原理图? 您是否还能发布 “MMC-pwrseq =<&usdhc3_pwrseq>;“和 “VMMC-SUPPLY =<Registered_usdhc3_VMMC>;“的定义?

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

    尊敬的 Sabeeh:

    以下是器件树和原理图的定义。 关于原理图、标记为 DNP 的 0r 已配置、并移除另一个 0r 以禁用默认焊接模块、从而启用 M.2。

    reg_usdhc3_vmmc:regulator-usdhc3{
      兼容=“稳压器固定“;
       稳压器名称=“WLAN_EN";“;
       稳压器 — 最小-微伏=<3300000>;
       稳压器最大微伏=<3300000>;
       GPIO =<&pcal6524 13 GPIO_ACTIVE_HIGH>;
       startup-delay-us =<20000>;
       使能高电平有效;
       常开稳压器;
    };

    usdhc3_pwrseq:usdhc3_pwrseq{
      compatible =“MMC-pwrseq-simple";“;
      Reset-GPIOs =<&pcal6524 20 GPIO_ACTIVE_LOW>;
      上电延迟后=<10>;
      断电延迟 us =<80>;
    };

    e2e.ti.com/.../SPF_2D00_94611_5F00_B1.pdf

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

    您好、John:

    您描述的是哪个 0r? 您能否提供标识符(R2861、R2822 等)...

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

    为了使用 M.2 插槽、我们必须返修一些电阻器、如电路板用户手册中所述(见下文)。 如前所述、我们已经成功使用另一个 M.2 模块并使用 SDIO、UART 和 SPI 测试了此返修。  

    为 M.2 插槽使用而返修电阻器
    电阻器 DNP 电阻器安装

    R2808、R2809、R2812、R2819、R2820、 R2821

    R2824、R2825、R2826、R2827、R2828 R2829

    R3023、R3024、R2958、R3028

    R2960、R2860

    R2854、R2855

    R2851、R2853

    R3038、R2870、R2871

    R3037、R2866、R2867

    R2796、R2798、R2800、R2802

    R2788、R2791、R2792、R2794

    R2797、R2799、R2801、R2805

    R2789、R2790、R2793、R2795

    R2832、R2834、R2836、R2838

    R2833、R2835、R2837、R2839

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

    尊敬的 Sabeeh:

    我们尝试了一个全新的模块、在该模块上我们没有更换 R7 和 R10。 它可以使用最新的驱动程序 (1.0.0.9) 和带内 IRQ。 但前两个已无法正常工作、似乎已损坏。

    我们对内核驱动程序做了一些更改、以便可以在 LTS 6.12 上编译、我们已经将其全部放入我附加的补丁中、以防您要重现。  e2e.ti.com/.../0004_2D00_Added_2D00_TI_2D00_cc33xx_2D00_driver_2D00_for_2D00_wifi_2D00_and_2D00_bluetooth_2D00_v1.0.0.patch.txt

    关于蓝牙、我知道我们需要配备 DebugFS 才能启用该接口? (hciconfig 命令不返回任何内容)

    e2e.ti.com/.../0004_2D00_Added_2D00_TI_2D00_cc33xx_2D00_driver_2D00_for_2D00_wifi_2D00_and_2D00_bluetooth_2D00_v1.0.0.patch.txt

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

    您好、John:

    很高兴听到您能够让它正常工作。

    对于蓝牙、必须首先发送 ble_enable 命令。 这可通过以下方式实现:

    ehco 1 >/sys/kernel/debug/ieee80211/phy0/cc33xx/ble_enable

    然后、假设器件树和 BT_TI 内核模块设置正确、您将看到 HCI 接口(通过 hciconfig -A)。

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

    尊敬的 Sabeeh:

    那么以前两个不再工作的模块可能会因为 IRQ 错误配置而被损坏?

    此外,我发现使用 DebugFS 启用蓝牙接口是很奇怪的,是否有更常规的方法? 我的内核中不支持 debugfs、我想保持它轻量级且安全。  

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

    您好、John:

    因此、以前两个不再工作的模块可能因为 IRQ 错误配置而损坏?

    这可能是问题所在、但很难说清楚、因为我自己也没有更改配置、也没有电路板。 我建议退回到 IRQ 配置的原始电阻。 也许您不小心在 M.2 卡的这条线路上放置了 3.3V 电压、这会造成损坏。

    另外,我发现使用 DebugFS 启用蓝牙接口很奇怪,是否有更常规的方法? [/报价]

    这是我们在 CC33xx 上启用 BLE 的方式。 没有其他选项。