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.

[参考译文] CC2564MODA:在辅助A2DP模式下未禁用BLE功能标志

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1080816/cc2564moda-ble-feature-flag-not-disabled-in-assisted-a2dp-mode

部件号:CC2564MODA
主题中讨论的其它部件: TI-BT-4-2-STack-Linux-ADDON

您好,

我们目前正在努力将CC2564MODA集成到我们的Linux系统中。

目前,我们正在使用CC2564MODA评估板。 我们使用的Linux内核是4.4 ,而bluez版本是5.50。

需要辅助模式将音频流直接路由到集成DSP或从集成DSP路由。

我们正在使用 https://www.ti.com/tool/CC256XB-BT-SP上的servicepack版本1.8 (发布日期:2019年8月16日)。

为了配置波特率,我们尝试使用BHET工具。 遗憾的是,该链接不再起作用(https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/71.9651万/cc256xqfnem-cc256x-bluetooth-hardware-evaluation-tool-download-broken),因此我们使用了WL18xx模块中的HITIester工具: https://www.ti.com/tool/WILINK-BT_WIFI-WIRELESS_TOOLS 

因此,第一个问题是:这种工具是否适合继续使用,或者是否有更适合的工具?

因为我们已经开始使用WL18xx的工具。

根据CC256xB BT Service Pack (CC256XB_BT_SP_v 1.8 发行说明)中的文档,对于协助模式,需要执行两个脚本:
initscripts-TIInit_TIInit_add.16_bt_spec_spa.bts 6.7 ,然后 是6.7 .4.1 16_avpr_add-on.bts
本章1.4 Assisted A2DP (A3DP)或启用WBS也提到,BLE或AVPR可以同时实现。

1.4。辅助A2DP (A3DP)或WBS启用
使用辅助模式(A3DP / WBS)需要运行附加脚本"initscripts-
TIInit_initscripts.16_avpr_add-on.bts 6.7 ”,然后运行主service pack“initscripts -
TIInit_VP.16_bt_spec_VPR.BTS 4.1 ”,启用6.7 ,因为它在默认情况下不启用。
当CC256xB器件与TI双模式蓝牙堆栈一起使用时,此过程
只要是CC256XB.h文件,蓝牙堆栈就会自动处理该文件
(上面的说明)被复制到stack目录(<install_dir>\Bluetootha\btpsvend\)。
注:一次可以启用BLE或AVPR。 请参阅CC2564B
设备数据表,了解更多详细信息。

由于我们不使用双模式蓝牙堆栈,我们必须自行加载固件。

为了测试固件加载,我们首先尝试使用Service Pack中提到的一个示例配置:

 蓝牙6.7 .16.bts
此文件是通过组合6.7 .16_bt_spec_spic.bts 4.1 和生成的
initscripts-TIInit_TIinit.16_ble_add-on.bts 6.7。 它旨在与TI双模式蓝牙配合使用
STACK TI-BT-4-2-STack-LINUS-ADDON。 它还可以与其他Linux堆栈(如bluez)一起使用。

如果我们将此BTS文件放入固件文件夹/lib/firmware/ti-connectivity,我们可以成功执行hciattach并与电话交互(采集,扫描,配对,连接等)。
所以,基本操作似乎是可以的。

但由于我们需要辅助模式,这项测试只是为了表明其他模式正在工作。 我们需要使用AVPR配置,而不是BLE配置。

根据SWRU581.pdf附录D,“Using the CC256x Service Pack with Linux (TI-BT-4-2-stack-Linux-ADDON)”描述了如何编写这两个BTS文件。

遗憾的是,我们无法完全遵循该文档中描述的步骤,因为我们无法在HCITester中打开BTS文件。

为了获得BTS文件(如文本而不是二进制格式所述),我们必须使用脚本垫(tstertools的一部分)打开文件。 在选择正确的XML配置后,我们能够在脚本板中编写两个文件。

出于测试目的,我们创建了两个文件,这些文件也附在该请求中:

    • EDAG_BTS_TEST_2_BLE_LINUX.BTS /EDAG_BTS_TEST_2_BLE_LINUX.txt
    •  EDAG_BTS_TEST_3_AVPR_LINUX.BTS/EDAG_BTS_TEST_3_AVPR_LINUX.txt

放入/lib/firmware/ti-connectivity后,我们已将它们重命名为6.7 Tm16。

下面是我们收到的结果。

EDAG_BTS_TEST_2_BLE_LINUX.BTS /EDAG_BTS_TEST_2_BLE_LINUX.txt:
hciattach工作正常,我们可以使用电话执行蓝牙通信,如查询,扫描,配对等。)

 EDAG_BTS_TEST_3_AVPR_LINUX.BTS/EDAG_BTS_TEST_3_AVPR_LINUX.txt
执行hciattach时,bluez堆栈报告以下消息:

    • 找到德州仪器(TI)的芯片!

固件文件:6.7 /lib/firmware/ti-connection/TIInit_TIInit.16.bts

正在将脚本发送到串行设备

已加载BTS脚本版本1

