|
KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术,开发商基于它可以很容易地支持各种调试功能。因为Windows CE的调试是一种远程调试,所以开发工作站(运行PB的机器)和设备端必须要有相应的通信通道,不同的硬件平台会有不同的通信硬件,这样会增加开发的难度。KITL的目的就是将硬件层和通信协议层分开,开发商只要根据相应的API实现控制通信硬件的代码就可以实现KITL。
KITL要工作必须要具备两个条件,一是在开发工作站上要运行PB(Platform Builder),另外在Windows CE的OAL层要实现支持KITL的代码。如下图:
KITL有两种模式:主动和被动模式。主动模式是指系统在启动的过程就要求和开发工作站建立KITL连接,而且这个连接必须一直保持,否则系统会不正常,它主要适用于开发工程师作调试;被动模式不要求在启动阶段就建立KITL连接,只有当系统出现异常,而且没有相应的处理器处理这个异常的时候,才会请求建立一个KITL连接,这种模式主要适用于测试人员或者是系统已经比较稳定的情况,这样可以方便开发人员去跟踪问题。
目前KITL支持的传输方式有以下几种:
串口: 优点是容易实现,但速度太慢
网卡: 优点是快,容易实现。但一般的嵌入式设备都不支持网卡
基于USB仿真的串口: 优点是快,而且现在的嵌入式设备都支持USB。但是PB不支持通过它下载
基于USB仿真的网卡: 因为在开发工作站端看到的是一个网卡,所以相比USB仿真的串口,PB支持通过它下载image
基于KITL可以提供很多调试服务,除了微软已经提供的,开发商也可以自己开发:
代码调试: 可以调试kernel和普通的application
远程工具: PB自带的一些远程工具会通过KITL和设备通信,比如编辑注册表,测试系统性能,spy窗口消息
Release文件系统: 如果Windows CE要加载某个文件,但image里又没有。系统会通过KITL从开发工作站的release目录下加载该文件。这样就可以提高开发效率。比如开发人员在调试一个driver,他就可以不要将该driver放到os image里,也就不要每次修改driver后都下载整个os image,因为系统会自动从release目录下加载最新的该driver。
KITL的实现,可以提高开发效率,有利于开发出更稳定的产品。所以开发商在产品的设计初期就要考虑怎样支持KITL,要有相应的通信硬件,要开发相应的代码。
|
|