我尝试将 Threadx RTOS 移植到 zynq UScale+ 的 cortex-R5。
我将R5对应的端口目录以及常见的Threadx .h和.c文件复制到我的示例代码树中。
我定义了 Include 路径以指向 Azure RTOS Threadx 头文件所在的目录。
我对 .c 文件目录文件做了同样的事情
该图显示了 Vitis IDE 中应用程序树结构中包含的头文件路径:
但是当我编译时,我从汇编代码文件中得到了一个错误
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 的解决方案。
此时您应该已经解决了问题,并添加评论,因为这可能对其他人有帮助。
需要从sample_threadx.ld更新vitis的lscript.ld才能解决该问题。 另一种方法是在 lscript.ld 中创建新变量 _sp