Kernel Independent Transport Layer (Compact 2013)
10/16/2014
The kernel independent transport layer (KITL) is the communication link between your development computer and the Windows Embedded Compact powered device for debugging. The Platform Builder debugger and remote tools such as Remote File Viewer, Remote Registry Editor, and Remote Kernel Tracker use KITL. KITL exposes the device hardware to the kernel debugger and works independently of the board and transport (such as Ethernet, serial, or USB) to send and receive data between the computer and the device. KITL reduces your involvement in creating a hardware transport layer that can pass data to the device's communication hardware.
KITL relies on API functions in the host transport library and the device transport. On the development computer, the transport is a separate DLL that exports API functions that KITL relies on, and is also registered in the system so KITL knows that it is a functional transport. On the device, KITL relies on the transport to provide a set of APIs to support the debug services.
Note
If both KITL and the OS use the same hardware (such as an Ethernet port), system performance may be negatively affected.
The following illustration shows how KITL interacts with the kernel and development computer:
As of Windows Embedded CE 6.0, KITL does not interact directly with the OEM adaptation layer (OAL) or the kernel.
KITL can operate in active or passive mode and use interrupt-driven or polled transport. For more information, see OALKitlInit.
For reference information, see:
To use KITL, you implement both the OEMKitlStartup function and the BSP KITL driver, as shown in the sample code at the following locations.
- %_WINCEROOT%\Platform\Common\Src\Common\Ethdrv\
- %_WINCEROOT%\Platform\Common\Src\x86\Common\Kitl\Kitlser_x86.c
The following table shows the locations for KITL source code.
File or folder location |
Description |
---|---|
%_WINCEROOT%\Public\Common\Oak\Inc\Kitl.h |
Function pointers for the KITLTRANSPORT structure and prototype of the OEMKitlStartup function that you must implement. |
%_WINCEROOT%\Platform\Common\Src\Inc\OAL_kitl.h |
Function prototypes for the common KITL library (OAL_kitl.lib) and definition of the OAL_KITL_ARGS and OAL_KITL_DEVICE structures that you must initialize when you implement the OEMKitlStartup function. OAL_KITL_DEVICE includes OAL_KITL_ETH_DRIVER or OAL_KITL_SERIAL_DRIVER. |
%_WINCEROOT%\Platform\Common\Src\Common\Kitl\ |
Source code for the common KITL library (OAL_kitl.lib), which provides several non-platform-specific functions: OALKitlInit, OEMKitlInit, OEMKitlIoctl, and OEMKitlEthInit or OEMKitlSerialInit. OAL_kitl.lib also implements functions that are specific to the Ethernet, serial, or USB transport but not to the BSP, such as KitlEthEncode and SerialEncode. |
%_WINCEROOT%\Platform\Common\Src\Inc\OAL_ethdrv.h |
Function prototypes for the Ethernet KITL device drivers, for example <Driver Name>Init, <Driver Name>SendFrame, and <Driver Name>GetFrame. |
%_WINCEROOT%\Platform\Common\Src\Common\Ethdrv\ |
Source code for the Ethernet KITL device drivers. These functions are the implementations that the OAL_KITL_ETH_DRIVER structure points to. |
%_WINCEROOT%\Platform\Common\Src\Common\Kitldrv\usbdbg\usbdbgrndismdd |
Common MDD library for USBDBG RNDIS transport. |
%_WINCEROOT%\Platform\Common\Src\Common\Kitldrv\usbdbg\usbdbgsermdd |
Common MDD library for USBDBG serial transport. |
%_WINCEROOT%\Platform\<Hardware Platform Name>\Src\Kitl\ |
Build files and source code for building Kitl.dll for your platform. Kitl.c contains the OEMKitlStartup function, which is the platform entry point for KITL. Other files may contain code that is specific to the BSP for KITL Ethernet, serial, or USB support. |