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.

[参考译文] CC3351:SDIO 写入失败(-84)

Guru**** 2477065 points
Other Parts Discussed in Thread: CC3301

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1438515/cc3351-sdio-write-failed--84

器件型号:CC3351
Thread 中讨论的其他器件:CC3301

工具与软件:

我正在 VERDIN AM62平台上测试 SONA TI351、但我遇到一个问题、驱动器探针无法正常运行、并显示以下消息:

"cc33xx_sDIO mmc1:0001:2:SDIO 写入失败(-84)"

在硬件侧、该模块通过 M.2转 uSD 适配器连接到我们的电路板。 对于软件、我测试了内核版本6.6.32 (基于 TI Linux 内核)和版本6.12-RC (来自下一个无线树上)以及 cc33xx 补丁程序(lore.kernel.org/.../)。 我还尝试了使用 Linux-固件和 ti-linux-固件存储库中的固件。

测试所有组合并降低总线最大频率后、结果保持不变。 我的理解是错误-84可能表示硬件问题。 但是、我在另一个 M.2 Wi-Fi 模块中测试了相同的设置(SoM +载板+ M2至 USD)、即使不限制频率、也运行良好。


非常感谢您提供任何见解或建议!

dts 代码段:

/* Verdin SD_1 */
ssdhci1 {
   pinctrl-names ="默认值";
   pinctrl-0 =<&pinctrl_sdhci1>、<&pinctrl_SD1_CD_GPIO>;
   CD-GPIO =<&MAIN_GPIO1 48 GPIO_ACTIVE_LOW>;
   DISABLE-WP;
   VMMC-SUPPLY =<Registered_sdhc1_VMMC>;
   vqmmc-supply =<Registered_sdhc1_vqmmc>;
   TI、不带测试光盘的故障;
   状态="已禁用";

   最大频率=<400000>;
   cap-power-off-card;
   保持电源处于挂起状态;
   不可拆卸;

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

   cc3301:cc3301@2 {
       兼容="ti、cc3301";
       reg =<2>;
   };
};

内核日志:

[142.307380] sdhci-am654 fa0000.mmc:卡声称支持低于定义范围的电压
[ 142.364040] mmc1:地址0001的新型高速 SDIO 卡
[ 142.381592] SDIO_cc33xx_probe:dump=false
[ 142.388891] SDIO_cc33xx_probe:cc33xx_SDIO mmc1:0001:2:SDIO PM 电容= 0x1
[ 142.412257] cc33xx_SDIO mmc1:0001:2:使用 SDIO 带内 IRQ
[ 142.427751] cc33xx_driver cc33xx.4.auto:对于 ti-connection/cc33xx-nvs.bin 的直接固件加载失败、显示错误-2
[ 142.438596] cc33xx_NVS_CB:cc33xx:无法获取 NVS 文件 ti-connectivity/cc33xx-nvs.bin
[142.447488] cc33xx_chip_wakeup:cc33xx:芯片唤醒
[ 142.689481] cc33xx_set_block_size:cc33xx:将 BLKsize 设置为128
[ 142.696601] cc33xx_enable_interrupts:cc33xx:IBI_WA:读取内核状态
[ 142.705256] cc33xx_SDIO_RAW_READ:cc33xx_SDIO mmc1:0001:2:SDIO 读取53个地址0xbffc、256字节
[ 142.713970] cc33xx_handle_boot_IRQ:cc33xx:引导 IRQ:0x8
[ 142.719649] inband_irq_handler:cc33xx_SDIO mmc1:0001:2:带内 SDIO IRQ
[ 142.726534] cc33xx_enable_interrupts:cc33xx:IBI_WA:已处理核心状态
[ 142.735424] cc33xx_SDIO_RAW_READ:cc33xx_SDIO mmc1:0001:2:SDIO 读取53个地址0xbffc、256字节
[ 142.744125] cc33xx_SDIO_RAW_WRITE:cc33xx_SDIO mmc1:0001:2:SDIO 写入53个地址0xbff01024个字节
[ 142.759661] inband_irq_handler:cc33xx_SDIO mmc1:0001:2:带内 SDIO IRQ
[ 142.768141] cc33xx_SDIO_RAW_READ:cc33xx_SDIO mmc1:0001:2:SDIO 读取53个地址0xbffc、256字节
[ 142.782110] cc33xx_SDIO_RAW_READ:cc33xx_SDIO mmc1:0001:2:SDIO 读取53个地址0xbff8896个字节
[ 142.790836] get_device_info:cc33xx:CC33XX 器件信息:PG 版本:2、金属版本:1、引导 ROM 版本:1、M3 ROM 版本:1、MAC 地址:0xec9a34199b75、器件型号:0
[ 142.809208] container_download_and_wait:cc33xx:将 ti-connection/cc33xx_2nd_loader.bin 下载到设备
[ 142.820098] cc33xx_SDIO_RAW_WRITE:cc33xx_SDIO mmc1:0001:2:SDIO 写入53个地址0xbff01024字节
[142.832095]-------  [剪切于此处]--------
[142.836742] 警告:CPU:0 PID:52 at drivers/net/wireless/ti/cc33xx/SDIO.c:133 cc33xx_sdio_raw_write+0xf0/0x208 [cc33xx_sDIO]
[ 142.848228]模块链接于:8021q GARP STP MRP LLC RFCOMM bnep onboard_usb_hub nls_ISO8859_1 nls_cp437 btnxpuart cc33xx mac80211 libarc4 optee_rng rng_core dwc3 pru_rproc irq_pruss_intc evs4
 [142.931636] CPU: 0 PID: 52 Comm: kworker/0:3污染: G       W 6.6.32-g6545367f56d7-dirty         #5.
