主题中讨论的其他器件:CC2654P10、 CC2652R、 CC1354R10、CC2674R10
工具与软件:
大家好
我正在尝试使用 FreeRTOS 和 GCC 编译器创建用于 CC2654P10的项目。
我正在使用"LP_EM_CC1354P10_1"的"simple_peripheral"工程作为基座。
我使用为工程生成的文件(ti_driver_config、ti_device_config 等)。 一般来说、一切都运行良好、即我创建可正常工作的任务。
但我无法初始化 BLE。 我看到执行到达 osal_run_system 函数(从 ble5stack_flash 文件夹中)、其中调用第一个函数。 显然、这是 LL_ProcessEvent。
HAL_ENTER_CRITICAL_SECTION(intState); events = tasksEvents[idx]; tasksEvents[idx] = 0; // Clear the Events for this task. HAL_EXIT_CRITICAL_SECTION(intState); activeTaskID = idx; events = (tasksArr[idx])( idx, events ); activeTaskID = TASK_NO_TASK; HAL_ENTER_CRITICAL_SECTION(intState); tasksEvents[idx] |= events; // Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState);
由于这是一个封闭堆栈、我无法准确跟踪正在执行的内容。 但是、在该函数内的某个位置、会发生错误、并且整个项目的执行最终会产生故障 ISR 错误。
我不确定错误是否发生在同一位置。 但肯定是执行该功能的过程中的某个地方。 我不知道原因可能是什么、因为带有"simple_peripheral"且 ti RTOS 的项目或多或少地正确工作。 我尝试在进入 faultISR 时在 CPU_SCS 寄存器中找到其他信息。 例如、我在 CFSR 寄存器中看到了0x100、在 HFSR 寄存器中看到了0x40000000、但我不确定这是否包含有用的信息。
设置 FreeRTOS 时是否存在错误? 也许堆栈大小不够? 但如何证明它? 我曾在 FreeRTOS 配置文件中尝试增加堆大小、但没有收到任何帮助。 我曾尝试增加针对射频任务的堆栈大小、但都没有帮助。
也许是关于配置射频任务? 但在 ti RTOS 示例中、这不会导致严重错误。
也许在 CSS 工作室你可以跟踪我从哪里离开在一个关键的中断? 调试中常规的调用栈不会显示此类信息。
感谢您的帮助。