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-SOFTWARE:HCI-UART 直接测试模式 SOCAT 蓝牙节点

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1542310/cc33xx-software-hci-uart-direct-test-mode-socat-bluetooth-node

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

工具/软件:

您好、

我对认证设置有疑问。

我使用的是软件包版本 1.0.0.9、因此包含以下版本

  • 固件版本:1.7.0.312
  • 驱动程序版本:1.7.0.233
  • PHY 版本:1.2.0.45.6.0.37.69

我希望主机板上提供用于我的 HCI 命令的单独 UART 输出。

我尝试将免费的 UART 与 SOCAT 连接、但我发现由于器件树中的蓝牙子节点、我没有可用的 ttymxc0。 Linux 用户指南(迁移指南)(cc33xx/docs/html/linux/migration-guide.html#ble-over-UART) 中也介绍了该方法

&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>;

	fsl,uart-has-rtscts;

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

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_uart1_host_wake>;

		interrupt-parent = <&gpio2>;
		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
		irq-gpio = <&gpio2 8 GPIO_ACTIVE_LOW>;
		interrupt-names = "host-wakeup";
	};

TI 是否有解决方案可以实现这一点、并且是否可以通过主机板上的额外 UART 直接发送 HCI 命令?

非常感谢!

SJ

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

    一种选择是不使用 serdev(删除蓝牙节点)。 这将带回 TTY、然后您可以通过 btattach 附加。

    请注意、您仍需要通过 wifi debugfs 接口启用蓝牙、

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

    尊敬的 Dean:

    您是否有要使用的 hciattach 命令的示例? 我自己也没试过。

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

    您好、 Dean Ramsier 

    我也想举一个例子。

    我现在自行尝试了、从器件树中删除了蓝牙子节点、可以看到 ttymxc0 再次可用。

    但当我使用 btattach 或 hciattach 来连接设备时、我总是得到一个“蓝牙:hci0:操作码 0x C03 失败:–110",“,因此、因此复位失败、我可以使用 hciconfig 看到 bdaddr 和特性列表为空、因此这里出现了失败的内容。 尝试使用一些已注册的协议:

    btattach -B /dev/ttymxc0 -S 115200
    Attaching Primary controller to /dev/ttymxc0
    [  777.277270] Bluetooth: HCI UART driver ver 2.3
    [  777.281839] Bluetooth: HCI UART protocol H4 registered
    [  777.287023] Bluetooth: HCI UART protocol BCSP registered
    [  777.292526] Bluetooth: HCI UART protocol LL registered
    [  777.297754] Bluetooth: HCI UART protocol ATH3K registered
    [  777.303256] Bluetooth: HCI UART protocol Three-wire (H5) registered
    [  777.309887] Bluetooth: HCI UART protocol Broadcom registered

    对此有何看法?

    一个工作的例子将是真棒。

    非常感谢

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

    您需要先启用 BT、否则它不会响应。 然后使用 H4 协议、因为不需要固件或其他自定义协议步骤。

    尝试以下作为启动脚本(无论是否使用 serdev 都有效)。 在平台上完成此操作后、您可以执行 SOCAT 工作等、将其移动到另一个端口:

    #!/bin/sh


    PHY=`ls /sys/class/ieee80211`μ s

    回波“1">“>/sys/kernel/debug/ieee80211 /$PHY/cc33xx/ble_enable

    如果是[-c /dev/ttymxc0 ];
     睡眠 1
     btattach -B /dev/ttymxc0 -P H4 &
    和数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 SJ:

    CC33xx BLE 通信不使用任何中断线路。 您是否可以尝试删除器件树中的中断和中断父线路?  

    此外、您能否提供 4 条 UART 线路 (RTS、CTS、TX、RX) 的逻辑分析仪捕获结果?

    最后、为了确认、您正在调用 echo 1 >/sys/kernel/debug/ieee80211/phy0/cc33xx/ble_enable debugfs 命令、对吗? 必须这样做才能启用 BLE 接口。

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

    尊敬的 Sabeeh Khan1Dean Ramsier 

    我移除了整个蓝牙子节点、包括所有中断和中断父级、因此器件树 uart1 如下所示:

    &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>;
    
    	fsl,uart-has-rtscts;
    }

    我现在进行以下处理:

    *重启
    *加载驱动程序
    * echo 1 >/sys/kernel/debug/ieee80211/phy0/cc33xx/ble_enable
    * btattach -B /dev/ttymxc0 -S 115200 -P H4 &
    * SOCAT -d -d /dev/ttymxc0、raw、b115200、echo=0 /dev/ttymxc3、raw、b115200、crtscts、echo=0

    btAttach 后、我在 UART 上获得以下通信:

    hciconfig -A 具有以下结果:

    # hciconfig -a
    hci0:   Type: Primary  Bus: UART
            BD Address: 78:CD:55:19:65:5B  ACL MTU: 255:10  SCO MTU: 0:0
            UP RUNNING
            RX bytes:319 acl:0 sco:0 events:28 errors:0
            TX bytes:198 acl:0 sco:0 commands:28 errors:0
            Features: 0x00 0x00 0x00 0x00 0x60 0x00 0x00 0x00
            Packet type: DM1 DH1 HV1
            Link policy:
            Link mode: PERIPHERAL ACCEPT
    Can't read local name on hci0: Input/output error (5)

    因此、bdaddr 不再为空、特征列表也不是完全空。

    但当我现在尝试对新连接的 UART 或其他命令(例如 READ bdaddr)发送 HCI 复位命令 (01 03 0C 00) 时、我无法在 UART 上看到任何通信。

    看起来 SOCAT 并不能像预期的那样正常工作。 有人有这方面的经验吗?

    谢谢

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

    没有理由在包含 cc3351 的平台上运行 btattach、因为您根本没有运行 bt 堆栈。 所有 BT 通信都应来自必须具有 bt 协议栈或等效设备的外部设备(例如,需要直接控制对讲机的 CMW270 测试仪)。

    尝试以下 SOCAT 行:
    soCAT -x -d /dev/ttymxc0、rawer、echo=0、crtscts=1、b115200 /dev/ttymxc3、rawer、echo=0、crtscts=1、b115200 &

    之后、希望连接到 ttymxc3 的外部设备应将所有流量传递到 ttymxc0、反之亦然

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

    哦、主啊。 是的、当然在这种情况下没有必要启动 hci0。 不知道我怎么想。

    现在可以看到流量。 非常感谢。