使用KITL的详细教程

 在几个以前,我曾经玩过一下子KITL,但是那时候什么都不懂,根本没有了解KITL是什么东西,更别说是工作原理了,这段时间都是在调试一些键盘等本机驱动(系统启动时候就启动的驱动),这个驱动不能使用驱动调试助手来调试,所以非常郁闷,每次都要打包烧写内核,不仅效率非常低,而且烧写过程很容易使电脑重启,哈哈,搞多几次,估计硬盘会严重受损。调试本机驱动,非请KITL这个大神不可!

     现在我们就来一步一步操作吧。

     首先,修改BSP一些配置。

 

     然后,修改编译设置,这个很关键,否则根本调试不了。之后就可以编译了。当编译出一个KITL内核以后,烧写进flash以后就不用再烧写了,KITL最大方便就是如此。

 

     哦,还少了个连接设置,这个也是缺一不可,否则KITL也是无法attach device成功的。

 

     还有一个重要步骤,就是执行target——》Release Directory Modules

    

     现在,我们来做个实验,看看KITL是否真的起作用了。修改PowerButton驱动,在初始化函数中加入了一个打印信息。看看这样是否真的能打印。Come on!

   

     编译PowerButton驱动,然后执行attach device连接,就会停在上图了,并且会在PB打印信息窗口看见真的新增加的信息,看来确实成功了。不过在这里要提醒的是,这个断点必须在编译驱动之前设置,以前我我在attach device之后设置,真是贻笑大方!

    

     哈哈,寄存器的值都可以显示出来。

    

     OK!KITL调试驱动验证完毕。谢谢优快云众多网友,尤其是Ricky_hu,sunrain_hjb,gsymichael 等。这些都是雕虫小技,但是很多人都不能拿到三星的操作文档,所以我就来献丑了。在这里我要提醒的是,修改一次驱动就要启动一次设备,否则是不行的,这是KITL的鸡肋,不过像本机驱动这种东西他就是在启动的时候运行的,所以用KITL来调试本机驱动是上上之选。对于流驱动的调试,我觉得万不得已不要用使用。因为KITL之后系统会运行很慢,并且同步软件不能连接,还是使用驱动调试助手控制注册表比较适合。

     最后我要提几个问题,希望了解的朋友能留言告诉我。

     1.编译出KITL内核运行后,触摸屏变得不准了,但是我的BSP之前是准确的,我想是KITL之后系统运行慢很多,导致AD采用速率慢了,所以必须重新校正。——后来发现,是没有得到更新的缘故。我也奇怪,我操作正常,但是却不理想。

     2.还有我编译debug KITL会造成启动过程中,弹出对话框,无法正常启动,不知道是什么原因。现在我只能编译release 的NK,打印信息很少。

     3.我本来可行的ZLG7290 的键盘驱动本来是可行的,但是现在按下毫无反映。莫非也是速度变慢,造成读的键盘的值有误?——后来发现,是没有得到更新的缘故。我也奇怪,我操作正常,但是却不理想。

     请知道的朋友留言指点。谢谢。

     注意事项:sources文件指定生成的DLL名字要和BIB文件汇中的加载名字一致,否则不能产生断点的。例如三星的自带触摸屏驱动就是这样,我刚开始没有修改之前是

 touch.dll      $(_FLATRELEASEDIR)/s3c2440a_touch.dll                 NK  SH
这样是不行的,后来我改成:

 touch.dll       $(_FLATRELEASEDIR)/touch.dll                 NK  SH

就行了。

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/gooogleman/archive/2009/04/03/4001784.aspx

<think>嗯,用户问的是关于嵌入式系统中的KITL协议和调试接口。我需要先理解KITL是什么,然后结合提供的引用资料来回答。 首先,根据引用3,KITL在Windows CE中的作用是连接设备和PC进行调试。流程包括初始化硬件抽象层,发送和接收特定数据帧,连接成功后设置状态标记。这说明KITL协议涉及硬件层的通信,比如读写函数,以及数据包的格式,比如带有专用头部。 引用2提到编译debug KITL时出现启动问题,只能使用release版本,这可能和KITL调试模式下的硬件要求或配置有关。用户可能遇到连接问题,需要检查传输介质是否正确设置。 引用4中的DLL问题可能与KITL加载内核模块有关,可能需要将DLL放入内核区域,这涉及到系统配置或编译选项,比如在PB(Platform Builder)中调整模块设置。 用户的问题核心是了解KITL协议和调试接口。需要解释KITL的作用、工作流程,可能遇到的问题及解决方法。结合引用中的信息,可以分点说明协议结构、连接过程、常见问题等。同时,生成相关问题需要围绕协议细节、调试技巧、优化方法等展开。</think>### KITL协议与调试接口解析 KITL(Kernel Independent Transport Layer)是Windows CE嵌入式系统中的核心调试协议,主要作用包括内核调试、设备驱动调试和实时数据传输。其协议结构分为: 1. **传输介质层** 通过硬件抽象层实现物理通信(如串口、USB、以太网),定义标准接口函数: $$KITL_HW_Read()/KITL_HW_Write()$$ 引用[3]指出首次调用发生在`KITLConnectToDesktop()`阶段[^3] 2. **协议封装层** 使用专用帧头标识数据包类型: ```c typedef struct _KITL_FRAME { DWORD dwSignature; // 固定为0x4B54494C ("KITL") DWORD dwType; // 数据包类型标识 DWORD dwLength; // 数据载荷长度 } KITL_FRAME; ``` 3. **调试服务层** 支持调试中断、内存读写、寄存器操作等命令,通过`OEMKitlStartup()`初始化硬件抽象层 ### 典型调试问题解决方案 1. **连接失败** - 检查硬件链路状态(如网线连接) - 确认目标设备与开发机IP在相同子网 - 验证KITL服务已在内核配置中启用 2. **DLL加载异常** 如引用[4]所述,需在Platform Builder中设置模块属性: ```xml <MODULE NK=1 KERNEL=1> <FILE NAME="YourDriver.dll"/> </MODULE> ``` 这将强制DLL加载到内核地址空间[^4] 3. **调试信息丢失** 引用[2]建议在`CESYSGEN.BAT`中启用详细日志: ```bat set WINCEDEBUG=debug set KITL_RECV_DEBUG=1 set KITL_SEND_DEBUG=1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值