完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我正在编写一个任务调度程序,在上下文切换后遇到了一些问题。 为下一个任务恢复上下文后: __builtin_tricore_mtcr_by_name("pcxi", lower_context); __builtin_tricore_isync(); ULONG psw = __builtin_tricore_mfcr_by_name("psw"); psw = ~(PSW_CDE_MASK); __builtin_tricore_mtcr_by_name("psw", psw); __builtin_tricore_isync(); __asm("rslcx"); __asm("rfe"); "rfe" 调用正确的任务函数。 但"rfe" 不会在 A[11] 寄存器中设置新的返回地址。 当任务函数以"ret16" 结束时,µC 将在陷阱中运行。 我在上下文切换的准备过程中错过了什么? 在上下文切换/"rfe" 之后,A[11] 的正确行为是什么? 谢谢! |
|
相关推荐
1个回答
|
|
1. 确保您的任务调度程序正确地保存和恢复寄存器状态。在上下文切换时,需要保存当前任务的寄存器状态,并在恢复时加载新任务的寄存器状态。 2. 检查您的中断处理程序。确保在上下文切换时正确地处理中断,避免在切换过程中触发中断导致意外的行为。 3. 确保您的任务调度程序遵循正确的同步机制。在多任务环境中,需要确保任务之间的同步和互斥,以避免竞态条件和死锁。 4. 使用调试工具和威廉希尔官方网站 来帮助您找到问题所在。例如,您可以使用断点、日志记录和性能分析工具来检查程序的行为。 5. 如果可能的话,尝试简化您的任务调度程序,逐步添加功能,以便更容易地找到问题所在。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
469 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
7302 浏览 2 评论
4169 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3718 浏览 9 评论
1284 浏览 8 评论
537浏览 2评论
332浏览 2评论
453浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
7302浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
546浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-23 14:50 , Processed in 0.699985 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191