原创 使用KITL的详细教程(转载)

2011-5-21 15:04 2112 4 4 分类: MCU/ 嵌入式

引自:http://blog.csdn.net/gooogleman/archive/2009/03/18/4001784.aspx

 

8.3 usb serial kitl
1. To enable wince image with usb serial kitl,you must do the following:
>X:\WINCE500\PLATFORM\SMDK2440A\smdk2440a.bat file must have the following settings:
set BSP_NOCS8900=
set BSP_NOSERIAL=
set BSP_NOUSBFN=1
>X:\WINCE500\PLATFORM\SMDK2440A\Src\Inc\kitl_cfg.h file must have the following settings:
//#define KITL_SERIAL_UART0
//#define KITL_SERIAL_UART1
#define KITL_USBSERIAL
//#define KITL_ETHERNET 然后,修改编译设置,这个很关键,否则根本调试不了。之后就可以编译了。当编译出一个KITL内核以后,烧写进flash以后就不用再烧写了,KITL最大方便就是如此。
然后,进入platform settings,选择:
Enable CE Target Control Support(SYSGEN_SHELL=1)
Enable Eboot Space in Memory(IMGEBOOT=1)
Enable Kernel Debugger(no IMGNODEBUGGER=1)
Enable KITL(no IMGNOKITL=1)
  哦,还少了个连接设置,这个也是缺一不可,否则KITL也是无法attach device成功的。
进入Target Device Connectiveity Options
Kernel Service Map:
Target Device:CE Device
Download:None
Transport:USB
Debugger:KdStub
还有一个重要步骤,就是执行target——》Release Directory Modules
点击Add:
加入PowerButton.dll
    touch.dll
说明:这是必要步骤,否则没有办法在断点停住。
   现在,我们来做个实验,看看KITL是否真的起作用了。修改PowerButton驱动,在初始化函数中加入了一个打印信息。看看这样是否真的能打印。Come on!
DWORD
HW_InitRegisters(
    PPWR_CONTEXT pPWR)
{
    DWORD retry =0;
    v_pIOPregs =(volatile S3C2440A_IOPORT_REG *)VirtualAlloc(0, sizeof(S3C2440A_IOPORT_REG...))
    ....
    RETAILMSG(1,(TEXT("caichang@#$KITL Test @ PowerButton \r\n")));
    v_pIOPregs->GPFCON &=~(0X3<<0);      // SET EINT0(GPF0) AS EINT0, and add breakpot here,执行attach device命令后停在断点处
    v_pIOPregs->GPFCON &=~(0X3<<0);
    ...
    return 0;
}
编 译PowerButton驱动,然后执行attach device连接,就会停在上图了,并且会在PB打印信息窗口看见真的新增加的信息,看来确实成功了。不过在这里要提醒的是,这个断点必须在编译驱动之前 设置,以前我我在attach device之后设置,真是贻笑大方!
5152 TID:c3dc4002 HW_Init : HW_InitRegisters+++++++XXXXXXX@@@@@@@@@@
5152 TID:c3dc4002 HW_Init : caichang@#$KITL Test @ PowerButton
哈哈,寄存器的值都可以显示出来。
 OK!KITL 调试驱动验证完毕。谢谢CSDN众多网友,尤其是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

就行了。


     支持KITL的 2440 BSP下载地址http://d.download.csdn.net/down/1115341/gooogleman

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条