Compartilhar via


Enabling KITL

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

A versão KITL da executar-tempo imagem é colocada no Diretório a versão quando o sinalizador IMGNOKITL não está definida, e a imagem non-KITL é liberada quando IMGNOKITL for definido como 1.

Funcionalidade KITL pode ser incluída em configurações tanto depuração e versão, dependendo das suas necessidades. Ele também pode ser configurado para iniciar em inicializar, chamado ativo KITL, ou para iniciar a primeira tempo um serviço sobre o dispositivo registra com KITL, chamado KITL passivo.

KITL passivo funciona com KITL em um inativo estado até que ela seja exigido. KITL passivo não afeta o desempenho geral do dispositivo. Para obter mais informações, consulte Active and Passive KITL.

A estrutura KITLTRANSPORT define um transporte KITL, que fornece todas as a funcionalidade KITL. KITL precisa se comunicar com o hardware sublinhado incluindo a capacidade para codificar e decodificar um pacote, enviar e receber um quadro ou pacote, habilitar e desativar o transporte interrupção, get e definir configuração informações.

A seguinte tabela mostra as funções você precisa implementar para suporte a essa funcionalidade.

Função Descrição

TransportEncode

Faz um pacote pronto transporte que KITL pode enviar posteriormente a partir de transporte através TransportSend.

A implementação quadros de dados com transporte específico e informações soma de verificação.

Usar um transporte Ethernet, TransportEncode Quadros de pacote com um cabeçalho protocolo UDP (UDP).

TransportDecode

Chamado quando KITL recebe um processado pacote a partir de transporte através de TransportRecv Para extrair a campo de dados do pacote.

Usar um transporte Ethernet, TransportDecode irá validar o pacote, soma de verificação e retornar o ponteiro imediatamente após o cabeçalho UDP.

TransportSend

Chamado para enviar um processado pacote, Framed por TransportEncode, a partir de transporte.

KITL garante acessar exclusivo para o transporte quando TransportSend é chamado.

Usar um transporte Ethernet, TransportSend Será programa o hardware e o pacote sobre o Ethernet local.

TransportRecv

Chamado para receber um processado pacote a partir de transporte. KITL garante acessar exclusivo para o transporte quando TransportRecv é chamado.

Usar um transporte Ethernet TransportRecv irá ler a partir de hardware Ethernet.

TransportEnableInt

Chamada para habilitar ou desativar transporte interrupção.

TransportGetDevCfg

Chamado para fornecer informações dispositivo para hospedar a depuração de transporte definindo como os dados é exibido.

KITL trata os dados como uma opacidade entidade e o envia para hospedar a depuração. TransportGetDevCfg é chamado apenas no handshake inicial com o hospedar depuração.

Usar um transporte Ethernet, as informações geralmente incluem IP endereço, endereço MAC e porta número.

TransportSetHostCfg

Chamado quando KITL recebe informações de transporte de hospedar a depuração com o transporte definindo como os dados é exibido.

KITL trata os dados como uma opacidade entidade e TransportSetHostCfg pode usar as informações para instalação de transporte.

TransportSetHostCfg é chamado apenas no handshake inicial com o hospedar depuração.

KITL é inicializado por chamado KitlInit geralmente durante a fase do processo de inicializar OEMInit. KitlInit deve ser chamado antes que quaisquer serviços depuração podem ser iniciados. Como parte de KitlInit processamento, o kernel chama a função OEMKitlInit ao executar inicialização hardware.

*KitlInit pode ser chamado qualquer tempo após o KernelStart função tiver sido chamado, geralmente como parte de OEMInitDebugSerial ou OEMInit processamento. *

KitlInit Também deve ser chamado na continuar da suspensão processamento em OEMPowerOff.

O parâmetro fStartKitl Informa o kernel se ela deve iniciar o segmento serviço interrupção (ist) no tempo de chamar. Se fStartKitl é FALSE, KITL comporta-se em um modo passivo, aguardando inativo até KITLRegisterClient chamado.

Essa técnica é usada em dispositivos testar que exigem o uso de Just - In - depuração tempo (JIT). Se fStartKitl é TRUE, KITL irá iniciar a comunicação com o área de trabalho e será bloco até que uma conexão é feita.

Além disso, quando fStartKitl é definido como TRUE os serviços usar como padrão PPSH, DBGMSG e KDBG são iniciados com base nas configurações de configuração a partir de área de trabalho.

Como KITL é usado para anexar todos completa-função depuração ferramentas, se ocorrer um erro durante inicialização KITL, use KITLOutputDebugString às mensagens depuração saída. KITLOutputDebugString Eventualmente usa um OEM fornecido função na OAL para depuração mensagens. O kernel, em seguida, chama rotina da OEM.

Depois que estiver KITL e execução, ele está em um estado de espera, aguardando dados a ser recebido pelo transporte e aguardando serviços lado do dispositivo para enviar dados. A seqüência chamar típica é mostrada no seguinte exemplo de código.

RecvData ()
{
   LockTransport ();
   Result = KITL. TransportRecv (pData, pcbShort);
   UnlockTransport ();
   If (Result) {
pData = KITL.TransportDecode (pData, pcbShort);
   }
}

Aa915135.eee79f0d-1a62-4e8a-85f9-f4a652aa9b22(pt-BR,WinEmbedded.60).gif

Quando o protocolo KITL tem dados enviar, ele passa uma reserva para o TransportEncode função que tenha espaço alocado para o cabeçalho e informações finais. TransportEncode Adiciona o cabeçalho e informações finais para o quadro e passa os dados encapsulados voltar para o kernel.

Em seguida, chama o kernel TransportSend Para enviar os dados para o área de trabalho lado, conforme o seguinte amostra de código.

SendData (...)
{
   if (KITL.TransportEncode (pData, cbShort)) {
   // pData has room for Hdr/Tlr allocated
      LockTransport ();
      KITL.TransportSend (pData, cbShort + KITL.FrmHdrSize + KITL.FrmTlrSize);
      UnlockTransport ();
      }
}

Se seu transporte KITL requer um timer, o protocolo KITL aceitará um timer resolução 1 segundo. O timer requer um chamar para KitlSetTimerCallback.

O timer não é um timer periódico e é chamado somente uma vez cada nSecs segundos. Se você precisar o timer seja chamado periodicamente, você pode chamar KitlSetTimerCallback novamente quando o timer expira. Você também pode solicitação mais de um timer.

Quando o timer não é necessário, chamar KitlStopTimerCallback para parar o timer.

See Also

Tasks

How to Develop an OEM Adaptation Layer
Adding KITL Initialization Code