[ 142.941011]硬件名称:Verdin 开发板(DT)上的 Toradex Verdin AM62 WB
[ 142.948567] workqueue:events request_firmware_work_func
[ 142.953880] pstate:20000005 (nzCv daif -pan -uao -tco -dit -ssbs BTYPE=-)
[142.960830] PC : cc33xx_sDIO_RAW_WRITE+0xf0/0x208 [cc33xx_sDIO]
[ 142.966741] LR : cc33xx_sDIO_RAW_WRITE+0xe8/0x208 [cc33xx_sDIO]
[142.972654] sp : fffffffc081c63b30.
[142.975957] x29: fffffffc081c63b30 x28: 0000000000000000 x27: 0000000000000280
[ 142.983082] x26:ffffffffff800b3b3908 x25:0000000000000001 x24:0000000000000001
[142.990207] x23:ffffffffff800b3b392c x22:0000000000000400 x21:ffffffffff8007029010.
 [142.99733] x20:000000000000bff0 x19:ffffff8001ab6000 x18:0000000000000000
[ 143.004459] X17:0000000000000000 x16:0000000000000000 x15:0000000000000000
[ 143.011583] x14:00000000000000000000 x13:00000000000000000001 x12:ffffff803fda1400
 [143.018711] x11:00000000000000000002 x10:0000000000000980 x9:ffffffffffc080803444
[143.025836] x8 : ffffffffff800163e0 x7 : 0000000634b78a0c x6 : 00000006d605c1e4.
[ 143.032961] x5 : 03ffffffffffffffffff x4 : ffffffffffff80007e0dc0 x3 : 00000000000000000000
[ 143.040088] x2 : 0000000000000001 x1 : ffffffff80007e0c10 x0 : 00000000ffffac
[ 143.047215]呼叫跟踪:
[ 143.049654] cc33xx_SDIO_RAW_WRITE+0xf0/0x208 [cc33xx_SDIO]
[ 143.055222] cc33xx_write+0x54/0xc0 [cc33xx]
[ 143.059505] __cc33xx_cmd_send+0xec/0x280 [cc33xx]
[ 143.064296] cmd_download_container_block+0xec/0x178 [cc33xx]
[ 143.070040] container_download_and_wait+0xd4/0x238 [cc33xx]
[ 143.075697] cc33xx_init_fw+0x1ac/0x350 [cc33xx]
[ 143.080313] cc33xx_NVS_CB+0x760/0xd28 [cc33xx]
[ 143.084843] request_firmware_work_func+0x58/0xb0
[ 143.089538] PROCESSOR_ONE_WORK+0x148/0x3b8
[ 143.093547] worker_thread+0x32c/0x450
[ 143.097287] kthread+0x11c/0x128
[ 143.100510] ret_from_fork+0x10/0x20
[ 143.104080]--[结束跟踪0000000000000000]--
[ 143.112845] cc33xx_SDIO mmc1:0001:2:SDIO 写入失败(-84)
[ 143.118570] cc33xx:错误块传输失败
[ 143.123195] cc33xx:下载 ti-connection/cc33xx_2nd_loader.bin (-84)时出现错误传输
 [143.133961] cc33xx:错误的固件下载失败
