WinCE6.0 KITL概要
KITL(Kernel Independent Transport Layer)即内核独立传输层,它为我们提供了一种调试WinCE的简便方法。KITL将通信服务协议和用于通信的硬件分离开来。所以我们在创建硬件传输层时就省去很多麻烦,否则我们自己必须实现与设备进行数据交互的协议。KITL工作在硬件传输层之上,因此,它无须关心用于通信的具体硬件,我们可以用USB、Serial或者Ethernet作为KITL的调试通道。具体选择哪一个,由硬件平台和软件资源决定。有些设备没有Ethernet和Serial接口,所以只能采用USB,如Mobile设备。如果系统采用了EBOOT,则建议使用Ethernet作为调试通道。这时,配置KITL的代价相对来说也很小。无论如何,KITL相当强大,在BSP的移植过程中,花一些时间来实现KITL的功能是完全值得的。完成KITL之后,你会发现所有的时间都没有白花。由于KITL的实现,后续的调试节省了很多时间。磨刀不误砍柴工!工欲善其事,必先利其器!我深有体会!:-D以前没有认识到KITL的强大,一直没有碰它。最近在实现KITL的功能之后,随即顺利调通了几个顽固的驱动。虽然问题本身不值一提,但没有KITL时,驱动出了状况,内核就挂了,不知道挂在哪里,无从下手,也不好分析。而KITL可以帮助我们定位出现问题的位置。
Platform Builder中的KITL支持内核调试,正确配置后会自动与PB寻求连接并使PB进入调试界面, 目前支持的连接方式有:Serial, USB, ethnet.
KITL占用的连接通道会与WinCE镜像发生冲突, 因为KITL是先运行的,所以系统在LOAD到相应的模块时会死掉。 比如:假设KITL使用Serial连接,则系统在LOAD(启动)Serial模块时就会发生冲突,导致系统启动失败,所以在配置系统是就需要将Serial模块拿掉。同理, 如果KITL选用USB连线方式, 则需要再配置系统时拿掉USB模块。
KITL 选用USB连线方式时,还要在kitl_cfg.h中将其设定为USBSER_KITL_POLL 模式.
要让断点能停下来,系统必须运行DEBUG版本。断点偶尔会停不下来, 这是PB本身不稳定所致,重来一次就好了。