Texas:将波特率更改为11.52万,流控制更改为1

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWRCSCCCCWRCCWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRCCCC

已添加设备hci0

无法初始化设备hci0:设备或资源忙(16)无法初始化设备:设备或资源忙

打印CCC行,因为我们已经在内核中启用了调试。

为了了解这些信息,我们深入了解了Bluez堆栈。
结果是,当内核使用HCI命令请求芯片时,初始化过程中出现该问题。

以下屏幕截图显示了该问题。 在第605行中,如果芯片是否支持LE,则会有一个请求。

我们的期望是模块报告错误,但实际上它在此时报告正确。

为了获得此信息,我们使用内核的动态调试功能来跟踪两个固件加载之间的通信。
日志已附加:dmesg_EDAG_BTS_test_2_BLE_Linux_2_Changed_Kernel 和dmesg_EDAG_BTS_test_3_AVPR_Linux_Changed_Kernel。

dmesg_EDAG_BTS_test_2_BLE Linux _2_Changed_Kernel:
在第355 - 380行中,您可以看到请求 BT_HCI_CMD_READ_LOCAL _features 0x1003。 出于调试目的,在第370行再次打印了答案:FF Fe 2D Fe db ff 7b 87

dmesg_EDAG_BTS_TEST_3_AVPR_Linux_Changed_Kernel:
在第305 - 355行中,您可以看到请求 BT_HCI_CMD_READ_LOCAL _features 0x1003。 出于调试目的,在第320行再次打印了答案:FF Fe 2D Fe db ff 7b 87

从Bluez堆栈中,我们可以得出结论,此处所读的功能来自上面代码部分的hdev。
由于使用两个不同的固件版本时响应相同,LMP_le_capable函数似乎假定在这两种情况下都可以使用BLE。 如果是AVPR设置,则不是这样,LE_setup函数在第611行中失败。

仔细查看函数LMP_le_capable,我们可以看到哪个位是错误的:

    • #define LMP_le_capable (dev)    ((dev)-> features[0][4]& LMP_LE)  
    • #define LMP_LE 0x40
    • 索引4处的字节是十六进制"DB" 1101 1011

如果禁用BLE /加载AVPR,我们希望控制器报告的功能应为0x9B,而不是0xDB。

我们可以做些什么来改变BT控制器的行为?

此致,

