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:在 Linux 6.1.102 上、[CC33xx SDIO]驱动程序初始化失败"SDIO 读取失败(–84)&quot

Guru**** 2466550 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1529585/cc3351-cc33xx-sdio-driver-init-failed-with-sdio-read-failed--84-on-linux-6-1-102

器件型号:CC3351


工具/软件:

尊敬的 TI 支持部门:

我们目前正在努力集成运行 Linux 内核的 CC33xx SDIO Wi-Fi 模块 v6.1.102 。 驱动程序已成功编译和加载、但 Wi-Fi 模块无法正确初始化。

  1. 通过 SDIO 检测到硬件:

[root@Augentix:/root]# ls -l /sys/bus/mmc/deviceslrwxrwxrwx   1 root    root   0 Jan 1 00:03 mmc1:0001 ->./../../devices/platform / soc@8000000000/818c0000.sdc1_p0/MMC_host/mmc1/mmc1:0001
  1. 两个内核模块均已加载:

[root@Augentix:/root]# lsmod
                     未污染使用的模块大小       
cc33xx_SDIO      3889   0
CC33xx          90836 1.   
  1. 但是、在初始化期间、我们遇到以下错误:

mmc1: new SDIO card at address 0001
random: crng init done
overlayfs: upper fs does not support tmpfile.
overlayfs: upper fs does not support RENAME_WHITEOUT.
overlayfs: failed to set xattr on upper
overlayfs: upper fs does not support tmpfile.
overlayfs: upper fs does not support RENAME_WHITEOUT.
overlayfs: failed to set xattr on upper
cc33xx_sdio mmc1:0001:2: Using SDIO in-band IRQ
wlcore: cc33xx_probe :: Start
wlcore: Wireless Driver Version 1.7.0.208
wlcore: WLAN CC33xx platform device probe done
wlcore: Chip wakeup
wlcore: Set BLKsize to 128
cc33xx_sdio mmc1:0001:2: sdio read failed (-84)
wlcore: ERROR IO error during core status read
wlcore: ERROR Fatal error during driver init, cannot recover
[root@Augentix:/root]#

问题

  1. sdio read failed (-84)cc33xx驱动程序初始化过程中可能会导致什么?

我们非常感谢您为解决此问题提供指导。

