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.

[参考译文] CC33XX-软件:btti_uart

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1450706/cc33xx-software-btti_uart

器件型号:CC33XX-SOFTWARE
Thread 中讨论的其他器件:CC3301

工具与软件:

您好!

我正在使用 M2-CC3301 (MCU126A)、标题为 "I. MX 8M Mini"主机并尝试使 bttti_uart 运行。

我使用的驱动程序版本为1.0.0.7、因此:

  • 无线驱动程序版本1.7.0.128
  • 无线固件版本1.7.0.188
  • 无线 PHY 版本1.2.39.5.44.67

我的第一个尝试是将带内 SDIO 用于蓝牙、因此我刚刚将以下内容添加到了 devicetre 中的 MMC 节点:

btti@1 {
        reg = <1>;
        compatible = "ti,cc33xxbt";
};

运行正常、我能够使用蓝牙接口、如"Linux CC33XX 用户指南"的"software-examples"->"ble-basics"部分中所述。

现在、我尝试在 UART 接口上运行该示例、这看起来更复杂一点。

我已将以下内容添加到 devicetree 中、如"Linux CC33XX 用户指南"的"迁移指南"中所述:

cc33xx_supply: fixedregulator@1 {
        compatible = "regulator-fixed";
        regulator-name = "cc33xx_supply";
        regulator-min-microvolt = <1800000>;
        regulator-max-microvolt = <1800000>;
        gpio = <&gpio_buff 1 GPIO_ACTIVE_HIGH>; /* Using WL REG ON as well here on #WDISABLE1 */
        enable-active-high;
};

&uart1 { /* Bluetooth UART */
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
        status = "okay";

        assigned-clocks = <&clk IMX8MM_CLK_UART1>;
        assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;

        resets = <&modem_reset>;
        fsl,uart-has-rtscts;

        bluetooth {
                compatible = "ti,cc33xx-bt";
                cc33xx-supply = <&cc33xx_supply>;
                max-speed = <115200>;
        };

};

当在 dmesg 中为蓝牙执行 grep 操作时、我会得到以下数据:

# dmesg | grep "Bluetooth"
[    0.078914] Bluetooth: Core ver 2.22
[    0.078947] Bluetooth: HCI device and connection manager initialized
[    0.078954] Bluetooth: HCI socket layer initialized
[    0.078960] Bluetooth: L2CAP socket layer initialized
[    0.078970] Bluetooth: SCO socket layer initialized
[    1.730326] Bluetooth: RFCOMM TTY layer initialized
[    1.735218] Bluetooth: RFCOMM socket layer initialized
[    1.740383] Bluetooth: RFCOMM ver 1.11
[    1.744143] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    1.749460] Bluetooth: BNEP filters: protocol multicast
[    1.754693] Bluetooth: BNEP socket layer initialized
[    1.759663] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    1.765589] Bluetooth: HIDP socket layer initialized
[    6.256206] Bluetooth: [bt sdio] BLE SDIO init module
[    6.456486] Bluetooth: [bt sdio] PROBE vendor=0x97, device=0x4077, class=255, fn=1 0xffff0000048a9800
[    6.465810] Bluetooth: [bt sdio] sdio device tree data  not available

看起来、他仍在尝试使用 bttti_sDIO 路径? 如何在 SDIO 和 UART 之间切换?

我还尝试进一步调试 bttti_uart.c。 使用 rmmod 删除模块并使用 insmod 再次添加模块时、我可以看到以下输出:

[  163.965415] btti serial0-0: Host wakeup NOT enabled
[  163.970391] btti serial0-0: SM: Got EVENT_PROBE_DONE, moving from STATE_PROBING to STATE_HW_OFF

查看 bttti_uart.c 的源代码时、似乎他在成功打开串行接口后卡住了。 但现在他正在等待来自 CC3301的"魔法"数据包、以便注册 HCI 器件、但成效显著。 有没有我遗漏的东西? CC3301将如何知道应使用哪个接口? 为什么 UART 上没有任何内容? 我还用逻辑分析仪检查过、UART 线路上没有任何东西?

有什么想法或想法吗?

非常感谢!

此致、