Adalbert

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

    附加了我在上一篇文章中提到的文件...

    e2e.ti.com/.../BTInfo.zip

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

    您好,Adalbert,

    因此,第一个问题是:此工具是否适合继续使用或是否有更适合的工具?

    这是最好的工具。

    遗憾的是,我们无法完全按照该文档中描述的步骤操作,因为我们无法在HCITester中打开BTS文件[/报价]。

    这是奇怪的,因为你应该能够在HCITester打开BTS。 在HCITester中打开.bts时,您会看到什么错误? 以下是有用 的指南。

    到目前为止,您的设置似乎是正确的。 我想知道 ,您是否 独立运行两个测试用例(EDAG_BTS_TEST_2_BLE_LINUX.BTS和EDAG_BTS_TEST_3_AVPR_LINUX.BTS)? 或者您是否按顺序运行这两个?

    您的总体目标是同时启用AVPR和禁用BLE吗?

    谢谢!
    雅各布

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

    您好,Jacob,

    感谢您的反馈。 我们将根据指南重新检查在HCITester中导入文件的问题。

    这两起案件是独立审理的。 是的,我们的目标是同时启用AVPR和禁用BLE。
    问题是,模块仍报告BLE可用,这会在初始化期间导致问题。 这就是我们在EDAG_BTS_TEST_3_AVPR_LINUX.BTS中尝试配置的内容。

    如果打开此文件,是否可以看到此组合配置正确?

    此致,
    Adalbert

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

    您好,Adalbert,

    感谢您提供更多信息。 在 您的EDAG_BTS_TEST_3_AVPR_LINUX.BTS中,您似乎已将 initscripts-TIInit_TIinit.16_bt_spec_init.bts与6.7 initscripts-TIInit_TIinit.16_avpr_add-on.bts组合4.1 在一起。6.7 这是您创建.BTS的方式吗?

    如果是,我认为您可能需要先将HCI_VS_LE_Enable命令添加到.BTS中,然后再添加Send_HCI_VS_AVPR_Enable命令。 应将参数设置为“0”以禁用LE并防止加载LE代码。

    谢谢!
    雅各布

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

    您好,Jacob,

    我们收到的错误消息如下所示:

    此时已加载XML文件。

    该问题出现在运行Windows 10的不同机器上,甚至出现在附近的Linux/Wine机器上。
    但我最近了解到,并非所有机器都暴露了此问题...

    仅供说明:我们禁用BLE的计划基于芯片文档中的几条提示,即BLE和AVPR是相互排斥的:

    我们的解释是否正确?

    我们将添加您建议的HCI_VS_LE_Enable命令,并使用此配置执行更多测试。

    此致,

    Adalbert

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

    您好,Adalbert,  

    是的,您的回答正确,即AVPR和BLE是相互排斥的。

    运行400.4336万运行Windows 10的不同机器上,甚至在这里的Linux/葡萄酒机器上也会出现该问题。
    但我最近了解到,并非所有机器都暴露了此问题...[/QUOT]

    有趣的是,并非每台计算机都发生此错误。 基于此帖子,我相信您的BTS 可能已损坏。 您可能需要再次创建BTS。 这也可能是 拥有的HCITester版本的问题。  

    我能够使用HCITester版本3.0 .0.37 成功打开您的"EDAG_BTS_TEST_3_AVPR_LINUX.BTS":

    谢谢!
    雅各布

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

    您好,Jacob,

    我们在机器上使用相同的版本。
    目前,我们怀疑在特定机器上打开BTS文件的问题取决于在这些特定机器上早期安装的HCITester版本。
    可能是不完整的卸载例程存在问题?
    但我们现在知道,WL18xx与我们的模块匹配,我们至少可以尝试继续进行测试。

    我们在BTS文件中使用HCI_VS_LE_Enable命令进行了一些进一步的测试。
    我们在脚本中的Send_HCI_VS_AVPR_Enable命令之前添加了该命令。

    由于它出现了两次,我们创建了3个不同的BTS文件,添加了HCI_VS_LE_Enable,参数在第1,第2和两个位置设置为0。

    不幸的是,所有3个文件的结果都相同-模块仍在功能请求中报告支持BT低能量。
    您可以在附件中找到BTS文件以及我们所做的跟踪。

    hci_init1_req:256:hci0 0
    hci_req_add_ev:324:hci0操作代码0x1003 PLEN 0
    HCI_Prepare_cmd:309:SKB len 3.
    hci_req_add_ev:324:hci0操作代码0x1001 PLEN 0
    HCI_Prepare_cmd:309:SKB len 3.
    hci_req_add_ev:324:hci0操作代码0x1009 PLEN 0
    HCI_Prepare_cmd:309:SKB len 3.
    REQ_RUN:51:长度3
    HCI_cmd_work:4262:hci0 cmd_cnt 1 cmd queued 3.
    hci_send_frame:3372:hci0类型1 len 3
    hci_send_to_sock:196:hdev 8323.9万 len 3.
    HCI_UART_SEND_FRAME:282:hci0:键入1 len 3
    ll_enqueue:335:hu 831a13c0 skb 99ea1e40
    ll_enqueue:346:设备处于唤醒状态,正常发送
    HCI_UART_TX_WAKEUP:150:
    serial_write:335:tty ttyUSB0:serial_write - 4字节
    USB_SERIAL_DEBUG_DATA:389:cp210x ttyUSB0:USB_SERIAL_GENERICE_WRITE_START -长度= 4,数据= 01 03 10 00
    HCI_UART_TTY_WAKEUP:559:
    HCI_UART_TX_WAKEUP:150:
    usb_serial_generic_read_bulbate_callback:391:cp210x ttyUSB0:usb_serial_generic_read_bulbate_callback -话术0,len 15
    USB_SERIAL_DEBUG_DATA:389:cp210x ttyUSB0:usb_serial_generic_read_bulate_callback - length = 15,data = 04 0e 0c 01 03 10 00 ff fe 2d fe db ff 7b 87
    usb_serial_generic_submit_read_urb:315:cp210x ttyUSB0:usb_serial_generic_submit_read_urb -模板0

    •   我们从hci_init1_req函数开始,它只注册HCI设备
    •   然后,按照我们在第1篇文章中的说明请求BT_HCI_CMD_READ_LOCAL_features 0x1003
    •   对于所有3个文件,我们仍然得到相同的响应:FF Fe 2D Fe db ff 7b 87

    我们希望在成功加载AVPR固件的情况下,响应会有所不同,因为BT-LE不再可用。
    因此,HCI_VS_LE_Enable命令对功能响应没有影响,或者AVPR固件激活了该功能。

    如果AVPR固件加载出现问题,会发生什么情况? 这是否会执行设备重置,同时重新启用BT-LE功能? 我们是否可以看到AVPR固件的加载是否成功?

    此致,

    Adalbert

    e2e.ti.com/.../BT_5F00_NoBLE_2D00_Configs.zip

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

    您好,Adalbert,

    AVPR_NobLE_2022.0303万_#2.BTS和#4.BTS之间有何区别? 它看起来像这两种。BTS加载默认CC2564B固件,禁用LE,然后启用AVPR。

    您是否可以尝试再次加载这些.bts文件,这次根据 本指南获取固件和HCI日志? 我想查看LE_Enable命令是否被正确解释并读取状态结果。  

    如果400.713万如果AVPR固件加载出现问题会发生什么情况? 这是否会执行设备重置,同时重新启用BT-LE功能? 我们是否可以看到,AVPR固件的加载是否成功?[/QUOT]

    我们应该能够在固件日志中看到这一点。 您需要一个UART到USB转换器(用于在CC2564B上处理1.8V逻辑转换)。  

    谢谢!

    雅各布  

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

    您好,Jacob,

    文件2022.0303万_#2在AVPR修补程序之前执行Send_HCI_VS_LE_Enable命令。

    文件2022.0303万_#4在AVPR修补程序前后执行Send_HCI_VS_LE_Enable命令。

    由于这两个文件在我们的设置中都没有影响,我的结论是,如果加载了这些文件,模块就不能正确回答功能请求。

    如何解决此问题? 这似乎是我们在第1篇文章中所描述的bluez问题的根本原因。
    如果加载了AVPR修补程序并且禁用了BLE,我们需要执行什么操作才能使模块禁用BLE报告功能?

    关于固件日志,我不确定我们能否获得这些日志。 请让我查看链接的文档,看看我们能否获得这些信息。

    此致,
    Adalbert

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

    您好,Jacob,

    深入了解模块报告的有关BLE支持的原始帖子,似乎与蓝牙核心规格中定义的功能掩码相对应。 我指的是核心规格5.3。

    此功能掩码打印在第590页的3.3 功能掩码定义章节中。
    位38被描述为"LE支持(控制器)",如果我没有错,则对应于字节4的位38,该字节4由初始POST中的行0x40掩码。

    通过查看HCITester中可用的命令,我找到了HCI_VS_Set_Supported_Features命令,该命令似乎可以完全解决这些功能。
    我唯一想知道的是字节数的索引。 至少说明允许0-2之间的偏移。

    这是一个真正的限制还是仅仅是一个限制,可能来自早期的规格?

    我想,以下行应该会禁用BLE的公告:

    ######################################################
    ##禁用LPM功能掩码的位38:LE支持(控制器)
    ######################################################
    Send_HCI_VS_Set_Supported_Features,0x04,0x04,0x00
    wait_HCI_Command_Complete_VS_Set_Supported_Features_Event 5000,任何,HCI_VS_Set_Supported_Features,0x00

    您是否可以确认命令会影响特征掩码?

    此致,
    Adalbert

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

    您好,Adalbert,

    本周我将调查此请求并跟进。

    谢谢!
    雅各布

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

    您好,Adalbert,

    我在 Send_HCI_VS_Set_Supported_Features , 0x04, 0x04, 0x00获取HCI日志时尝试运行命令。 但是,我不确定这是否确实禁用了BLE通信。 如果您将此命令添加到.bts中,您是否仍能配对,扫描,广告等?

    e2e.ti.com/.../HCI_5F00_Supported_5F00_Features.lgr -您可以使用 无线工具 包中的Logger应用程序查看此文件。

    谢谢!
    雅各布

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

    e2e.ti.com/.../LoggerFiles_5F00_2022.0321万.zip

    您好,Jacob,
    很抱歉回复太晚了。 我一直在等待我的硬件原型系统继续进行测试。

    我能够连接到模块的调试TX引脚,将记录器连接到正在运行的系统,并获得固件加载的更多信息。

    我不习惯使用记录器应用程序,所以我尝试从已知的良好配置开始-在这种情况下链接的EDAG_BTS_TEST_2_BLE_LINUX.BTS文件。 您可以找到相应的lgr文件。

    我开始上传补丁和HCI_VS_Goto_Address,并要求执行补丁。
    在应对应于行#3455的lgr文件中,后跟#3462中的HCI_COMMAND_COMPLETE事件。
    在这些行之间,有一个奇怪的信息:
    3460   12:18:57.384  +0:00:01.744   Post修补程序:解析命令%d时出现问题 操作码0x%x,数据包:0x%x    
    这是我需要注意的吗?

    在下一步中,我使用 EDAG_BTS_TEST_3_AVPR_LINUX.BTS进行了相同的测试。
    Send_HCI_VS_Goto_Address 0xFF83,0x0.0087万b79,0x0万,0x0万,0x0万, 0x0万
    wait_HCI_Command_Complete_VS_Goto_Address_Event 5000,0x00,0x事务83,0x00


    我查找了HCI_VS_Goto_Address命令,并在第3225行和以下行中找到了该命令:

    3225   12:09:56.202  -0:43: 20.977   0x0.0059万B   0x0.0059万B   SC   -->    
    3226   12:09:56.205  -0:43:20.974   0x0.0059万C   0x0.0059万C   <---   HCI_Command_Complete_Event    
    3227   12:09:56.211  -0:43:20.968   HCC_Process_HCI_commands:HCI_VS_Write_Memory_Block (第3f组操作代码0x305)    
    3228   12:09:56.212  -0:43:20.967   HCC_GET_NUM_of_HOST_commands。 总可用空间=3,报告给主机=1    
    3229   12:09:56.212  -0:43:20.967   HCI发送事件:HCI_COMMAND_COMPLETE_EVT    

    在此之后,记录器输出中的其余命令均不存在。
    这些措施似乎根本没有执行。

    加载修补程序并在加载其余修补程序之前执行HCI_VS_Goto地址命令是否正确?

    此致,

    Adalbert

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

    您好,Adalbert,

    很抱歉耽误你的时间-我上周在度假。  

    在402.2771万在这两条线路之间会出现一个奇怪的消息:
    3460   12:18:57.384  +0:00:01.744   Post修补程序:解析命令%d时出现问题 操作码0x%x,数据包:0x%x    
    这是我需要注意的吗?[/QUOT]

    这可能是一个问题。 我已经使用默认的.bts和AVPR修补程序以及默认的.bts和BLE修补程序获取了我自己的日志。 我在日志中未看到此消息(请参阅下面的附件)。   

    在402.2771万在加载补丁程序前加载命令并执行HCI_GoAddress_patches/quotes是否正确[?

    是的,HCI_VS_Goto地址命令似乎要写入特定寄存器以获得RF功能。  

    我已经记录了使用 initscripts-TIInit_BLE.16_bt_spec_BLE.4.1 的日志,这些日志分别带有6.7 插件和插件。 如果我使用默认BTS和AVPR补丁,那么BLE功能(如扫描和广告)将不起作用。 如果我将默认的.bts与BLE修补程序结合使用,扫描和广告就能正常工作。 如果没有专门启用BLE,那么是否足以证明BLE功能无法正常工作? 是否需要检查Send_HCI_VS_Set_Supported_Features命令中的位?

    已初始化AVPR,BLE不工作:

    BLE仅初始化(无AVPR),BLE工作:

    最佳,

    雅各布

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

    您好,Jacob,

    没问题,希望您在假期中能有一段轻松的时光。

    感谢您提供文件。 我已经对该文件进行了一些测试,但似乎无法解决问题。
    结合蓝牙,我仍然遇到同样的问题。

    但是,我发现我在之前的一个帖子中犯了一个错误:
    Send_HCI_VS_Set_Supported_Features , 0x04, 0x04, 0x00不会重置功能掩码中的LE支持(控制器)标志。 这完全是错误的。

    Send_HCI_VS_Set_Supported_Features , 0x04, 0x06, 0x00是正确的位,如果我在开始时将其插入到您的文件中,则固件似乎已成功加载。 记录程序现在写入以下行:

    1.243万   10:03:42.766  +0:00:03.903   A3DP:初始化。  E N J O Y  T H E  M U S I C    
    1.2431万   10:03:42.766  +0:00:03.903   高级副总裁初始化已完成    

    e2e.ti.com/.../AVPR_5F00_FeatureFix.zip

    如果不设置标记,您提供的BTS文件不会达到此点。

    不幸的是,hciattach仍然报告一些问题。 似乎无法发出命令:

    hciattach /dev/ttyUSB0 Texas 11.52万流
    找到德州仪器(TI)的芯片!
    固件文件:6.7 /lib/firmware/ti-connection/TIInit_TIInit.16.bts
    已加载BTS脚本版本1
    Texas:将波特率更改为11.52万,流控制更改为1
    无法将HCI命令发送到套接字:连接超时
    无法初始化设备:连接超时

    至少记录器应用程序不检测任何访问或通信。
    我们需要在这里进行一些调查。 当然,欢迎使用提示...

    此致,
    Adalbert

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

    您好,Jacob,

    我现在感到困惑。

    我刚刚意识到 ,Send_HCI_VS_Set_Supported_Features命令的字节偏移不是基于0,如HCITester联机帮助中所示:0-字节#0,1-字节#1,2-字节#2

    我尝试读取,修改并再次读取初始化过程中写入的LMP功能:


    但是,它不是将字节0xFE修改为0xBE,而是将邻居字节从0xDB修改为0x9B。
    可能值得更新文档...

    我当然尝试通过使用偏移5而不是4来纠正这种情况。 不幸的是,这不是预期的结果。 该命令执行时没有错误,但该位未更改:

    此外,我很困惑为什么禁用LMP功能"RSSI with inquiry results"(带有查询结果的RSSI)会导致载入AVPR固件,而保持此位不变却不会。

    此致,
    Adalbert

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

    您好,Adalbert,

    感谢您的更新。 我计划明天或第二天跟进。

    最佳,
    雅各布

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

    您好,Adalbert,

    我仍在研究您的上述问题,但我想要求您澄清您在此处所说的话:

    感谢403.2071万感谢您提供此文件。 我已经对该文件进行了一些测试,但似乎无法解决问题。
    与bluez结合使用时,我仍然遇到同样的问题。

    您的意思是,如果您在BluetoothPM_Linux\TIInit_BLE.16.bts中保留enable 6.7 语句并删除与相关的所有内容,您仍然可以运行命令吗? 您的AVPR相关功能是否正常工作?

    谢谢!
    雅各布

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

    您好,Jacob,

    不,这不是我的意思。

    如果我应用您提供的文件而不做任何修改,则AVPR似乎无法成功加载。
    模块调试输出上没有"AVPR init completed"消息。

    同时,我用功能掩码做了一些测试。
    我的假设是,在上面显示的输出中,字节数从右到左计算。 但事实并非如此。 顺序最低的字节位于左侧。 因此,似乎设置了错误的字节...

    意思:Send_HCI_VS_Set_Supported_Features , 0x04, 0x06, 0x00是禁用BLE标志的正确命令。
    要使模块达到“AVPR init Complete”,需要使用此命令。

    不幸的是,这并不意味着蓝绿色也在发挥作用。
    我需要做更多的调查才能了解原因。
    对内核输出消息的初步调查表明,这可能与SCO通道相关联。

    我在日志上看到多个时间的一组消息,如下所示:
    [ 36.18.5447万  ] HCI_sock_sendmsg:1678:sock 9e22b800 SK 82d5b400
    [  SCC] HCI_TX_work:4022:hci0 36.18.5471万 4 4 le 0
    [ 36.18.5476万  ] HCI_sched_acl:3897: hci0
    [ 36.18.5482万  HCI] shci_sched_sco:3925:hci0
    [ 36.18.5487万  HCI] shci_sched_esco:3948:hci0
    [ 36.18.5492万  ] hci_sched_le:3972:hci0
    [ 36.18.5499万  HCI] hci_send_frame:3372:hci0 type 1 len 8.
    [ 36.18.5506万  HCI] hci_send_to_sock:196:hdev 9e4a6000 len 8.
    [ 36.18.5514万  HCI] UART_SEND_FRAME:282:hci0:键入1 len 8
    [ 36.18.5521万  ] ll_enqueue:335:HU 82f6.1万 skb 82d87f00
    [ 36.18.5527万  ] ll_enqueue:346:设备唤醒,正常发送
    [ 36.18.5533万  ] HCI_UART_TX_WAKEUP:150:
    [  TTY] serial_write:335:36.18.5553万 ttyUSB0:serial_write - 9字节
    [ 36.18.5565万  SUSB] USB_SERIAL_DEBUG_DATA:389:cp210x ttyUSB0:USB_SERIAL_GENERICE_WRITE _START -长度= 9,数据= 01 2b FD 05 10 00 50 00 96
    [ 36.18.5778万  ] HCI_UART_TTY_WAKEUP:559:
    [ 36.18.5784万  ] HCI_UART_TX_WAKEUP:150:
    [ 36.18.7646万  ] usb_serial_generic_read_bulbate_callback:391:cp210x ttyUSB0:usb_serial_generic_read_bulbate_callback -话术0,len 7.
    [  SUSB] USB_SERIAL_DEBUG_DATA:389:cp210x ttyUSB0:USB_SERIAL_GENERICE_READ_BLICK_callback -长度= 7,数据= 04 0e 04 01 2b 36.18.7656万 00
    [ 36.18.7671万  USB] usb_serial_generic_submit_read_urb:315:cp210x ttyUSB0:usb_serial_generic_submit_read_urb -模板0
    [  Rx] ll_recv:410:36.18.7693万 82f6.1万计数7 Rx_state 0 Rx_count 0
    [ 36.18.7699万  ] ll_recv:461:事件数据包
    [  PLE] ll_recv:434:事件标题:evt 0x0E 36.18.7707万 4.
    [ 36.18.7714万  ] ll_check_data_len:380:len 4 Room 1846
    [ 36.18.7719万  ] ll_recv:424:完整数据
    [ 36.18.7737万  HCI] HCI_Rx_work:4207:hci0
    [ 36.18.7744万  HCI] hci_send_to_sock:196:hdev 9e4a6000 len 6.
    [ 36.18.7758万  HCI] HCI_Rx_work:4236:hci0事件数据包
    [ 36.18.7766万  HCI] hci_cmd_complete_evt:3043:hci0操作码0xfd2b
    [ 36.18.7772万  ] HCI_sock_recvmsg:1414:sock 9e22b800,SK 82d5b400
    [ 36.18.7776万  HCI] ehci_req_cmd_complete:4147:操作代码0xfd2b状态0x00

    这条线似乎是交错的:
    [  SCC] HCI_TX_work:4022:hci0 36.18.5471万 4 4 le 0

    由于主机不需要SCO通道,因此应由固件直接处理,我想知道这是否是某种问题的暗示。

    如果主机尝试设置/访问/... 如果AVPR固件正在运行,通过HCI接口的SCO通道?

    如果是,您是否知道要设置更多配置选项以避免此类问题?
    是否有更多信息?

    到目前为止,我查看了功能标志以禁用模块中的SCO和eSCO支持。 其目的是为了避免尝试从主机端配置SCO信道而禁用此功能,但更改这些标志似乎没有任何效果。

    您是否知道在TI与AVPR模式一起使用的bluez版本进行测试? 可能有一些修补程序需要包含在我们的软件中或我们尚未确定的进一步配置中?

    此致,

    Adalbert

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

    您好,Adalbert,

    TI不正式支持bluez。 但是,我们的CC2564MODA控制器应该能够解释 使用bluez发送的HCI命令。 遗憾的是,我们没有任何有关bluez和TI蓝牙控制器的文档。

    我将查看您的日志,看看我是否可以建议其他修复方法。

    谢谢!
    雅各布

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

    您好,Jacob,

    我开始分析模块和主机之间的UART通信。
    AVPR_Enable命令(BTS文件的最后一个命令)似乎缺少响应。

    e2e.ti.com/.../NoBTLE.zip

    在附件中,您可以看到我的配置,记录器输出和UART通信。

    根据记录器输出,回答AVPR_ENABLE命令。 但如果我看UART通信,我无法确认。

    BTDebug_filtered.out可能更有趣,因为我过滤了除UART通信之外的所有其他内容,并添加了一些注释。

    从一开始,就有一个连续的HCI命令数据包和事件数据包响应。
    直到第191行(其中发送了opcode 0xFD92 - AVPR_Enable命令)为止,该操作正常。

    与记录器指示不同,日志中没有可见的响应,主机最终中止/关闭UART连接。

    我尚未测量UART线路,因此我不知道是否根本没有响应,延迟响应或使用不同波特率等响应。

    我也不确定AVPR_Enable命令的不同标志的含义。 记录器将其中一个标志解码为"AVPR Enable Mode = 0x00 (ON (CPU已打开,但未运行)"。 我觉得有点奇怪。

    此致,
    Adalbert

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

    在您进行更改以使用禁用BLE之前 Send_HCI_VS_Set_Supported_Features,您是否能够使用hciattach连接到控制器而不会出现设备初始化超时?  

    谢谢!
    雅各布

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

    您好,Jacob,

    不,这不起作用。

    如果您提供的配置未更改,hciattach将无法正常工作。 报告

    找到德州仪器(TI)的芯片!
    固件文件:6.7 /lib/firmware/ti-connection/TIInit_TIInit.16.bts
    已加载BTS脚本版本1
    Texas:将波特率更改为11.52万,流控制更改为1
    无法初始化设备hci0:设备或资源忙(16)无法初始化设备:设备或资源忙

    使用此版本,我也无法在记录器应用程序中看到固件已加载。

    在日志中,您可以看到HCI_LE_READ_SUPPORTED _States命令似乎被拒绝。

    我不完全理解的是,此命令不是BTS文件的一部分。
    但这可能是执行某些子命令的其他命令的后续命令。

    我认为这并不是不可能的,因为配置文件中的写入内存块命令数与日志中的命令数不同。
    此外,BTS文件写入的数据量为200字节负载,但日志中的同一命令显示,每个命令的数据量增加到256字节。 至少标题表示长度为0xff。

    我还可以从日志中说, 应该启动固件的AVPR_ENABLE命令没有发出。

    此外,日志中不显示Send_HCI_VS_Read_Modify_Write_Hardware_Register和Send_HCI_VS_load_Cortex的操作码。 根据BTS文件,应该在写入内存块后和启动AVPR_ENABLE之前立即执行这些操作。

    日志和配置已附加。

    此致,
    Adalbert

    e2e.ti.com/.../TIConfig.zip

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

    您好,Jacob,

    我进一步分析了上一篇文章的日志。
    据我所见,AVPR修补程序列表根本没有加载。

    我可以在日志中看到Goto_Address命令0x883已执行并得到应答。
    根据记录器的输出,这似乎可以正常工作。

    从现在开始,我在主机的UART日志中看不到进一步的write_memory_block命令(0x705)。

    我猜是不是,goto_address命令启动固件并将模块置于运行状态?

    从此时起,BTS文件的其余命令都不会在日志中执行。
    而是执行了某些主机启动的命令。

    直到出现LE_READ_SUPPORTED _States命令。
    然后,在工具退出之前,似乎会重试某个序列。

    此致,
    Adalbert

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

    您好,Adalbert,

    明天我会回复。

    最佳,
    雅各布

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

    您好,Adalbert,

    在我们继续使用hciattach之前,我想检查一下您是否能够使用HCITester与控制器通信? 也许更容易确保您可以使用HCITester正确启用AVPR,然后在之后移动到hciattach。

    谢谢!
    雅各布

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

    e2e.ti.com/.../swru581.pdf

    您好,

    我们还尝试在cc2564MODA模块中添加已评估的A2DP模式,我们遵循了"swru581.pdf"文档。

    但是,我们无法加载脚本,出现"Device or Resource Busy"(设备或资源忙)错误。 请您建议我们应遵循什么步骤来启用辅助模式。

    谢谢,此致,

    希瓦萨加尔。  

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

    您好,Jacob,

    我刚刚完成了主板的返工,尝试使用HCITester通过Windows主机下载。


    使用HCITester下载文件的结果与使用hciattach的结果不同。
    使用HCITester时,应用第一部分后下载继续,直到使用Send_HCI_VS_Goto_Address命令。

    AVPR功能的其余补丁也将下载到目标,记录器输出将指示
    837   14:55:53.319  +0:00:11.330   A3DP接收器:初始化 S I N K O N T H E A I R!  E N J O Y  T H E  M U S I C   
    838   14:55:53.319  +0:00:11.330   高级副总裁初始化已完成    
     

    使用hciattach和hcitester下载代码的最明显区别是,发出Send_HCI_VS_Goto_Address命令后,记录器应用程序的输出中没有显示主机发起的命令。
    使用HCITester进行下载时创建的日志不会显示诸如READ_LOCAL _SUPPORTED_Features之类的命令。

    似乎,即使正确执行命令并由模块应答,也会影响模块的行为。

    如果这种猜测是真的,则意味着hciattach在接收HCLL命令的响应时不能中断BTS文件的加载。 相反,它必须继续加载修补程序,直到它到达文件的末尾。

    或者,可以将hcill命令移到文件的末尾。
    你有没有经历过这种行为?

    附加您可以找到配置文件以及使用hciattach和HCITester创建的日志。

    此致,

    Adalbert

    e2e.ti.com/.../3821.NoBTLE.zip

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

    您好,Adalbert,

    我在2022年3月28日共享的init_plus_AVPR.lgr文件是HCITester的日志。 我很确定 在运行 READ_LOCAL _SUPPORTED _Features时能够看到控制器的响应,但我明天会再次检查。  

    如果404.5782万如果这种猜测属实,则意味着hciattach在接收BTS中断响应时不能提交HCL命令。 相反,它必须继续加载修补程序,直至到达文件的末尾。

    我只在这种类型的应用程序中使用了HCITester,所以我不熟悉hciattach如何处理固件加载。 听起来您可能发现这两个程序之间存在差异。

    显示"AVPR INIT completed"(AVPR初始化已完成)消息后,您是否可以开始播放音频?  

    谢谢!
    雅各布

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

    您好,Jacob,

    昨天,我在"不间断"下载固件文件的方向上进行了更多调查。

    对hciattach代码的深入调查表明,允许停止下载的命令是“VS_SLEED_Mode_Configurations”命令,该命令在“VS_Goto地址”命令之后立即发送。

    在第一个试验中,我简单地从BTS文件中对该命令进行了评论,并取得了成功。
    在完成BTS文件执行后,我收到“接收器在空中”消息,如通过HCITester下载配置。

    BTS文件完全下载后,主机发起的命令将显示在记录器输出中。

    现在,我能够测试基本操作,如扫描设备和配对/连接电话。
    使用电话执行呼叫尚不起作用(至少在通过模块路由音频的情况下不起作用),但这可能取决于其他问题。
    我需要先检查连接到模块的外部编解码器的配置。
    我还需要检查缺少的睡眠模式配置是否会对这种情况产生某种影响。 将该命令添加为最后一个条目而不是注释掉可能是更好的选择。

    此致,
    Adalbert

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

    您好,Adalbert,

    VS_SLEED_Mode_Configurations 命令的放置会影响控制器加载固件时的状态。 我通常会对初始测试的命令进行评论。

    最佳,

    雅各布

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

    您好,Jacob,

    当前状态是,已加载固件,且主机可通过此配置访问模块并响应HCI命令。

    我们至少可以设置与电话的HFP连接,并通过蓝牙发起呼叫。
    呼叫本身已成功设置,但PCM接口不传输音频。

    查看TIInit_PCM.16.xml文件时,显示了几个用于配置6.7 接口的命令,但这些命令似乎只能调整A2DP模式,而不能调整HFP模式。
    一般而言,我在本文档中没有看到任何用于辅助HFP模式的命令。
    我假设有一组命令可以加载辅助HFP软件,类似于辅助A2DP软件。

    蓝牙堆栈(LinuxAUDM)的音频示例似乎没有为A2DP提供辅助模式。
    CC2564MODA资源中链接了文档CC2564x演示应用程序用户指南,其中介绍了A3DP模式示例。 在哪里可以找到这些示例的源代码? 查看在该配置中必须发送哪些命令可能会有所帮助。

    在查找AVPR配置选项的源文件时,我发现有一个可用的AVPR debug命令的提示
    BTVS.c,#define VS_AVPR_DEBUG_COMMAND_OPCode                            ((Word_t)(0xFD91))

    遗憾的是,上面提到的XML文件中没有描述该命令。 模块是否支持该命令?

    此致,
    Adalbert

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

    您好,Adalbert,

    明天我会跟进。

    最佳,

    雅各布

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

    您好,Jacob,

    在预先阅读已记录的HCI命令时,我得到越来越多的印象,即无需使用辅助模式即可在HCI接口和PCM/I2S接口之间路由音频。

    命令Send_HCI_VS_Write_codec_Config,Send_HCI_VS_Write_codec_Config_Enhanced和Send_HCI_VS_Write_SCO_Configuration似乎未链接到辅助模式。

    听起来似乎它们是通用配置命令,用于将编解码器接口设置为编解码器,并仅将音频信号重新路由到内部HCI或具有预定义设置的编解码器。

    在哪里可以找到有关命令及其应用顺序,必须执行的先决条件的更多信息...?

    此致,
    Adalbert

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

    您好,Adalbert,

    “辅助模式”只是意味着CC2564MODA与音频编解码器连接,而不是主机与编解码器连接:

    我们在CC2564x平台的HCI_VS指南中提供了一些信息: e2e.ti.com/.../4370.CC256x-VS-HCI-Commands-_2D00_-Texas-Instruments-Wiki.pdf

    最佳,
    雅各布