发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
程序不能跳转到upp任务
249 UPP TCP
分享
[tr]我在程序里设置了两个任务,一个就是系统本身的tcp_test()任务,另一个是我自己创建的upp传输任务,在程序开始时,tcp_test()函数里有一个task_sleep()函数可以使任务跳转到低优先级的upp任务,这里没有问题,但是当tcp链接后,该函数原代码执行完成后我加入了一条task_sleep()指令,但此时程序却不能跳转到upp任务,请问这种情况怎么解决?帮我分析分析,谢谢了。

[/tr]
0
2019-4-26 12:08:48   评论 分享淘帖 邀请回答

相关问题

17个回答
SYS/BIOS 是基于优先级调度的实时操作系统 在某一时刻一定执行的是当前准备就绪的最高优先级线程
至于为什么没有调到 uPP 函数 你要确认是否满足
1、准备就绪
2、当前时刻优先级最高
2019-4-26 12:23:26 评论

举报



第一次Upp任务能够运行是task_sleep();函数的作用,之后被net.c文件里的hook函数抢占后就不能从tcp_test()任务跳转到upp任务了,我现在不知道它内部做了什么,也不好改动,我需要实现的是PC与DSP网口通讯,DSP与另一台设备并口通讯,这可能要改一些底层驱动的东西,希望您能给我一些思路。

Hook 函数只会在 NDK 协议栈初始化时候执行一次不需要改底层驱动 这是上层调度问题 与驱动无关 
2019-4-26 12:41:48 评论

举报

sosolala 发表于 2019-4-26 12:41
Hook 函数只会在 NDK 协议栈初始化时候执行一次不需要改底层驱动 这是上层调度问题 与驱动无关 


Hook 函数只会在 NDK 协议栈初始化时候执行一次
不需要改底层驱动 这是上层调度问题 与驱动无关
2019-4-26 12:47:55 评论

举报



现在的问题是运行后如果tcp_test()函数里没有用到for(;;)循环,程序就不知道跑到哪里去了,但是如果用了for(;;)循环,又无法在接收数据后跳转到我的upp任务里面,希望您能给我一个思路。


在 for(;;) 里面添加 task_sleep 或者 task_yield 
2019-4-26 12:58:21 评论

举报



补充:如果没有for(;;)循环,程序执行完tcp_test()函数后到什么地方去了?请您给我指点,这个对我编写代码的思路影响很大。

一般执行 IDLE 空闲线程调度所有的操作系统都是这样的 没有进程/任务在工作就在空闲进程/线程 Windows 也是[attachimg]1759[/attachimg] 
2019-4-26 13:13:31 评论

举报

2019-4-26 13:19:24 评论

举报

chengh72 发表于 2019-4-26 12:58
在 for(;;) 里面添加 task_sleep 或者 task_yield 


在 for(;;) 里面添加 task_sleep 或者 task_yield
2019-4-26 13:38:48 评论

举报


一般执行 IDLE 空闲线程调度
所有的操作系统都是这样的 没有进程/任务在工作就在空闲进程/线程 Windows 也是

2019-4-26 13:55:24 评论

举报



这个我之前就试过了如果加在tcp_test()函数里的for(;;)内的末尾加休眠或抢占指令,会重新回到for循环的第一条指令,如图1和图2

如果tcp_test()函数内部不适用for(;;)循环,该函数末尾使用task_sleep()指令,一样不会跳转到低优先级的upp任务,如图3图4


补充:upp任务我在之前的使用也是正常的,在这里却不能跳转。


Task_sleep 之前 post 一下 upp 任务的信号量 
2019-4-26 14:10:11 评论

举报


.pcb{margin-right:0}
我的upp任务的优先级是3,比空闲线程要高,而且空闲是失能的,但是结束后依旧无法跳转到upp任务,两种指令都没作用。r
2019-4-26 14:21:35 评论

举报



补充:但是我在Semaphore_Binary例程设计不同指令的任务之间连续跳转都是没有问题的。r

添加系统分析功能 看下任务调度过程 
2019-4-26 14:41:16 评论

举报

riverdj 发表于 2019-4-26 14:41
添加系统分析功能 看下任务调度过程 


添加系统分析功能 看下任务调度过程r
2019-4-26 14:57:32 评论

举报




如图所示,无论我的taskMain()的优先级设置为多少都只运行一次,剩余的任务依次会执行,当服务器侦听到开发板后,tcp_test()任务停止,除taskMain()剩余的任务会一直增加,taskMain始终不能执行,看图似乎一直在执行SWI和HWI,有什么办法能让我灵活控制taskMain()任务?实在不行我只能taskmain写入tcp_test()里面了
r
2019-4-26 15:12:56 评论

举报

60user100 发表于 2019-4-26 14:10
Task_sleep 之前 post 一下 upp 任务的信号量 


Task_sleep 之前 post 一下 upp 任务的信号量 r
2019-4-26 15:32:09 评论

举报

2019-4-26 15:42:29 评论

举报



这个错误我找到原因了,是我的一个数组溢出了。r
2019-4-26 15:53:46 评论

举报

只有小组成员才能发言,加入小组>>

34个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表