This page is available in: cn

IMS基本使用规则及命令

作者: 邱 磊(北京大学软件与微电子学院嵌入式系)

编辑: 韩轶东(Centre for High Performance Embedded Systems [CHiPES], NTU Singapore)

IMS(Initial Monitor System)初始监控系统,以下简称IMS)非常类似于一个基于内核的子系统。实际上,它是作为T-Kernel初始化任务的一个程序,以命令行控制台的形式出现,我们可以把IMS看作一个基于T-Kernel的子模块,它具有以下的功能:

  1. 通过命令查看和操作T-Kernel状态
  2. 装载和卸载程序(子系统)
  3. 执行命令文件
  4. 自动的执行系统启动命令文件:STARTUP.CMD

下面让我们来简单介绍一下IMS的使用规则及基本命令。

一、IMS基本使用规则

  1. 命令中一般包含一个或者多个数字或字符串;
  2. 字符串用一对“”来表示;
  3. 十六进制数字前缀为H或者0x;
  4. 十进制数字前缀为D;
  5. 八进制数字前缀为O;
  6. 二进制数字前缀为B;

如果没有前缀,将按照进制设置命令所设置的进制进行解析,系统初始的默认进制为十进制。

二、命令:

h


帮助

格式::h [ <命令名> ]

显示指定命令的帮助信息。
如没有指定命令名,则显示所有命令列表。

?


帮助

格式::? [ <命令名> ]

与h命令一样。
显示指定命令的帮助信息。
如没有指定命令名,则显示所有命令列表。

prompt


提示符设置

格式: prompt “字符串”

设置“字符串” 为提示符。
“字符串”最多能有32个字符。

radix


设置进制

格式: radix [ { H | D | O } ]

设置输入数字的进制,H (十六进制),D (十进制)或者O (八进制)。
如果没有参数,则显示默认进制。

sleep


睡眠

格式: sleep  < 时间间隔 > 

把IMS置为WAIT状态。
当指定时间间隔用完,则释放WAIT状态。

ref_tsk


获得任务状态

格式::ref_tsk [ < 任务ID> ]

显示由任务ID所代表任务的如下信息:
如果没有指定任务,则显示所有任务的状态信息。

TID          任务ID
PRI:BPR      实时优先级,静态优先级
SLT          时间片
WUP          唤醒该任务的请求数目
SUS          挂起该任务的请求数目
STS          任务状态(如果是WAIT状态,则同时显示引起等待的原因)    
ST+UT        系统运行时间, 用户运行时间
RID          资源ID
EXINF\NAME   扩展信息    

ref_sem


获得信号量状态

格式: ref_sem [ < 信号量ID> ]

显示由信号量ID所代表信号量的如下信息:
如果没有指定信号量,则显示所有信号量信息。

ID           信号量ID
WID          等待该信号量队列中头任务的ID (如果没有任务等待则为0)
CNT          信号量计数
EXINF        扩展信息

ref_flg


获得事件标志状态

格式: ref_flg [ < 事件标志ID> ]

显示由事件标志ID所代表事件标志的如下信息:
如果没有指定事件标志,则显示所有事件标志信息。

ID          事件标志ID
WID         等待该标志的队列中首任务ID (如果没有任务等待则为0)
PIN         标志模式
EXINF       扩展信息

ref_mbx


获得邮箱状态

格式: ref_mbx [ < 邮箱ID> ]

显示由邮箱ID所代表邮箱的如下信息:
如果没有指定邮箱,则显示所有邮箱信息。

ID          邮箱ID
WID         等待队列头任务ID (如果没有任务等待则为0)
MSG         第一个消息的地址 (如果没有消息则为0)
EXINF       扩展信息

ref_mtx


获得互斥信号量的状态

格式: ref_mtx [ < 互斥量ID> ]

显示由互斥量ID所代表互斥信号量的如下信息:
如果没有指定互斥量,则显示所有互斥信号量信息。

ID          互斥信号量ID
HID         被锁任务的ID (如果没有任务被锁则为0)
WID         等待队列头任务的ID (如果没有人物等待则为0)
EXINF       扩展信息

ref_mbf


获得消息队列状态

格式: ref_mbf [ < 消息队列ID> ]

显示由消息队列ID所代表消息队列的如下信息:
如果没有指定消息队列,则显示所有消息队列信息。

ID          消息队列ID
WID         等待接受消息任务队列头任务ID (如果没有任务等待接受消息则为0)
SID         等待发送消息任务队列头任务ID (如果没有任务等待发送消息则为0)
MSGSZ       首消息的大小 (如果没有消息则为0)
FREE        空闲队列的大小
MAX         当消息队列被创建后,最大的消息容量
EXINF       扩展信息

ref_por


获得约定端口状态

格式: ref_por [ < 约定端口ID> ]

显示由约定端口ID所代表约定端口的如下信息:
如果没有指定约定端口,则显示所有约定端口信息。