[ 143.149017] cc33xx_NVS_CB:cc33xx:cc33xx_NVS_CB 完整

MMC IO

root@verdin-am62-15412808:~# cat /sys/kernel/debug/mmc1/ios
时钟:         400000Hz
实际时钟:  400000Hz
VDD:           21 (3.3 ~ 3.4V)
总线模式:      2 (推挽)
芯片选择:   0 (无关)
功率模式:    2 (开启)
总线宽度:     2 (4位)
时序规格:   2 (SD 高速)
信号电压:1 (1.80V)
驱动器类型:   0 (驱动器类型 B)

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

    如果您正在使用 Sona TI351 (仍处于评估阶段)、请确保与 Ezurio 的支持联系人合作。  它看起来不像你使用的评估版本,配置文件等提供的无线电,虽然这可能不是问题在这里...

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

    尊敬的 Vitor:

    我看到您的状态为"已禁用"、但很明显、在您的实际 DTS 中不可能出现这种情况、因为驾驶员确实在站着说话、但无论如何、您能否确认这不是这种情况?

    我们还在 ti-linux-6.6.6.y 中以 DTSO 为示例: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-m2-cc3301.dtso?h=ti-linux-6.6.y 

    主要区别似乎 是删除了"disable-wp"和"CD-GPIOs"。 CC33xx 器件上的 GPIO1_48连接到了什么?  

    您已将 DTS 配置为使用带内 IRQ。 这意味着您没有使用 WL_IRQ 引脚、这是为了吗?

    您能否提供"reg_sdhc1_VMMC"和"reg_sdhc1_vqmmc"的代码段?

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

    我还注意到您没有:

    ti,driver-strength-ohm = <50>;

    bus-width = <4>;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="313399" url="~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1438515/cc3351-sdio-write-failed--84/5517087 #5517087"] ti,driver-strength-ohm = <50>;

    这对 TI AM62 SOC 无效、请参阅

    例如 lore.kernel.org/.../。

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

    明白了,谢谢你让我知道!

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

    我在进行测试时没有使用"disable-wp"和"CD-GPIOs"、结果相同。

    >您已将 DTS 配置为使用带内 IRQ。 这意味着您没有使用 WL_IRQ 引脚、这是为了吗?

    好的、因为我没有对应的物理引脚。 这会是问题吗? 这似乎是主要的区别在这里。

    >您能否提供"reg_sdhc1_VMmc"和"reg_sdhc1_vqmmc"的代码片段?

    /* Verdin SD_1电源*/
    reg_sdhc1_VMMC:regulator-sdhci1{
        兼容="稳压器固定";
        pinctrl-names ="默认值";
        pinctrl-0 =<&pinctrl_SD1_pwr_en>;
        高电平有效使能端;
        /* Verdin SD_1_PWR_EN (SODIMM 76)*/
        GPIO =<&MAIN_GPIO0 29 GPIO_ACTIVE_HIGH>;
        off-on-delay-us =<100000>;
        稳压器最大微伏=<3300000>;
        稳压器最小微伏=<3300000>;
        稳压器名称="+V3.3_SD";
        startup-delay-us =<2000>
    };

    reg_sdhc1_vqmmc:regulator-sdhci1-vqmmc{
        兼容="稳压器-GPIO";
        pinctrl-names ="默认值";
        pinctrl-0 =<&pinctrl_vsel_sd>;
        /* PMIC_VSEL_SD */
        GPIO =<&MAIN_GPIO0 21 GPIO_ACTIVE_HIGH>;
        稳压器名称="LDO1-VSEL-SD (PMIC)";
        稳压器最小微伏=<1800000>;
        稳压器最大微伏=<1800000>;
        状态=<1800000 0x0>、
        <3300000 0x1>;
        VIN-SUPPLY =<Registered_SD_3V3_1v8>;
    };

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

    尊敬的 Vitor:

    是的、因为我没有用于它的物理引脚。 这会是问题吗? 这似乎是主要的区别在这里。

    不、我只是要确保此配置符合预期。 在这种情况下、您是否已将 CC33xx 器件的 WL_IRQ 引脚连接到主机?

    正如 Dean 提到的、您能否向 Ezurio 联系人核实本模块已通过 AM62x 进行了验证? 如果是这样、也许他们还可以分享 DTS 示例。   

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

    尊敬的 Vitor:

    再进一步思考一下、我想确认 SOP 模式已正确定义。 您是否能够收集固件日志? 我们可以读取 SOP 状态、因为它已清楚地打印在固件日志中。