ThreadX内核6.0.2官方版代码中IAR和MDK AC5的移植文件tx_thread_context_restore.s有错误【确诊M内核已经不用了】
我发的例子里面默认都已经做了处理。AC5,多了个POP
IAR,多了个POP
static/image/hrline/4.gif
后续补充:
实际测试发现M内核已经没有再使用这两个文件了,所以无需添加,如果加上了,改不改都行。
tx_thread_context_restore.S
tx_thread_context_save.S
官方说明:
此文件仅仅是用于兼容目的,M内核平台已经不再使用。
;/**************************************************************************/
;/* */
;/*FUNCTION RELEASE */
;/* */
;/* _tx_thread_context_save Cortex-M0/AC5 */
;/* 6.0.2 */
;/*AUTHOR */
;/* */
;/* William E. Lamie, Microsoft Corporation */
;/* */
;/*DESCRIPTION */
;/* */
;/* This function is only needed for legacy applications and it should*/
;/* not be called in any new development on a Cortex-M. */
;/* This function saves the context of an executing thread in the */
;/* beginning of interrupt processing.The function also ensures that*/
;/* the system stack is used upon return to the calling ISR. */
;/* */
;/*INPUT */
;/* */
;/* None */
;/* */
;/*OUTPUT */
;/* */
;/* None */
;/* */
;/*CALLS */
;/* */
;/* None */
;/* */
;/*CALLED BY */
;/* */
;/* ISRs */
;/* */
;/*RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/*06-30-2020 William E. Lamie Initial Version 6.0.1 */
;/*08-14-2020 Scott Larson Modified comment(s), clean up */
;/* whitespace, resulting */
;/* in version 6.0.2 */
;/* */
;/**************************************************************************/
可以去GitHub上提Issue啊 硬汉知道SES下怎么实现调研__nop();函数功能 这个bug会导致什么现象和后果? 研究的很通透啊 如此核心的代码没有测试过? migsoft 发表于 2020-9-8 09:19
如此核心的代码没有测试过?
这是port文件,不是核心文件 bear_yh 发表于 2020-9-8 08:41
这个bug会导致什么现象和后果?
实际测试发现这两个文件没有用到。。。
tx_thread_context_restore.S
tx_thread_context_save.S
yklstudent 发表于 2020-9-8 08:38
硬汉知道SES下怎么实现调研__nop();函数功能
asm("nop");应该是可以的,你试试。 wanglehui_12 发表于 2020-9-8 08:01
可以去GitHub上提Issue啊
实际测试发现这两个文件没有用到,改不改都行。
tx_thread_context_restore.S
tx_thread_context_save.S
我也在研究TX的ARM9移植,上下文的保存和复原应该是要用到的呀?FIQ_NES和IRQ_NEST才是可有可无吧 ayuanshop 发表于 2020-9-8 10:13
我也在研究TX的ARM9移植,上下文的保存和复原应该是要用到的呀?FIQ_NES和IRQ_NEST才是可有可无吧
嗯,M7,M4没用到。可以删掉。
上下文保存和恢复是在调度文件里面实现了。 ayuanshop 发表于 2020-9-8 10:13
我也在研究TX的ARM9移植,上下文的保存和复原应该是要用到的呀?FIQ_NES和IRQ_NEST才是可有可无吧
确诊了,M内核已经不再使用这个文件了。 eric2013 发表于 2020-9-8 10:22
确诊了,M内核已经不再使用这个文件了。
PUBLICOTG_HS_IRQHandler
OTG_HS_IRQHandler:
; VOID UsbInterruptHandler (VOID)
; {
;
PUSH {lr}
BL _tx_thread_context_save
BL _ux_dcd_stm32_interrupt_handler
B _tx_thread_context_restore
; }
可以移植usbx的时候会用到。硬汉看看 bear_yh 发表于 2020-9-8 11:08
PUBLICOTG_HS_IRQHandler
OTG_HS_IRQHandler:
; VOID UsbInterruptHandler (VOID)
注释掉即可,内容已经空置了,无需再加 eric2013 发表于 2020-9-8 10:08
asm("nop");应该是可以的,你试试。
测试了,确认可以,感谢硬汉 eric2013 发表于 2020-9-8 10:19
嗯,M7,M4没用到。可以删掉。
上下文保存和恢复是在调度文件里面实现了。
哪里实现的啊?请截个图看看 bear_yh 发表于 2020-9-8 13:07
哪里实现的啊?请截个图看看
eric2013 发表于 2020-9-8 11:12
注释掉即可,内容已经空置了,无需再加
去掉,usbx工作不正常,你再仔细看看 bear_yh 发表于 2020-9-8 14:38
去掉,usbx工作不正常,你再仔细看看
不用,我这就没有加:
你参考下
.globalOTG_FS_IRQHandler
.thumb_func
OTG_FS_IRQHandler:
@ VOID UsbInterruptHandler (VOID)
@ {
@
PUSH {lr}
BL _ux_dcd_stm32_interrupt_handler
POP {lr}
BX LR
@ } ayuanshop 发表于 2020-9-8 10:13
我也在研究TX的ARM9移植,上下文的保存和复原应该是要用到的呀?FIQ_NES和IRQ_NEST才是可有可无吧
请问用的是ARM9的那个芯片? 请问硬汉:在threadx port里的CortexM3/m4的Readme文件里都说了在进入ISR中断服务程序时不需要再调用ContexSave/Restore之类的函数了,在任务切换时会在tx_thread_schedule.s里通过调用__tx_ts_handler实现了保存R4~R11到当前线程堆栈上了。我的问题是假如当前在某个线程中,来外部中断了,而此时没有发生线程切换,中断里没有执行保护R4~R11,那怎么保证中断返回后R4~R11的值没发生变化呢?谢谢! see-flying 发表于 2021-5-9 15:43
请问硬汉:在threadx port里的CortexM3/m4的Readme文件里都说了在进入ISR中断服务程序时不需要再调用Contex ...
这个用户不用管,编译器会编译中断服务程序,这个程序里面用到没有自动入栈的寄存器,他会先做入栈处理。 这两个文件没有调用,因此 _tx_execution_isr_exit 也不会调用,这样一来,M核进入中断总时间的统计功能会不会出问题。我统计的进入中断的总时间一直为0
页:
[1]