我们正在尝试在 nrf52832 上设置 Zephyr 以运行 HCI 接口。由于硬件限制,我们必须不使用流控制,因此 H:5 HCI(三线 UART)和 bluez 5.54 我们在 DTS 覆盖中禁用了流控制。我们尝试使用 west build -t menuconfig
标准 hci uart zephyr 示例来激活 H5。但这不起作用,因为它在控制器端而不是我们需要的客户端女巫。
我们在网上找到了当前的 HCI UART 示例和@carlesc 给我们的提示。您可以在此处找到源代码:代码。我已经使用 Bluez 3wire 支持编译了我的 linux 内核,并使用hciattach /dev/ttyUSB0 3wire 1000000 noflow nosleep
. Linux 识别适配器并附加它,但随后系统崩溃并显示以下日志:
00> [00:00:44.900,909] <err> os: ***** MPU FAULT *****
00> [00:00:44.900,909] <err> os: Stacking error (context area might be not valid)
00> [00:00:44.900,909] <err> os: Data Access Violation
00> [00:00:44.900,939] <err> os: MMFAR Address: 0x20006230
00> [00:00:44.900,939] <err> os: r0/a1: 0xedf4f9de r1/a2: 0x48854818 r2/a3: 0xaaaaaaaa
00> [00:00:44.900,970] <err> os: r3/a4: 0xaaaaaaaa r12/ip: 0xffffffff r14/lr: 0x00000009
00> [00:00:44.900,970] <err> os: xpsr: 0x61000000
00> [00:00:44.900,970] <err> os: Faulting instruction address (r15/pc): 0x00016bf0
00> [00:00:44.900,970] <err> os: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0
00> [00:00:44.901,000] <err> os: Current thread: 0x20000890 (unknown)
00> [00:00:45.324,310] <err> os: Halting system
我试图 arm-none-eabi-addr2line -e zephyr/build/zephyr/zephyr.elf 0x16bd0
确定错误发生的位置。我收到了这个回复 zephyrproject/zephyr/kernel/queue.c:280
我尝试更改CONFIG_BT_HCI_TX_STACK_SIZE
大小,CONFIG_MAIN_STACK_SIZE
以及CONFIG_ASSERT=y
nrf52sdk_nrf52832.conf 中的 但这并没有改变。
建立连接时似乎会发生错误。建立连接后,zephyr 代码在net_buf_get
函数上崩溃。