SJ

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

    蓝牙不是此无线电上的独立设备、它与 WiFi 属于同一核心。  您需要跨 Wi-Fi 接口发送命令才能启用该功能。

    请参阅 cc33xx_rootfs/usr/share/cc33xx 中的 ble_enable.sh 脚本。  运行将触发您要寻找的魔术包。  如果要使用 UART...

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

    尊敬的

    感谢您的回答。

    蓝牙不是此无线电上的独立设备、它与 WiFi 属于同一核心。  您需要跨 Wi-Fi 接口发送命令才能启用该功能。

    我说的没错、我要使用 SDIO 接口来触发 CC3301上的蓝牙功能? 但是、这与使用蓝牙的 bttti_sDIO 方式有何不同、此处 ble_enable 脚本也用于触发蓝牙、对吧? 所以对我来说、我们仍然不清楚 CC3301如何知道在触发 ble_enable 脚本后应使用哪个蓝牙接口? 或者主机是根据当前器件树配置、以"魔术"数据包发送此信息到 CC3301?

    总之、我曾尝试执行./ ble_enable.sh 脚本、但我看到的只是在 UART 上将 RTS 线路设置为低电平。 之后没有发生任何其他情况。

    Bluetoothh 部件已从 MMC 节点中删除。

    我的想法太少了、这里可能会出现什么问题。 如果有其他想法、问题可能出在哪呢?

    非常感谢!

    此致、

    SJ

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

    尊敬的 SJ:

    您能否完整分享您的 devicetree?  

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

    Hi 

    很抱歉我的回复延迟了、因为我是在过去三周的假期、请查看随附的设备树。

    e2e.ti.com/.../imx8mm_2D00_ea_2D00_ucom_2D00_kit_5F00_v3.txt

    此致、

    SJ

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

    Hi

    您能找到任何与此相关的问题吗?

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

    Hi

    我已经观察到的另一点是、启动期间的输出如下:

    [   2.470373] IMX-UART 30860000.serial:无法使用 regulators:fixedregulator@1创建设备链接(0x180)

    所以、我的蓝牙 UART 稳压器好像出现了问题? 有什么想法、这里可能会出现什么问题? 这可以与我的原始文章中的驱动程序输出匹配:

    btti serial0-0:SM:获取了 EVENT_PROBE_DONE、从 STATE_PROTECTION 移动到 STATE_HW_OFF

    在这里、驱动器绝不会在 STATE_HW_OFF 之后达到另一个状态。

    非常感谢

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

    尊敬的 SJ:

    您能否尝试将"稳压器始终开启"添加到蓝牙稳压器配置中并删除 GPIO 配置、因为这将由 WIFI 稳压器控制?

    		cc33xx_supply: fixedregulator@1 {
    			compatible = "regulator-fixed";
    			regulator-name = "cc33xx_supply";
    			regulator-min-microvolt = <1800000>;
    			regulator-max-microvolt = <1800000>;
    ---			gpio = <&gpio_buff 1 GPIO_ACTIVE_HIGH>; /* Using WL REG ON as well here on #DISABLE1 */
    			enable-active-high;
    +++			regulator-always-on;
    		};

    ~罗杰

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

    尊敬的 

    感谢您的建议。 这让我更进一步。 现在、我从 bttti_uart 驱动器获得以下输出:

    # dmesg | grep "btti"
    [   5.651364] btti serial0-0:主机唤醒未启用
    [   5.656327] btti serial0-0:SM:GOT EVENT_PROBE_DONE、从 STATE_PROTECTION 移动到 STATE_HW_OFF
    [   5.696764] btti serial0-0:SM:获得了 EVENT_COMPUTER_ENABLE、从 STATE_HW_OFF 移至 STATE_HW_ON

    因此、状态机进一步进入 State_HW_ON 状态。 但就这些。 我想事件"EVENT_HCI_WAKEUP_FRAME_RECEIVED"绝不会出现、因此从未执行"bttti_uart_register_hci_device"。 有什么想法需要完成哪些操作才能接收该唤醒帧?

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

    您需要运行该 ble_enable 脚本...

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

    尊敬的

    我已经尝试过了、但之后我希望能够看到 HCI 器件、检查"hciconfig -a "时的情况并非如此。 因此、我使用逻辑分析仪检查了 UART 线路、可以看到 RX 线路上有一个封装、RTS 设置为低电平、请参阅附加图像。

    但我现在不应该看到 HCI 器件了吗? 当查看 Linux 用户指南中软件示例的 BLE 基础知识部分时、它应该现在可以获取、对吧?

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

    事实证明 UART 存在问题、使用 CONFIG_IMX_SDMA=m 而不是 CONFIG_IMX_SDMA=y 来解决了问题。 感谢大家!

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

    确保更新到1.0.0.8。  1.0.0.7中存在 BT UART 问题、在某些情况下可能会出现这些问题。

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

    、这已经在1.0.0.8上。