Implementing the OEMKitlInit Function
9/8/2008
A seguinte lista mostra as tarefas sugeridas para a função OEMKitlInit.
Para implementar a função OEMKitlInit
Localize o KITL NIC, geralmente por meio globals driver. O KITL NIC é normalmente o mesmo NIC usado pelo carregador de inicializar para operações baixar.
Atribua função ponteiros para as funções driver EDBG NIC corretas. Se o driver EDBG necessário não for fornecido, você precisará criar seus próprios. O seguinte exemplo de código mostra como você pode atribuir função ponteiros para um driver EDBG NIC.
pfnEDbgInit = NE2000Init; pfnEDbgInitDMA = NULL; pfnEDbgEnableInts = NE2000EnableInts; pfnEDbgDisableInts = NE2000DisableInts; pfnEDbgGetPendingInts = NE2000GetPendingInts; pfnEDbgGetFrame = NE2000GetFrame; pfnEDbgSendFrame = NE2000SendFrame; pfnEDbgReadEEPROM = NE2000ReadEEPROM; pfnEDbgWriteEEPROM = NE2000WriteEEPROM; pfnEDbgSetOptions = NE2000SetOptions; pfnCurrentPacketFilter= Ne2000CurrentPacketFilter; pfnMulticastList = NE2000MulticastList;
Incluir a biblioteca de %_WINCEROOT%\Platform\ <Nome da plataforma de hardware≫ \Src\Kernel\Kernkitl fontes arquivo para satisfazer o vinculador se qualquer suporte driver KITL é exigido.
Inicializar os buffers acesso direto à memória (DMA) para o NIC, se exigido e, em seguida, inicializar o NIC, chamado de pfnEdbgInitDMABuffer Ou pfnEdbgInit, ou ambas as, ponteiros função. A função inicialização NIC leva um endereço NIC e retorna um valor Mac para o NIC, que deve ser armazenados em globals o driver.
Criar um exclusivo nome dispositivo, que será usado como um identificador pelo criador da plataforma.
Observação
O nome dispositivo deve ser o mesmo que aquele usado pelo carregador de inicializar.
Obtenha um endereço IP um servidor DHCP usando o EbootGetDHCPAddr função ou de um endereço estático IP. Se você estiver obtendo o endereço IP de um servidor DHCP, inclua Eboot.lib no arquivo de fontes Kernel\Kernkitl.
Inicializar o codificar transporte KITL Ethernet por chamado de KitlEtherInit função. Se a chamar for bem-sucedido, preencher fora a estrutura KITLTRANSPORT.
Implementar as seguinte funções OEM Ethernet:
- OEMEthCurrentPacketFilter
- OEMEthDisableInts
- OEMEthEnableInts
- OEMEthSetFilter
- OEMEthMulticastList
Durante a chamar para OEMKitlInit, você fornecer o seguinte informações que o kernel precisarão à funcionalidade de alto nível KITL suporte:
- Concluir o KITLTRANSPORT estrutura que descreve quais serviços para iniciar em inicializar
- Determinar se ele é um inicializar frio
- Forneça o nome do dispositivo
- Fornecer um número interrupção para interrupção com dispositivos
- Fornecer tamanho de janela para serviços usar como padrão
- Fornecer o tamanho do cabeçalho de quadro específicos para o transporte
- Fornecer o tamanho de informações finais de quadro específicas para o transporte
- Fornecer o tamanho do físico reserva para serviços usar como padrão
- Fornecer função ponteiros para as funções Transport-specific descritos acima
Quando o kernel retorna do OEMInit, ele tenta inicializar a interrupção KITL por chamado o membro TransportEnableInt das KITLTRANSPORT estrutura. TransportEnableInt também é chamado quando um dispositivo sair de um estado suspenso.
See Also
Tasks
How to Develop an OEM Adaptation Layer
Adding KITL Initialization Code