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的子模块,它具有以下的功能:
- 通过命令查看和操作T-Kernel状态
- 装载和卸载程序(子系统)
- 执行命令文件
- 自动的执行系统启动命令文件:STARTUP.CMD
下面让我们来简单介绍一下IMS的使用规则及基本命令。
一、IMS基本使用规则
- 命令中一般包含一个或者多个数字或字符串;
- 字符串用一对“”来表示;
- 十六进制数字前缀为H或者0x;
- 十进制数字前缀为D;
- 八进制数字前缀为O;
- 二进制数字前缀为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相关的中文文档,方便大家参阅。