我们正尝试在nrf52832上设置Zephyr以运行HCI界面。由于硬件限制,我们不得不不使用流量控制,因此H:5 HCI (三线UART)和bluez 5.54一起使用。我们在DTS覆盖中禁用了流量控制。我们已经尝试在standaard uart zephyr示例中使用west build -t menuconfig来激活H5。但这是不起作用的,因为它在控制器端,而不是我们需要的客户端。
我们在网上找到了当前的HCI UART示例和@carlesc给我们的提示。你可以在这里找到源代码:code。我已经使用Bluez3wire支持编译了我的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 e.c:280
我尝试在nrf52sdk_nrf52832.conf中更改CONFIG_BT_HCI_TX_STACK_SIZE大小、CONFIG_MAIN_STACK_SIZE和CONFIG_ASSERT=y,但这没有任何改变。
错误似乎发生在建立连接时。在建立连接之后,zephyr代码在net_buf_get函数上崩溃。
发布于 2021-01-29 00:50:56
我认为您尝试在prj.conf文件中增加CONFIG_MAIN_STACK_SIZE是正确的。我会进一步增加到512 (1024,2048,4096)的倍数,直到你不再得到堆栈溢出。
我在Zephyr RTOS上也遇到了同样的问题,还有一个在多个级别上使用嵌套函数的任务。
https://stackoverflow.com/questions/64973052
复制相似问题