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.
尊敬的 TI 社区:
是否有人知道如何使用 hciattach/hcitool 运行 HCI 命令?
我使用以下命令、但会发生 hci0无法启动的情况、有经验的任何人能否告诉我原因?
Jamie@my-PC:~$ sudo hciattach /dev/ttyACM0 any
器件设置完成
Jamie@my-PC:~$ sudo hciconfig hci0 up
无法初始化设备 hci0:连接超时(110)
Jamie@my-PC:~$ sudo hcitool -i hci0 cmd 0x04 0x0001
设备无效:网络已关闭
Linux 版本:
Linux 版本5.4.0-131-generic (buildd@lcy02-amd64-092)(gcc 版本7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)#147~18.04.1-Ubuntu SMP Sat OCT 15 13:10:18 UTC 2022
LAUNCHXL-CC1352R1的堆栈:
C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\examples\rtos\CC1352R1_LAUNCHXL_ble5stack\hexfiles\host_test_app.hex
谢谢、
您好 Jamie、
主机测试示例不支持 hci0。
请参阅 HCI 供应商特定指南:
谢谢、
玛丽·H
您好、Marie、
感谢您的回复~~
我知道 hci0不受支持、但我只想确保 ttyACM0可以通过 hciattach 打开、因为这样我就可以跟踪 hciattach 代码并知道芯片的初始化过程。
您是否知道如何在 Linux 中成功初始化(open()/writ()/read()) CC1352R1和执行 HCI 命令?
谢谢、
您好 Jamie、
从我们的角度来看、它打算将 BTool 与 host_test 结合使用。 您应该能够使用 Mono 在 Linux 上运行 BTool。 BTool 与 CC13xx/CC26xx SDK 捆绑在一起。 您可以在此处找到用户指南:
BTool 将记录所有命令并返回事件。 要在器件上启动 BLE-Stack、请发送 GAP_DeviceInit 命令。
谢谢、
玛丽·H
您好、Marie、
这个 btool 在我的 Windows 上运行良好、但我的目标是能够在嵌入式系统上使用 HCI 命令、由于存储空间有限、因此不建议将 Mono + BTool 放入闪存中。
因此、我可能需要一些可移植到 Linux 的示例初始化代码。
BTW、我尝试在 Ubuntu 中使用 Mono + btool.exe、但似乎存在以下问题:
Jamie@my-PC:~/work/btool Mono btool.exe
未处理异常:
System.IO.FileNotFoundException:无法加载文件或汇编或其依赖项之一。
文件名:'System.Windows.Forms, Version=4.0.0.0, Culture=Neutral,PublicKeyToken=b77a5c561934e089'
注意:btool 源文件来自 C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\tools\ble5stack\btool
谢谢、
您好 Jamie、
您是否正在寻找在 Linux 机器上运行的代码或 CC1352器件所需的命令?
谢谢、
玛丽·H
您好、Marie、
我正在寻找能够在 Linux 上通过 open()初始化 CC1352R1、然后通过 write()/read()执行 HCI 命令的代码,如 hciattach 和 hcitool
谢谢、
您好 Jamie、
我们没有任何说明这一点的示例代码。
另一种方法是使用 CC256x 器件、该器件是一个仅用于 BT/BLE 控制器的器件。
谢谢、
玛丽·H
您好、Marie、
我现在没有 CC256x。
我最后使用的芯片是 CC2340R5、但它仍处于开发阶段(TI)、并且没有 host_test 模式堆栈让我在 LP-EMCC2340R5中进行测试、因此我使用 LAUNCHXL-CC1352R1来首先测试。
顺便说一下、有时我可以通过 hciattach 使用 LAUNCHXL-CC2640R2、并通过 hcitool 执行一些 HCI 命令、如下所示、但我无法使用 LAUNCHXL-CC1352R1、您知道原因吗?
堆栈:c:\ti\simplelink_cc2640r2_sdk_2_40_00_32\examples\rtos\cc2640R2_LAUNCHXL_ble5stack\hexfiles\cc2640r2lp_host_test.hex
Jamie@my-PC:~$ sudo hciattach /dev/ttyACM0 any
器件设置完成
Jamie@my-PC:~$ sudo hciconfig hci0 up
Jamie@my-PC:~$ sudo hcitool -i hci0 cmd 0x04 0x0001
< HCI 命令:ogf 0x04、ocf 0x0001、PLEN 0
>HCI 事件:0x0E PLEN 12.
01 10 00 08 22 03 08 0D 00 22 03
谢谢、
您好 Jamie、
CC2640R2和 CC1352R1上的 BLE-Stack 存在一些差异。 但是、在任何一个器件上都没有对 hcitool 或 hciattach 的正式支持、
谢谢、
玛丽·H
您好、Marie、
一般而言、如果客户希望在嵌入式系统(具有 Linux)上为 TI BLE 芯片执行 HCI (具有 host_test 模式 ble5stack)、TI 有何建议?
BTW、您是否有 BTool 可为我们提供参考的源代码?
谢谢、
您好 Jamie、
目的是使用 HCI 供应商专用指南来实现与 CC13xx 器件的接口。
我们不提供 BTool 的源代码。
谢谢、
玛丽·H
您好、Marie、
我们还使用 HCI 供应商特定指南来实现它、
但现在的问题是、写入() HCI 命令后、我们无法读取() HCI 事件、
因此、我怀疑这个问题来自芯片 UART 初始化过程。
谢谢、
您好 Jamie、
您可以在此处阅读我们的 UART 文档:
技术参考手册中的 UART 章节: https://www.ti.com/lit/swcu185
我们提供了 TI 15.4-Stack 的 Linux 代码示例。 也许看我会有帮助吗? 我们有用于笔记本电脑(Ubuntu)和 Beagle Bone Black 的代码。
https://www.ti.com/tool/TI-15.4-STACK-GATEWAY-LINUX-SDK
谢谢、
玛丽·H
您好、Marie、
感谢您提供的信息、我需要一些时间来学习。
谢谢、
您好、Marie、
昨天我在 Ubuntu 中使用 LAUNCHXL-CC1310测试了 TI 15.4-Stack、状态如下。
测试架构:
SDK:
ti154stack_linux_x64_4_40_00_03
适用于 CC1310的堆栈:
firmware/coprocessor_cc1352lp_tirtos_ccs.hex
Collector 应用<=/dev/ttyACM0===协处理器模块
收集器应用程序:PC (Ubuntu)
协处理器模块:LAUNCHXL-CC1310
run_demo.sh 的测试结果:
有时工作正常(URL http://localhost:1310显示 PanID:0xACDC、Coord Addr:0xAABB)、 但有时会出现如下消息"器件复位后未接收到复位响应" 、则"host_collector"无法执行。
Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt sudo ./run_demo.sh
在后台启动收集器应用程序
收集器作为进程运行 ID:15544
在后台启动 Node-JS 网关应用程序
错误:与 AppServer 的套接字连接出现接收错误
网关以进程 ID:15552的形式运行
正在启动 Web 浏览器... http://localhost:1310
不支持在常规用户会话中以 root 身份运行 Firefox。 ($HOME 是由 Jamie 拥有的/home/jamie。)
<...跳过...>
不支持在常规用户会话中以 root 身份运行 Firefox。 ($HOME 是由 Jamie 拥有的/home/jamie。)
/usr/bin/xdg-open:列851:Iceweasel:命令找不到
/usr/bin/xdg-open:列851:SeaMonkey:命令找不到
<...跳过...>
/usr/bin/xdg-open:列851:Lynx:命令找不到
/usr/bin/xdg-open:列851:w3m:命令找不到
XDG-open:没有用于打开'http://localhost:1310'的方法
器件复位后未接收到复位响应
0)./host_collector (+0x1f74f)[0x5557417c974f]
1)./host_collector (+0x1f8ba)[0x5557417c98ba]
<...跳过...>
9)./host_collector (+0x4490)[0x5557417ae490]
10)/lib/x86_64-linux-gnu/libc.so.6 (_libc_start_main+0xe7)[0x7f6cfb786c87]
11)./host_collector (+0x348a)[0x5557417ad48A]
run_collector.sh 的测试结果
有时工作正常、 但与 run_demo.sh 类似 、有时 会显示错误消息"器件复位后未接收到复位响应"
Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt/bin sudo ./run_collector.sh
收集器作为进程运行 ID:20303
Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt/bin 器件复位后未收到复位响应
0)./host_collector (+0x1f74f)[0x55aeb4f5474f]
1)./host_collector (+0x1f8ba)[0x55aeb4f548ba]
<...跳过...>
9)./host_collector (+0x4490)[0x55aeb4f39490]
10)/lib/x86_64-linux-gnu/libc.so.6 (_libc_start_main+0xe7)[0x7f11f8379c87]
11)./host_collector (+0x348a)[0x55aeb4f3848A]
"host_collector"的初始化流程
我重新编译了示例/收集器并跟踪初始化流程、如下所示:
在 createInterface()中
MT_MSG_interfaceCreate()
stream_createUart()
Plu->h =打开(Plu->cfg.devname、f)
/*重置设备以进行初始化*/
resetCoPDevice();
linux_specify.c/UNIX_fdWrThes()
r =写入(prw->fd、prw->this _c_buf、prw->this _len);
POLL_COMMON ()
r = select (prw->FD+1、&rw_set、NULL、&err_set、PTV);
问题的原因(器件复位后未接收到复位响应)
"host_collector"的问题与我提出的问题相同、这两个问题都无法读取。
蓝底粘附:
open():成功
write():成功
Read():失败
TI host_collector:
open():成功
write():成功
select():失败
那么、这个"host_collector"工具每次在您的环境中都能成功执行?
谢谢、
您好、Marie、
一些测试状态更新。
我之前测试过的环境是 Win7中的 VirtualBox + Ubuntu、但如果我仅更改为 Ubuntu (不带 VM)、则我可以很高的概率地使用我们的代码成功执行 HCI (有时仍然失败)。
因此、之前发生故障(难以接收 HCI 事件)的原因可能来自 VM 的设置或影响。
谢谢、
您好 Jamie、
目的是 在任何其他堆栈 API 之前发送 GAP_DeviceInit()。 我们期望收到一个具有成功状态的 HCI_LE_ExtEvent。 如果您向下滚动、请查看 BTool 中的打印输出。 https://dev.ti.com/tirex/explore/node?node=A__ABL3ofs3Qra5auStnAqIaA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST
谢谢、
玛丽·H
器件型号:LAUNCHXL-CC1352R1
尊敬的 TI 社区:
我可以在 Ubuntu PC 中使用 blestack (host_test)执行一些旧操作码、但无法使用 ble5stack 执行
例如:
0xfe30 (GAP_LIM_DISC_ADV_INT_MIN 的 GAP_SetParamValue)
HCI 事件错误代码=> 0x2
0xfe08 (GAP 结束可发现)
HCI 事件错误代码=> 0x1
0xfe00 (GAP_DeviceInit)
HCI 事件错误代码=> 0x2
是否有人知道如何在 host_test 模式下使用 ble5stack 执行传统 HCI 命令?
LAUNCHXL-CC1352R1在我们的 Linux 中使用/dev/ttyACM0:
Linux 版本5.4.0-131-generic (buildd@lcy02-amd64-092)(gcc 版本7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)#147~18.04.1-Ubuntu SMP Sat OCT 15 13:10:18 UTC 2022
LAUNCHXL-CC1352R1的堆栈:
C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\examples\rtos\CC1352R1_LAUNCHXL_ble5stack\hexfiles\host_test_app.hex
谢谢、
尊敬的 TI 社区:
或者、我能否使用其他操作码更新和发送具有 host_test + blestack 的信标(如 iBeacon 或 Eddystone)?
谢谢、
您好 Jamie、
您可以使用常规广播命令发送信标、但您需要自己跟踪 iBeacon 或 Eddystone 格式。
为了发送非连接的、不可扫描的通告(也称为信标)、请使用 GapAdv_create 并仅应用 GAP_ADV_PROP_LEGACY 标志。
谢谢、
玛丽·H
您好、Marie、
感谢您的确认、我将重试
谢谢、