关于KITL的若干常见问题
今天在网上看了一篇牛人的博客,当然了也不用说我想大家都知道了,因为我所关注的人就是他--WINCE.he,从他那里学会了很多知识,呵呵,在这里感谢他。
其中有一篇是关于KITL的介绍,前段时间在移植KITL的时候对KITL已经有了较深的理解,今天看了下以后,又有了新的认识,关于这篇文章的出处我给出链接:
http://www.cnblogs.com/we-hjb/archive/2008/10/16/1312236.html#commentform
下面我给出关于这篇文章,以及在论坛上关于KITL的若干问题的集锦,和大家共享!
Q:请问博主,这个KITL是不是编译出来后下载到内存是不会执行的?
要使用PB的才看控制加载才可以启动,是这样吗?
A:包涵KITL功能的NK下载到内存是可执行的。
系统启动时会连接PB,即使失败,也能正常启动,
但调试信息继续在超级终端中显示,
如果连接PB成功,调试信息将从PB的Output中输出,
并支持单步调试。
Q:今天我试了一下,我的2440 5.0 BSP文档介绍已经支持KITL,我按照文档编译,配置成USB的kITL,下载内核,果然下载后出现等待连接的字
样,我使用pB菜单控制,也能弹出加载菜单,但是到后面我想设定单步,就出现了没有连接的提示,
后来我看网上说,一定要用BSP里面的eboot,
但是我使用的是优龙BIOS,是不是KITL也和bootloader有关的?
A:KITL跟BOOTLOADER有一定的关系,
KITL的配置参数是从BOOTLOADER中获取的。
如果BOOTLOADER中没有正确配置参数,KITL也是不能正常工作的。
Q:我想使用USB,因为我的板子是没有网卡的。
过几天再调试,到时候再请教你。
A:直接在OAL中设置应该也没有问题,
只要配置正确,放哪里都一样。
Q:博主,我的KITL跑起来了,但是我发现单步不行啊。我在驱动中设置断点,怎么运行不到呢?如果这样运行不到那这个KITL也没有多大意义了
。是不是要debug模式编译才能使用KITL单步的呢?是这样吗?
我使用release模式编译KITL不能单步。
A:我用KITL的一点经验,在Debug模式下,平台设置里Enable KITL和Kernel Debugger,在连接设置中,选择kdstub。可以设置断点,单步执行
都没有问题。
没有执行到你设置的断点处,会不会是因为在这之前,已经在别的地方挂掉了。
Q:我觉得没有理由啊,因为我那些驱动在平时是可以运行的。没有理由运行不了的。现在我尝试debug模式编译,没有想到编译出来的NK过大,
无法打包。我现在要找出debug模式编译到底链接了什么库,导致变的这么大。博主,你是怎么控制debug模式时候NK的大小的?
我一下子就弄到了40M,超出了config.bib中的限制。导致生成nb0文件失败。
A:有些人建议使用部分驱动以debug模式编译,部分以release模式编译的方法来生成NK,但是不知道怎么做。这个应该能有效控制NK大小。
Q:我发现了一个现象,就是你使用KITL时候系统起来会显示界面的吧?
我看你的那个贴图发现你的attach device之后系统会起来啊,有界面显示,而我的没有界面。
那个液晶隐约可见一些图画,并且看见时钟在走。
我的这样看不到液晶亮起来是不是不正常的?
请博主明示
A:Debug模式下,尽量减少添加的组件,象中文、.NET CF、IE等都可以去掉,这样编译出来的的NK就会小很多。
单个编译成Debug,我没玩过,但肯定是可以减小NK的,你玩熟了,告诉我怎么玩。
使用KITL是不会影响系统进入WinCE的shell的,文中网络连接的截图,就是使用KITL时的截图。
使用KITL会导致系统慢一点而已。你说的只能在LCD上看见一点影像估计是不正常的。
Q:博主,我的kITL还是不行啊。
我以debug模式编译通过了,但是在attach device之后,加载一段时间后,加载失败。有个莫名其妙的错误。我在CSDN论坛发帖求助,尝试了好
多办法。但就是不成功。
http://topic.csdn.net/u/20081127/11/ffaf4d6d-75af-40f2-b36c-5168f80aea13.html——这是地址,如果你有空,帮我看看。
不过那个release已经起来了,只是不知道怎么回事,液晶背光没有了,但是触摸屏还是可以工作的。点击都有反映,但就是不能单步。
冒昧问一句,你的2410开发板是在哪里买的啊?BSP本来没有实现KITL,是你加上去的?
博主,我的KITL目前是这种情况,以release模式编译。只能在attach device之前设置断点,起来后就不能设置了。并且那些单步不是随便用的
。要符合规律才能用。不知道你的是不是这样。
我以前主要是一点都不了解,所以瞎蒙乱撞,幸好有你的指点。我觉得如果系统起不来的时候用KITL可以很快排除,如果是调试起来之后的驱动
,那用你的驱动调试助手等手段比较好。
A:在调试WinCE系统时,应该是在attach device之前设置断点。因为你如果不事先设置好断点,系统会顺序执行下来,你根本没有机会再设断点
了。除非暂停运行,然后在后面的位置设断点,而之前的位置是再也回不去啦,设断点也执行不到。这跟调试应用程序不同,你可以随时设定断
点,然后触发相关事件,使其再次运行到断点处。这是我的理解。我在使用KITL时也是先设好断点,然后再attach device的,没碰到特别的问
题。
Q:你好,我用WINCE6,DEVICEEMULATOR BSP编译的 目前非DEBUG可以正常运行,我想调试一下内核,想看看内核怎么运行的,我选择了DEBUG编
译,选择了kernel debug 和 ktil 选项,目前编译完成后,使用ARM模拟器启动,启动黑屏。
A:如果是你导出的SDK再安装在目标设备上以后,所自定义的模拟器会无法启动,出现黑屏现象。建议你把第三项 Enable KITL去掉试试。
总结:
如果使用网线KITL一定要用eboot,如果使用USB可以不使用eboot。
如果有EBOOT,并且是通过ETHERNET下载NK,建议还是用ETHERNET作为KITL的调试通道,配置也很简单。
不过,看起来你的USBKITL也没什么问题。
KITL设置断点,我想应该得事先设定好。因为系统的执行是顺序下来的,运行过程中你根本没有机会设定断点,运行过了,就不会再运行回去。
这和调试应用程序是不一样的,随时设,随时触发。
KITL最好是在Debug模式下用,如果系统当掉,一般会弹出提示框的,你的系统应该是正常运行起来了,只是没有正确配置硬件,所以液晶屏没
有显示。