diff --git a/images/taskmgr_1.png b/images/taskmgr_1.png new file mode 100644 index 00000000..9d6cc19e Binary files /dev/null and b/images/taskmgr_1.png differ diff --git a/补充说明.md b/补充说明.md index b16139d2..2d738d02 100644 --- a/补充说明.md +++ b/补充说明.md @@ -20,13 +20,12 @@ Cortex-M内核,报警为warning: #177-D。
80251内核还另有报警DR0_、DR4_、R11_,三个未引用的参数。 #### 四、中断优先级 -无论您的MCU是哪种内核,CosyOS都会占用三个中断做为系统专用。
-1、SysTick_Handler:软件RTC的计时,软件定时器的计数,调用滴答钩子,恢复/调用定时中断任务/钩子和定时查询任务/钩子。
-2、SVC_Handler:任务中调用的异步服务的执行。
-3、PendSV_Handler:中断中调用的异步服务的执行,任务调度与切换。
-针对8051和80251内核,这三个中断用的都是最低优先级,且在进入临界区时会关闭SysTick中断和PendSV中断。所以您的硬件中断最好不要用最低级,否则会影响您硬件中断的实时性。但即使您使用了最低级,也不会有任何问题,只是实时性无法保证。
-针对Cortex-M内核,这三个中断用的是最低两级优先级,且在进入临界区时会屏蔽最低优先级的中断。所以良好的规划应是系统使用最低两级优先级,而您自己的中断使用其它更高的优先级,您的中断优先级分组应选择分组2~4。所以您的硬件中断最好不要用最低两级,否则会影响您硬件中断的实时性。但即使您使用了最低两级,也不会有任何问题,只是实时性无法保证。
-您的硬件中断应遵循快进快出的原则,仅执行最为紧急的工作,而把不太紧急的工作转为在任务中执行。另外,您的硬件中断的最大执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行,软件RTC的计时和软件定时器的计数也将符合预期的精度。 +无论您的MCU是哪种内核,CosyOS都会占用两个中断做为系统专用。
+1、SysTick_Handler:优先级固定为最低级,软件RTC的计时,软件定时器的计数,调用滴答钩子,恢复/调用定时中断任务/钩子和定时查询任务/钩子。
+2、PendSV_Handler:优先级固定为最低级,中断中调用的异步服务的执行,任务调度与切换。
+您的硬件中断应尽可能避免使用最低级,否则实时性无法保证。
+您的硬件中断应遵循快进快出的原则,仅执行最为紧急的工作,而把不太紧急的工作转为在任务中执行。
+另外,您的硬件中断的最大执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行,软件RTC和软件定时器的精度也能得以保证。 #### 五、软件定时器 CosyOS的软件定时器分为三类,延时定时器、定时中断定时器、定时查询定时器。 @@ -36,8 +35,8 @@ CosyOS的软件定时器分为三类,延时定时器、定时中断定时器 #### 六、任务管理器 在您配置好相关硬件和软件后,任务管理器便可以使用了。您可使用某一款串口调试助手,作为任务管理器的输出窗口。 +![输入图片说明](images/taskmgr_0.png)
![输入图片说明](images/taskmgr_1.png)
-![输入图片说明](images/taskmgr_2.png)
相关名词解释
**Name**:任务名称
**TID**:任务ID
@@ -50,9 +49,7 @@ CosyOS的软件定时器分为三类,延时定时器、定时中断定时器 示例1:32B/m49B,系统采用每滴答+线程入口假定入栈法计算出的可能的最大任务栈占用为32Bytes,任务栈已malloc分配了49Bytes。
示例2:32B/r32B,系统采用每滴答+线程入口假定入栈法计算出的可能的最大任务栈占用为32Bytes,任务栈已realloc分配了32Bytes。 -针对ARM内核,如果您已开启服务栈监控,会显示下面两项:
-**USS**:任务服务栈的深度,历史最大值/设置值。
-**ISS**:中断服务栈的深度,历史最大值/设置值。
+**ISS**:中断服务栈的深度,针对ARM内核,如果您已开启服务栈监控,会显示此项,历史最大值/设置值。
**Task PC**:任务PC监控,如果您已开启任务PC监控,会显示此项。
当任务管理器被调度运行时,上一个被切换的任务入栈的PC值。当有任务出现代码运行卡死或死循环时,此功能可用来帮助用户锁定具体位置,以便查找BUG。
@@ -71,7 +68,6 @@ mtn:任务节点内存分配失败;
mts:任务栈内存分配失败;
rts:任务栈内存重分配失败;
ots:任务栈溢出;
-ous:USS(任务服务栈)溢出; // [ARM]
ois:ISS(中断服务栈)溢出。 // [ARM]
任务管理器现支持如下命令: