none
请教何忠建老师 RRS feed

  • 问题

  • 请教何老师Stick out tongueb使用的是kitl,evc使用的是activesync。调试之前先保证这两个连接畅通

    这两个连接具体有什么区别啊,kitl物理上是用什么连接的啊,谢谢您

    2008年7月28日 7:48

答案

  • 我先来说一个,抛砖引玉啊

    KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术,开发者基于它可以很容易地支持各种调试功能。因为Windows CE的调试是一种远程调试,所以开发工作站(运行PB的机器)和设备端必须要有相应的通信通道,不同的硬件平台会有不同的通信硬件,这样会增加开发的难度。KITL的目的就是将硬件层和通信协议层分开,OEM长商只要根据相应的API实现控制通信硬件的代码就可以实现KITL

        KITL要工作必须要具备两个条件,一是在开发工作站上要运行PB(Platform Builder),另外在Windows CE的OAL层要实现支持KITL的代码。

         KITL有两种模式:主动和被动模式。主动模式是指系统在启动的过程就要求和开发工作站建立KITL连接,而且这个连接必须一直保持,否则系统会不正常,它主要适用于开发工程师作调试;被动模式不要求在启动阶段就建立KITL连接,只有当系统出现异常,而且没有相应的处理器处理这个异常的 时候,才会请求建立一个KITL连接,这种模式主要适用于测试人员或者是系统已经比较稳定的情况,这样可以方便开发人员去跟踪问题。

        目前KITL支持的传输方式有以下几种:
        串口: 优点是容易实现,但速度太慢。
        网卡: 优点是快,容易实现。但一般的嵌入式设备都不支持网卡。
        基于USB仿真的串口: 优点是快,而且现在的嵌入式设备都支持USB。但是PB不支持通过它下载。
        基于网卡: 因为在开发工作站端看到的是一个网卡,,PB支持通过它下载image。

        基于KITL可以提供很多调试服务,除了微软已经提供的,OEM厂商商也可以自己开发:
        代码调试: 可以调试kernel和普通的application。
        远程工具: PB自带的一些远程工具会通过KITL和设备通信,比如编辑注册表,测试系统性能,spy窗口消息。

        Release文件系统: 如果Windows CE要加载某个文件,但image里又没有。系统会通过KITL从开发工作站的release目录下加载该文件。这样就可以提高开发效率。比如开发人员在调试一个driver,他就可以不将该driver放到os image里,也就不用每次修改driver后都下载整个os image,因为系统会自动从release目录下加载最新的该driver。

    KITL的实现,可以提高开发效率,有利于开发出更稳定的产品。所以OEM长商在产品的设计初期就要考虑怎样支持KITL,要有相应的通信硬件,要开发相应的代码。

    WINCE开发过程中,经常会遇到需要调试WINCE驱动代码的情况,这时候,就要在编译系统时,指定其为Debug版本,并启用Kernel Debug,即内核调试特性.而Kernel Debug,也是在要kitl的基础上运行的。通过Kernel Debug,我们就可以很方便的在驱动程序中,设置断点,单步调试了。

        我用过三星2410的开发板,官方的WINCE BSP包中,实现了通过网卡cs8900Akitl特性,很幸运的能够实际体会到kitl的贴心功能。


    2008年7月28日 9:41
  • 呵呵,楼上这段文字总结的很好,不知道是不是自己写的?如果是自己写的?我倒想请求楼上允许我把这段文字写到新版本的书里面。

     

    KITL其实说白了就是一个Windows CE内核与开发PC之间的通道协议,与具体物理传输无关,我见过ethernet的和USB的,还见过串口的。不过目前来说以太网KITL最多。通过KITL把PC和CE联通之后,就可以干很多事情,Kernel Debuggder只是其中一件事情。很多时候说的不严谨,KITL跟Kernel Debugger都分不开了,都叫混了。

     

    ActiveSync其实最早是用来在PC和CE之间同步数据的一个工具,后来也把它用作调试。只能用来调试应用程序。不能调试OS内核。ActiveSyn其实也没规定传输介质,我见过USB的,串口的,还有蓝牙,无线网的。不过以USB的居多。

     

    如果大家熟悉GDB的远程调试的话,其实这两个东西就跟调kernel的KGDB跟调试应用程序的GDB Server类似。

    2008年8月1日 7:35
    版主

全部回复

  • 我先来说一个,抛砖引玉啊

    KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术,开发者基于它可以很容易地支持各种调试功能。因为Windows CE的调试是一种远程调试,所以开发工作站(运行PB的机器)和设备端必须要有相应的通信通道,不同的硬件平台会有不同的通信硬件,这样会增加开发的难度。KITL的目的就是将硬件层和通信协议层分开,OEM长商只要根据相应的API实现控制通信硬件的代码就可以实现KITL

        KITL要工作必须要具备两个条件,一是在开发工作站上要运行PB(Platform Builder),另外在Windows CE的OAL层要实现支持KITL的代码。

         KITL有两种模式:主动和被动模式。主动模式是指系统在启动的过程就要求和开发工作站建立KITL连接,而且这个连接必须一直保持,否则系统会不正常,它主要适用于开发工程师作调试;被动模式不要求在启动阶段就建立KITL连接,只有当系统出现异常,而且没有相应的处理器处理这个异常的 时候,才会请求建立一个KITL连接,这种模式主要适用于测试人员或者是系统已经比较稳定的情况,这样可以方便开发人员去跟踪问题。

        目前KITL支持的传输方式有以下几种:
        串口: 优点是容易实现,但速度太慢。
        网卡: 优点是快,容易实现。但一般的嵌入式设备都不支持网卡。
        基于USB仿真的串口: 优点是快,而且现在的嵌入式设备都支持USB。但是PB不支持通过它下载。
        基于网卡: 因为在开发工作站端看到的是一个网卡,,PB支持通过它下载image。

        基于KITL可以提供很多调试服务,除了微软已经提供的,OEM厂商商也可以自己开发:
        代码调试: 可以调试kernel和普通的application。
        远程工具: PB自带的一些远程工具会通过KITL和设备通信,比如编辑注册表,测试系统性能,spy窗口消息。

        Release文件系统: 如果Windows CE要加载某个文件,但image里又没有。系统会通过KITL从开发工作站的release目录下加载该文件。这样就可以提高开发效率。比如开发人员在调试一个driver,他就可以不将该driver放到os image里,也就不用每次修改driver后都下载整个os image,因为系统会自动从release目录下加载最新的该driver。

    KITL的实现,可以提高开发效率,有利于开发出更稳定的产品。所以OEM长商在产品的设计初期就要考虑怎样支持KITL,要有相应的通信硬件,要开发相应的代码。

    WINCE开发过程中,经常会遇到需要调试WINCE驱动代码的情况,这时候,就要在编译系统时,指定其为Debug版本,并启用Kernel Debug,即内核调试特性.而Kernel Debug,也是在要kitl的基础上运行的。通过Kernel Debug,我们就可以很方便的在驱动程序中,设置断点,单步调试了。

        我用过三星2410的开发板,官方的WINCE BSP包中,实现了通过网卡cs8900Akitl特性,很幸运的能够实际体会到kitl的贴心功能。


    2008年7月28日 9:41
  • 呵呵,楼上这段文字总结的很好,不知道是不是自己写的?如果是自己写的?我倒想请求楼上允许我把这段文字写到新版本的书里面。

     

    KITL其实说白了就是一个Windows CE内核与开发PC之间的通道协议,与具体物理传输无关,我见过ethernet的和USB的,还见过串口的。不过目前来说以太网KITL最多。通过KITL把PC和CE联通之后,就可以干很多事情,Kernel Debuggder只是其中一件事情。很多时候说的不严谨,KITL跟Kernel Debugger都分不开了,都叫混了。

     

    ActiveSync其实最早是用来在PC和CE之间同步数据的一个工具,后来也把它用作调试。只能用来调试应用程序。不能调试OS内核。ActiveSyn其实也没规定传输介质,我见过USB的,串口的,还有蓝牙,无线网的。不过以USB的居多。

     

    如果大家熟悉GDB的远程调试的话,其实这两个东西就跟调kernel的KGDB跟调试应用程序的GDB Server类似。

    2008年8月1日 7:35
    版主