小编Can*_*ack的帖子

FreeRTOS:为什么我的任务在调用 vTaskStartScheduler 后没有启动?

我正在 Xilinx UltraScale+ ZCU102 设备上为 RPU 编写一个应用程序,需要在 FreeRTOS 中运行一些任务。我的应用程序首先创建一个“启动”任务,然后创建其余的任务。成功创建启动任务并调用 vTaskStartScheduler() 后,启动任务未运行。

我注意到 FreeRTOS 常见问题解答页面 ( http://www.freertos.org/FAQHelp.html ) 说:

如果您创建的项目正在编译,并且至少执行到调度程序启动为止,但在调用 vTaskStartScheduler() 后只有一个任务正在执行或根本没有任务正在执行,那么很可能是中断向量表不正确。

所以我首先检查以确保中断向量表是正确的。我使用的是 FreeRTOS 10.0,它是作为 ZCU102 BSP 的一部分构建的。

在使用 BSP 创建的文件“port_asm_vectors.S”中,我有

// port_asm_vectors.S
...
.section .vectors,"a"
_vector_table:
    ldr pc,=_boot
    ldr pc,=Undefined
    ldr   pc, _swi
    ldr pc,=PrefetchAbortHandler
    ldr pc,=DataAbortHandler
    NOP /* Placeholder for address exception vector*/
    ldr   pc, _irq
    ldr pc,=FIQHandler

_irq:   .word FreeRTOS_IRQ_Handler
_swi:   .word FreeRTOS_SWI_Handler
...
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的链接描述文件中,我有以下内容

// lscript.ld
...
SECTIONS
{
.vectors : {
   KEEP (*(.vectors))
   *(.boot)
} > …
Run Code Online (Sandbox Code Playgroud)

c embedded freertos

5
推荐指数
1
解决办法
4377
查看次数

标签 统计

c ×1

embedded ×1

freertos ×1