原创 COS的命令处理流程(图)

2008-10-20 13:38 5179 4 4 分类: 软件与OS
  1、工作原理

    命令处理流程是命令执行的高度过程,它根据命令的类别以及应用的类别调用不同的命令处理模块进行命令的处理。

    它的主要功能是根据命令报文输入缓冲区中的命令参数和输入数据。继续响应的操作,并且将执行结果和响应数据放在响应数据输出缓冲区中。

    对命令处理模块的调用有两种不同的方式:

    * 函数调用方式;
    * 中断方式。

    根据芯片平台的编程环境,两种方式都可以选用,主要区别在于:

    * 函数调用方式中,参数和结果的传递通过堆栈来进行,对堆栈的大小有一定要求,而且不能够传递太大的数据对象。

    * 中断方式调用,参数和结果的传递通过固定的缓冲区进行,减少堆栈的使用,更为灵活,但是需要程序自解释缓冲区的数据结构。

    下面进行中断方式设计示例介绍。

  2、命令处理流程的设计示例

    如图1所示,整个流程分为如下几个步骤:

    07120701dev198.gif
           图1 命令处理流程示例

   1)CLA合法性检查

    对于命令输入缓冲区的命令报文,首先检查命令CLA字节是否合法,合法的CLA字节只有0x00、0x04、0x80和0x84四种情况,如果CLA非法的话,返回错误码。

   2)根据INS查找命令处理模块入口地址

    根据INS查找命令处理模块的入口地址,查找方式见下文。
  
    * 如果查找失败,表示对应的INS错误,返回错误码。
    * 如果查找成功,继续下一步骤。

   3)命令处理

    根据找到的命令处理模块入口地址,调用相应的模块。默认的,将命令输入缓冲区作为模块的输入数据,命令响应缓冲区作为模块的输出数据。

    命令的处理结果直接存放在命令响应输出缓冲区中,由主守护流程来完成响应数据的输出。

    下面来看看一个根据INS来查找命令入口地址的设计示例。

    如图2所示,整个流程可以分为如下几个步骤:

    07120702dev198.gif
                图2 命令入口地址查找流程示例

   1)查看当前应用的类型

    在当前应用对应的DF的文件描述块中读取应用类型字节。

   2)查找当前应用对应的命令入口表

    根据当前应用的应用类型字节查找其对应的命令入口表,非特殊应用使用默认的命令入口表。

   3)在命令入口表中查找命令入口地址

    根据INS在命令入口表中查找命令入口地址。

    以上采用的是两层检索方式,第一层采用应用类型查找应用命令入口地址表,第二层使用INS查找命令入口地址,同一应用的所有命令入口地址存储在同一个应用命令入口地址表中。

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条