扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
小编给大家分享一下vxworks中系统任务有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
创新互联成立与2013年,先为霍城等服务建站,霍城等地企业,进行企业商务咨询服务。为霍城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
根据配置的不同,VxWorks系统在启动时,会同步启动一些系统任务,其中有的任务在完成自己的工作后就会退出,而有的会一直运行下去。常见的系统任务如下:
任务名称:tRootTask
优先级:0
栈尺寸:ROOT_STACK_SIZE,具体数值与CPU架构有关,详见configAll.h
触发条件:系统启动
组件:无
描述:这是内核启动的第一个任务,随后它会启动其它系统任务。任务入口是函数usrRoot(),在这个函数里初始化了系统的大部分功能。通常情况下,在初始化完其它功能后,这个任务就自己退出了。为了查看它,我们在这个任务的最后位置添加一个taskSuspend(),把它挂起来
注意:实际产品里不要挂起、删除,或调整这些系统任务的优先级。否则会导致系统行为不可预测
任务名称:tLogTask
优先级:0
栈尺寸:5000
触发条件:中断或任务里调用logMsg()
组件:INCLUDE_LOGGING
描述:用于记录系统信息,不使用当前任务的IO
最多排队消息数量:MAX_LOG_MSGS,默认值50
格式化参数数量:6
任务名称:tExcTask
优先级:0
栈尺寸:EXC_TASK_STACKSIZE,默认值8192
触发条件:中断里调用excJobAdd()
组件:INCLUDE_EXC_TASK
描述:这个任务用于执行中断里不方便执行的工作,因此必须使用最高优先级。可以在这个任务上排队的工作的最多为MAX_ISR_JOBS,取值必须为2的幂,默认值为16。如果中断里需要排队的工作超过这个限制,就会有溢出警告"messages from interrupt levellost"
任务名称:tJobTask
优先级:启动时为0,根据执行的工作而动态调整
栈尺寸:JOB_TASK_STACK_SIZE,默认8000
触发条件:其它任务提交工作
组件:INCLUDE_JOB_TASK
描述:这个任务用于执行其它任务提交的工作。它使用优先级0等待工作,在执行工作时,动态调整为提交工作的任务的优先级。主要作用之一是处理任务的自我删除
任务名称:tIsrN
优先级:0
栈尺寸:8192
触发条件:设备中断调用isrDeferJobAdd()
组件:INCLUDE_ISR_DEFER
描述:这个(组)任务用于执行设备驱动通过isrDeferJobAdd()提交的工作。名称中的字母N表示这个任务所使用的CPU的序号,在单核环境里,那就只有tIsr0了。这组任务创建时,每个都绑定到相应序号的CPU上。多核模式的设备驱动将需要推迟的工作绑定到当前的CPU上,用于避免跨CPU调度
任务名称:tNet0
优先级:NET_TASK_PRIORITY,默认值50
栈尺寸:NET_TASK_STACKSIZE,默认值10000
触发条件:数据包到达,传输完成,网络协议里的定时器到时,socket应用的请求,等等
组件:INCLUDE_NET_DEAMON
描述:这是网络驱动和网络协议的守护线程
任务名称:tWdbTask
优先级:WDB_TASK_PRIORITY,默认值3
栈尺寸:WDB_STACK_SIZE,默认值0x2000
触发条件:无
组件:INCLUDE_WDB
描述:WDB的target agent程序,用于处理host tool通过target server发送的请求
任务名称:tShellN
优先级:SHELL_TASK_PRIORITY,默认值1
栈尺寸:SHELL_STACK_SIZE,默认值0x10000
触发条件:系统启动
组件:INCLUDE_SHELL
描述:kernel shell以任务形式存在的,可以同时启动多个,不同的shell使用不同的序号N为名称后缀,名称”tShell”是通过SHELL_TASK_NAME_BASE定义的。在shell里再调用的函数会使用这个shell的上下文。
任务名称:ipcom_telnetd
优先级:50
栈尺寸:6144
触发条件:新的Telnet连接
组件:INCLUDE_IPTELNETS
描述:这个守护线程允许远程用户通过Telnet登陆VxWorks的kernel shell。它会为每个Telnet连接启动一组任务,包括ipcom_telnetspawn,tStdioProxyhexNum,tLoginhexNum,tShellRemdecNum
等介绍了任务调度之后,我们就会发现这些系统任务的优先级都是比较高的,我们自己应用程序的优先级尽量要低一些。
等介绍了VxWorks系统的启动流程后,我们就会知道嵌入式硬件上电后,先是执行汇编语言的初始化程序,然后跳转到C语言的程序,然后启动第一个任务tRootTask,然后逐步加载其它系统任务。
这些高优先级的系统任务通常都是处于Pend状态,只有外界(应用程序或外设)需要它们时,它们才会提供相应的功能。它们整体对外的表现就是一个提供了很多功能的强大的实时操作系统。
看完了这篇文章,相信你对“vxworks中系统任务有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流