Enabling KITL
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 |
---|---|
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). |
|
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. |
|
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. |
|
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. |
|
Chamada para habilitar ou desativar transporte interrupção. |
|
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. |
|
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);
}
}
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