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:CC33XX-Linux-MPU 1.0.0.6驱动程序中的 wlcore 崩溃

Guru**** 2478765 points
Other Parts Discussed in Thread: CC3351

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1415265/cc3351-wlcore-crash-in-cc33xx-linux-mpu-1-0-0-6-driver

器件型号:CC3351

工具与软件:

您好!

我目前正在将最新的 CC33XX-Linux-MPU 集成到我们的 Yocto scarthgap 构建中、但存在一些问题。

1.0.0.4释放会很好地加载、我可以很好地启动 AP 和 STA 模式。 (蓝牙无法通过 SDIO 或 UART 工作、但这适用于另一个线程。)

1.0.0.6版本在启动时崩溃、使用相同的设备树和 Kconfig 设置。

 cc33xx 驱动程序是否符合与 Linux 6.6 LTS 内核配合使用的要求并定期进行测试? 发行说明表明该驱动程序仅适用于 Kernel 6.1?

[ 12.826499] cc33xx_SDIO mmc0:0001:2:使用 SDIO 带内 IRQ

[ 12.856198]蓝牙:[BT SDIO] BLE SDIO INIT 模块
[ 12.933236]蓝牙:[BT SDIO]探头供应商=0x97、器件=0x4077、类别=255、fn=1 0xff6ffe4673c000
[ 12.946232]蓝牙:[BT SDIO HCI] bttti_hci_add_sdio_dev
[ 12.951943]蓝牙:[BT SDIO HCI]正在启动工作线程...
[ 12.963383]蓝牙:[BT SDIO HCI]工作线程已启动
[ 12.969151]蓝牙:[BT SDIO HCI]工作线程正在睡眠...
[ 12.969200]蓝牙:[BT SDIO] TI cc33xx BLE-over-SDIO 驱动程序已启动并正在运行!
[ 13.449492] wlcore:cc33xx_probe:start
[13.456126] ---- [剪切于此处]--------
[13.460764] WARNING:CPU:1 PID:298 at /net/mac80211/main.c:630 ieee80211_alloc_hw_nm+0x98/0x5e8
[ 13.469656]已链接的模块:fsl_jr_uio cc33xx (+) CAAM_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine authenc cdes crct10dif_ce polival_ce generic bmsg_sDIO bcc33xx_sdio at24 cam_rtti_rptty_char
[13.492740] CPU: 1 PID: 298 Comm:(udev-worker) not dament 6.6.6.23-LTS-next-g24413fb66c42 #1.
[ 13.505449] pstate:60000005 (NZCv daif -pan -uao -tco -dit -ssbs BTYPE=-)
[ 13.50544] PC : ieee80211_alloc_hw_nm+0x98/0x5e8.
[ 13.528318] lr : wlcore_alloc_hw+0x30/0x478 [cc33xx]
[13.533327] sp : ffffff8000839d37e0
[13.533330] x29: ffffff8000839d37e0 x28: ffaffa15b8c88c01c x27: 0000000000000000
[13.558632]x26: ffffff8000839d3bb0 x25: ffffff6ffe4f60c128 x24: 000000000000002d.
[13.565770] x23:ffaa15bb4c60f38 x22:000000008000 x21:ffaa15b8c87f000
[ 13.565777] x20:ffff6ffe4e423000 x19:0000000000000000 x18:0000000000000000
[13.590383] x17:0000000000000000 x16:fffa15bb3dd3324 x15:0000fffba2dee38
[ 13.622095] x14:0000753304f844e8 x13:000000000000025f x12:0000000000000002
[ 13.629235] x11:0000000000000000 x10:0000000000000a60 x9:ffff8000839d35f0
[13.636372] x8 : ffff6ffe46b1d480 x7 : ffff6ffe47275a00 x6 : 0000000000000000
[ 13.636379] x5 : 00000000000000000000 x4 : 0000000000000000 x3 : fffa15b8c8655f8.
[ 13.636386] x2 : 0000000000000000
[ 13.675223] x1 : 0000000000000000 x0 : 0000000000001e58
[ 13.675230]呼叫跟踪:
[ 13.701383] ieee80211_alloc_hw_nm+0x98/0x5e8
[ 13.701398] wlcore_alloc_hw+0x30/0x478 [cc33xx]
[ 13.727475] cc33xx_probe+0xa4/0xe4 [cc33xx]
[ 13.74646262] platform_probe+0x68/0xc8
[ 13.758036] REQUITE_PROBE+0x148/0x2b0
[ 13.761700] __driver_probe_device+0x78/0x12c
[ 13.766058] driver_probe_device+0xd8/0x15c
[ 13.770243] __driver_attach+0x90/0x19c
[ 13.770249] BUS_FOR_EACH_DEV+0x7c/0xdc
[ 13.786689] DRIVER_Attach+0x24/0x30
[ 13.790264] BUS_ADD_DRIVER+0xe8/0x1f8
[ 13.794013] DRIVER_REGISTER + 0x5c/0x124
[ 13.794019] __platform_driver_register+0x28/0x34
[ 13.810807] cc33xx_driver_init+0x24/0x1000 [cc33xx]
[ 13.815812] DO_ONE_INITCALL+0x80/0x1c8
[ 13.819650] DO_INIT_MODULE+0x58/0x1e0
[ 13.846328] LOAD_MODULE+0x1d10/0x1d74
[ 13.850079] init_module_from_file+0x88/0xcc
[ 13.854351] __ARM64_sys_finit_module+0x1dc/0x2e4
[ 13.8569056] invoke_syscall+0x48/0x110
[ 13.881133] el0_Svc_common.constprop.0+0xc0/0xe0
[ 13.885842] DO_el0_Svc+0x1c/0x28
[ 13.889159] el0_Svc+0x40/0xe4
[ 13.892217] el0t_64_sync_handler+0x120/0x12c
[ 13.919505] el0t_64_SYNC+0x190/0x194
[ 13.923169]--[结束布线00000000000000000000]--
[ 13.927913] wlcore:错误无法分配 eee80211_HW
[13.933077] wlcore:错误、无法分配硬件
[ 13.955584] cc33xx_driver:cc33xx.1.auto 的探测器失败、错误为-12
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Max:

    我尚未对内核6.6应用1.0.0.6、因此我不能评论这是否可以开箱使用;通常需要一些修补程序、这也是我在这里所期望的。  

    是的、1.0.0.6版本是针对内核6.1编写的。 如果您使用 TI AM6x MPU、则可以使用 Processor SDK 10、该 SDK 包含对6.6内核中 CC33xx 的支持。 此驱动程序与1.0.0.6版本中发布的驱动程序不同。  

    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX - AM62X/10.00.07.04 

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

    尊敬的 Sabeeh:

    有意思。 好的。 我们使用的是 I MX8M Plus。 看一下您列出的处理器 SDK、看看它与我们的当前源树有何比较。 我可以从中提取补丁。

    1.0.0.6实际上完全适用于我们的内核6.6代码库、修补程序命令所抱怨的唯一文件是 drivers/net/wireless/ti/Makefile、我认为它使用的是上游选项卡、而不是空格。

    TI 正试图在内核主线中实现对 cc33xx 的上游支持吗? 我 在 LWN, lwn.net/.../上阅读了这篇文章,但在上游 Linux Git repo 中找不到提交。

    编辑:啊、我将在 https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/中 查找这些补丁。

    最大值

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

    尊敬的 Max:

    1.0.0.6实际应用于我们的内核6.6代码库、补丁命令投诉的唯一文件是 drivers/net/wireless/ti/Makefile、我认为上游使用的选项卡而不是空格。

    虽然它可能非常干净、但我相信有必要进行一些代码更改。 我下周不在办公室,但也许我可以提供您的补丁,以移动我们的6.1驱动程序到6.6。 请在10月的第一周提醒我。 我之所以提及处理器 SDK、是因为从技术上讲、这一步骤已在 ti-linux-kernel 树中完成。 也许您可以从此处提取补丁并测试:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/net/wireless/ti/cc33xx?h=ti-linux-6.6.y
    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/drivers/net/wireless/ti/cc33xx?h=ti-linux-6.6.y
     

    TI 是否试图将 cc33xx 的上游支持添加到内核主线? 我 在 LWN, lwn.net/.../上阅读了这篇文章,但在上游 Linux Git repo 中找不到提交。[/报价]

    是的、这是我们的目标。 由于修补程序系列尚未被接受、您在上游 git repo 中找不到提交。 您可以在此处跟踪维护人员和社区的最新反馈:

    https://lore.kernel.org/linux-wireless/20240806170018.638585-1-michael.nemanov@ti.com/ 

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

    您好!

    是的、k6.6不包含蓝牙 UART 驱动程序。 我们正在努力解决这一问题。 但是、我很高兴您能够让 BT 在 SDIO 上工作。  

    至于固件崩溃、您可以在 BeagleBone Black 或 AM62x 硬件上尝试使用1.0.0.6版本吗? 这至少可以告诉我我们是否已解决此问题。 自从1.0.0.4版本发布以来、在 BT 端已有许多修复。  

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

    您能否提供 BT UART 驱动程序计划推出的日期?
    非常感谢!

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

    尊敬的 Philipp:  

    我们确实提供了 BT UART 驱动程序、它们就在 CC33xx SDK 中: https://www.ti.com/tool/download/CC33XX-LINUX-MPU 

    我还提供了一个补丁、该补丁会根据您选择的提交数 0001-bluetooth-add-cc33xx-ble-driver-and-debugfs.patch 来启用蓝牙

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

    尊敬的 Sabeeh:

    嗯、我已经尝试使用蓝牙补丁、但它似乎没有按预期做出反应。

    通过 SDIO 使用它时、我看到它会在内核启动时初始化

    [   12.432608] cc33xx_sdio mmc0:0001:2: Using SDIO in-band IRQ
    [   12.461824] Bluetooth: [bt sdio] BLE SDIO init module
    [   12.534436] Bluetooth: [bt sdio] PROBE vendor=0x97, device=0x4077, class=255, fn=1 0xffff153346922000
    [   12.565592] Bluetooth: [bt sdio hci] btti_hci_add_sdio_dev
    [   12.572170] Bluetooth: [bt sdio hci] Starting work thread...
    [   12.584035] Bluetooth: [bt sdio hci] work thread is started
    [   12.593048] Bluetooth: [bt sdio] TI cc33xx BLE-over-SDIO driver is up and running!
    [   12.605874] Bluetooth: [bt sdio hci] work thread is sleeping...
    但在运行 ap_start.sh 和 ble_enable.sh 后、我 在 dmesg 中看不到预期的消息 、就像我在1.0.0.4驱动程序中看到的消息一样。
    也就是说、对于 BLE、我没有看到这种情况:
    root@imx8mm-ebp001:/usr/share/cc33xx$ ./ble_enable.sh
    root@imx8mm-ebp001:/usr/share/cc33xx$ [  298.805707] Bluetooth: [bt sdio] RX btti_sdio_irq_handler received
    [  298.812272] Bluetooth: [bt sdio] RX packet_len:10 packet_type:255 packet header hex: 0a 00 00 ff
    [  298.816046] systemd-journald[148]: Sent WATCHDOG=1 notification.
    [  298.821140] Bluetooth: [bt sdio] RX packet , packet data(without header) hex: ff 02 04 2a 00 00 ef ef
    [  298.836331] Bluetooth: [bt sdio] vendor packet received
    [  298.841570] Bluetooth: [bt sdio] vendor packet- ble is up
    我将使用以下节点把它连接到我的控制器上的 USDHC MX8M Mini。
    btti: btti@1 {
    compatible = "ti,cc33xxbt"; // Use with TI sources from upstream 6.6 port
    reg = <1>;
    };

    wlcore: wlcore@2 {
    // compatible = "ti,cc33xx"; // Use with 1.0.0.4 - 1.0.0.6 drivers
    compatible = "ti,cc3351"; // Use with TI sources from upstream 6.6 port
    reg = <2>;
    };
    通过 SDIO WiFi 仍然可以正常工作、但 BLE 线程在 ble_enable.sh 运行时无法唤醒?
    我尝试使用将驱动程序连接到 UART  
    &uart1 { /* cc33xx bluetooth */
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_uart1>;

    // rts-gpios = <&gpio4 23 GPIO_ACTIVE_LOW>;
    // cts-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>;
    uart-has-rtscts;
    // fsl,dte-mode;

    status = "okay";

    bluetooth {
    compatible = "ti,cc33xx-bt";
    cc33xx-supply = <&reg_wlan_en>;
    max-speed = <115200>;
    };
    };
    但这也不起作用。