如何在cortex R5上移植threadX RTOS?

问题描述 投票:0回答:1

我尝试将 Threadx RTOS 移植到 zynq UScale+ 的 cortex-R5。

  • 我将R5对应的端口目录以及常见的Threadx .h和.c文件复制到我的示例代码树中。

  • 我定义了 Include 路径以指向 Azure RTOS Threadx 头文件所在的目录。

  • 我对 .c 文件目录文件做了同样的事情

该图显示了 Vitis IDE 中应用程序树结构中包含的头文件路径: enter image description here

但是当我编译时,我从汇编代码文件中得到了一个错误

undefined reference to `__tx_fiq_processing_return'

发生在 tx_thread_fiq_context_save.S 文件中


#ifdef TX_ENABLE_EXECUTION_CHANGE_NOTIFY
@
@    /* Call the ISR enter function to indicate an ISR is executing.  */
@
    PUSH    {lr}                                @ Save ISR lr
    BL      _tx_execution_isr_enter             @ Call the ISR enter function
    POP     {lr}                                @ Recover ISR lr
#endif

    B       __tx_fiq_processing_return          @ Continue FIQ processing 
@
__tx_thread_fiq_not_nested_save:
@    }  
@

还有

undefined reference to `_sp'

发生在 tx_initialize_low_level.S 文件中。

    .global _tx_initialize_low_level
    .type   _tx_initialize_low_level,function
_tx_initialize_low_level:
@
@    /* We must be in SVC mode at this point!  */
@
@    /* Setup various stack pointers.  */
@
    LDR     r1, =_sp                            @ Get pointer to stack area

但我找不到定义其符号的文件,除非我安装不正确。 拜托,我想提出将 Threadx 移植到 cortex-R5 的解决方案。

assembly rtos threadx azure-rtos cortex-r
1个回答
0
投票

此时您应该已经解决了问题,并添加评论,因为这可能对其他人有帮助。

_sp 定义于 https://github.com/eclipse-threadx/threadx/blob/master/ports/cortex_r5/gnu/example_build/sample_threadx.ld

需要从sample_threadx.ld更新vitis的lscript.ld才能解决该问题。 另一种方法是在 lscript.ld 中创建新变量 _sp

© www.soinside.com 2019 - 2024. All rights reserved.