此致、
Dylan

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

    有多种可能性、但无线电模块或无线电驱动程序级别均不可能。 相反、它们与硬件设计或主机 SDIO 驱动程序相关。


    1) SDIO 总线上的信号完整性较差。  检查硬件、总线阻抗、布线长度匹配等

    2) 电源去耦不良或功率不足

    3) 主机 SDIO 驱动程序中的错误

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

    感谢您发送编修。 我将按照您提到的方向操作、并确定检查硬件设计的优先级。

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

    尊敬的 Dean:

    我们已经使用逻辑分析仪捕获了 SDIO 波形 (CMD 和 CLK)、并确认:

    I/O 电压电平为 1.8V

    请参阅随附的 PulseView 屏幕截图以供参考。

    鉴于波形在硬件层面看起来正常、我们想问:
    此 SDIO 读取失败(–84) 错误是否更有可能与 SDIO 主机驱动程序有关?

    如果是、请告知我们应该在主机方面检查哪些方面?

    再次感谢您的支持!

    e2e.ti.com/.../WifiInfo_5F00_01.zip

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

    这可能是,很难说。 您的主机处理器是什么? 您是否尝试过降低 SDIO 总线速度?

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

    非常感谢您的答复。

    我们使用的是 Augentix HC1725 主机处理器。 我已尝试通过移除上的下拉电阻器来修改器件树 WL_IRQ 并针对 CC33xx 集成正确配置 DTS。 但是、我们在驱动程序初始化期间仍然看到类似的 SDIO 相关错误。

    [root@Augentix:/root]# cc33xx_sdio mmc1:0001:2: sdio read failed (-84)
    wlcore: ERROR IO error during core status read
    wlcore: ERROR Fatal error during driver init, cannot recover
    cc33xx_sdio mmc1:0001:2: sdio read failed (-110)
    wlcore: ERROR IO error during core status read
    wlcore: ERROR boot IRQ timeout
    wlcore: ERROR FW download failed

    我想与您确认我们的 DTS 配置中是否有任何因素可能导致该问题。
    e2e.ti.com/.../5824.hc1725_2D00_fpu_2D00_agt725_2D00_11_5F00_0711.txt

    此外、我们的 SoC 还具有 不支持手动降低 SDIO 总线速度 但为了供您参考、我附上了我们的电流 时钟配置 系统的接地平面。

    再次感谢您的支持!

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

    除了 cc33xx 特定项目之外、我们无法知道您的设备树是否正确。 它特定于您的硬件设计、处理器等

    出现消息“cc33xx_SDIO mmc1:0001:2:SDIO 读取失败(–84)“、因为对 SDIO 子系统的调用返回了错误。 您需要弄清楚为什么会发生这种情况。 这是在初始化阶段很早就发生的。

    在此期间、您需要在驱动程序和电路板上调试在 SDIO 级别执行的操作。

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

    尊敬的 Chang:

    您还能提供 nRST 线路的范围吗? cc33xx 和 cc33xx_SDIO 内核模块加载后、此 nRST 是否会保持高电平?

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

    尊敬的 Sabeeh:
    是的、我们已经对进行了测量 nRST cc33xxcc33xx_sdio内核模块加载后、该行仍然存在 高电平 亮起。

    请查找所附的示波器屏幕截图以供参考。 它显示了上电后立即发出的信号:

    • 黄色 :1.8V 电源 (VDD)

    • 红色 :nReset 引脚 (WL_IRQ)

    如波形所示 在 VDD 稳定后、nRESET 线变为高电平并超过 100µs 、我们认为这应该满足模块的时间要求。

    再次感谢您的友好支持和指导。 如果您发现任何异常情况或需要我们检查的其他问题、敬请告知。

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

    尊敬的 Chang:

    几个问题。

    1.您能告诉我在哪里可以找到此处理器的 SDK 或 Linux 内核源代码吗?

    2.可以从器件树中移除“CAP-SDIO-IRQ"吗“吗?

    3.您可以从记录器针脚收集日志吗? 我想检查 cc33 设备是否正确启动。

    nReset pin (WL_IRQ)

    请注意、nRESET 和 WL_IRQ 不是同一引脚。 NRESET 和 WL_IRQ 应单独连接到主机 MPU、但它们不应连接在一起。  

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

    再次感谢您的持续支持。 请查看下面的回答:

    1. 由于 SDK 的大小、我们只共享了该linux文件夹。
      请参阅源代码树中的以下路径:

    • 器件树源文件:
      linux_6.1.102/arch/arm/boot/dts/hc1725-fpu-agt725-11.dts

    • TI 驱动程序源目录:
      linux_6.1.102/drivers/bluetooth/
      linux_6.1.102/drivers/net/wireless/ti/

    我们已在此处上传此文件夹:
    https://drive.google.com/file/d/1YsQhNyxZ_B2iWI4G5p76fRRgLAsB0a9v/view?usp=sharing

    1. 我们已cap-sdio-irq从设备树中删除属性、但遗憾的是问题仍然存在、而且我们仍然看到相同的错误消息。

    2. 相关 记录器 引脚:
      您能否确认将记录器引脚直接连接到串行接收器来捕获日志是否足够?
      波特率是需要预配置、还是由 CC33xx 自动初始化?
      到目前为止、我们已经使用示波器探测了记录器引脚、但我们尚未观察到任何信号活动。

    最后、关于 nRESET 引脚 (WL_IRQ) 注释—这是我们这方面的一个拼写错误。 我们确认这一点 nRESET WL_IRQ 没有连接在一起。 感谢您指出这一点。

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

    尊敬的 Chang:

    您能否确认将记录器引脚直接连接到串行接收器以捕获日志?
    波特率是需要预配置、还是由 CC33xx 自动初始化?
    到目前为止、我们已经使用示波器探测了记录器引脚、但尚未观察到任何信号活动。

    是的、您只需将记录器引脚直接连接到 UART-USB 转换器的“RX"引“引脚即可连接到 PC。 LOGGER 引脚本质上是一个“UART-TX"引“引脚、用于对数据输出进行编码。  

    如果您在此引脚的输出上没有看到任何数据、则说明这一点。 我会检查电源轨设置是否正确以及您是否连接了 40MHz FAST CLK。  

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

    还要确保对讲机通电时 WL_IRQ 为低电平。 这是电源引脚检测、如果主机在上电时将其上拉或驱动为高电平、则器件将无法正确初始化。

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

    我将检查电源轨并确保 40MHz 快速时钟正确连接。

    只是为了确认、如果我要将记录器引脚连接到 PC 端 UART(通过 USB 转 UART 转换器)、应该使用什么波特率? 是 115200 吗?

    再次感谢您的支持!

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

    感谢您的提醒。 我将确保 WL_IRQ 为低电平、LOGGER 在上电期间为高电平。

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

    尊敬的 Chang:

    为了确认、如果我要将记录器引脚连接到 PC 端 UART(通过 USB 转 UART 转换器)、我应该使用什么波特率? 是 115200 吗?

    如果您使用的是 simplelink wifi 工具箱和记录器工具、该工具将自动收集并解析日志并设置波特率、因此没有什么可做的。

    话虽如此、波特率应设置为 3000000。

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

    尊敬的 Sabeeh:
    再次感谢您的支持。
    目前、我们仍然没有看到来自LOGGER引脚的任何输出信号。
    我们想确认、如果LOGGER根本没有输出、这是否表明芯片没有正确启动? LOGGER如果器件正常工作、上电后输出是否应立即变为有效状态?

    我们已经检查了上电序列、似乎没有问题。 我们当前的设置如下:

    1. 记录器 通过 9.1kΩ 电阻器上拉至 1.8V。 我们确认其保持在高电平 (1.8V)。

    2. WL_IRQ 直接连接到 SoC(无外部电阻)、就会保持不变 驱动至低电平 使器件保持高阻抗。

    3. nRESET 也直接连接到 SoC 并保持不变 高电平 (1.8V)。

    4. Wi-Fi 芯片的主电源电压经确认为 3.3V

    5. a. 40MHz 晶体 从而为 IC 提供所需的 FAST_CLK。

    您能否帮助我们验证上述任何一项是否可能阻止记录器输出日志?

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

    尊敬的 Chang:

    很抱歉耽误你的时间。  

    我们想确认—如果LOGGER根本没有输出、这是否表示芯片没有正确启动? LOGGER如果器件正常工作、则输出是否应在上电后立即变为活动状态?

    正确。 如果加电后记录器没有输出、则似乎存在硬件问题。 您是否通过示波器确认了这一点?  

    我们当前的设置如下:

    据我所知、此设置似乎没有问题。 您是否检查了 1.8V 和 3.3V 电源轨是否正确以及 CC33xx 器件是否已正确通电?