ID          约定端口ID
WID         等待被唤起队列头任务的ID (如果没有任务等待则为0)
AID         等待接收队列头任务的ID (如果没有任务等待则为0)
MAXCSZ      当约定端口被创建后,唤起消息的最大长度
MAXRSZ      当约定端口被创建后,返回消息的最大长度
EXINF       扩展信息

ref_mpl


获得不定长内存块状态

格式: ref_mpl [ < 不定长内存块ID> ]

显示由不定长内存块ID所代表不定长内存块的如下信息:
如果没有指定不定长内存块,则显示所有不定长内存块信息。

ID          不定长内存块ID
WID         等待队列头任务ID (如果没有任务等待则为0)
FREE        总空闲空间    
MAX         最大空闲空间
EXINF       扩展信息

ref_mpf


获得定长内存块状态

格式: ref_mpl [ < 定长内存块ID> ]

显示由定长内存块ID所代表定长内存块的如下信息:
如果没有指定定长内存块,则显示所有定长内存块信息。

ID          定长内存块 ID
WID         等待队列头任务ID (如果没有任务等待则为0)
FREE        空闲块数量
EXINF       扩展信息

ref_cyc


获得循环处理程序状态

格式: ref_cyc [ < 循环处理程序ID> ]

显示由循环处理程序ID所代表循环处理程序的如下信息:
如果没有指定循环处理程序,则显示所有循环处理程序信息。

ID          循环处理程序ID
STS         循环处理程序状态 (1=已开始)
TIME        下一个处理程序开始前的剩余时间
EXINF       扩展信息

ref_alm


获得定时处理程序状态

格式: ref_alm [ < 定时处理程程序ID> ]

显示由定时处理程程序ID所代表定时处理程程序的如下信息:
如果没有指定定时处理程程序,则显示所有定时处理程程序信息。

ID          定时处理程程序ID
STS         定时处理程程序状态 (1=已开始
TIME        下一个处理程序开始前的剩余时间
EXINF       扩展信息

ref_smb


获得系统内存信息

格式: ref_smb

显示系统内存使用状态。

get_reg


获得任务寄存器状态

格式: get_reg <任务ID> 

获得由任务ID指定任务的寄存器状态

sta_tsk


开始任务

格式: sta_tsk <任务ID> [ <任务开始码>]

开始由任务ID所指定的任务。
不能开始一个状态不为DORMANT的任务。 

ter_tsk


中止任务

格式:ter_tsk <任务 ID>

中止由任务ID所指定的任务。

del_tsk


删除任务

格式: del_tsk <task ID>

删除由任务ID所指定的任务。
不能删除一个状态不为DORMANT的任务。

rel_wai


释放 WAIT状态 

格式: rel_wai <任务ID>

释放由任务ID所指定的任务的WAIT状态。
不能释放一个状态不为WAIT的任务状态。

wup_tsk


唤醒任务

格式:  wup_tsk <任务ID>

唤醒由任务ID所指定的任务
如果tk_slp_tsk该任务没有被执行并且任务不是WAIT状态,那么唤醒请求将插入请求队列。

can_wup


取消唤醒请求

格式:  can_wup <任务ID>

取消唤醒由任务ID所指定的任务。
所有唤醒该任务的请求都被取消。

sus_tsk

挂起任务

格式: sus_tsk <任务ID>

把由任务ID所指定的任务置为SUSPENDED状态。

rsm_tsk


重新开始任务
格式: rsm_tsk <任务ID>

释放由任务ID所指定任务的 SUSPENDED状态。
如果有挂起请求在队列中,则清除第一个请求。

frsm_tsk


强制重新开始任务

格式: frsm_tsk <任务ID>

强制释放由任务ID所指定任务的 SUSPENDED状态。
所有挂起该任务的请求都被清除。

chg_pri

设置任务优先级

格式: chg_pri <任务ID> <优先级>

设置由任务ID所指定任务的优先级。

rot_rdq

轮转任务队列

格式: rot_rdq <优先级>

轮转由任务优先级所指定任务队列的顺序。

sig_sem

返回信号量资源

格式: sig_sem <信号量ID> <增量>

增加由信号量ID所指定的信号量的计数,增加数由增量指定。

clr_flg

清除事件标志

格式: clr_flg <事件标志ID> <清除模式>

根据清除模式清除由事件标志ID所指定的事件标志。

set_flg

设置事件标志

格式: set_flg <事件标志ID> <设置模式>

根据设置模式设置由事件标志ID所指定的事件标志。

set_pow

设置省电模式

格式: set_pow <省电模式>


按照以下设置省电模式:
置为SUSPENDED状态
禁止转换到省电模式
允许转换到省电模式

#

退出IMS界面

格式: #

IMS命令行界面退出。

以上是对IMS的使用规则及命令的基本介绍,希望对刚刚接触T-Kernel的开发人员有所帮助。考虑到T-Kernel的中文资料极为匮乏,我们会逐步推出各种T-Kernel相关的中文文档,方便大家参阅。