Implementing the Ethernet Controller-Related Functions
9/8/2008
A biblioteca BLCOMMON e a biblioteca suporte Eboot.lib, que auxilia com serviços DHCP, UDP e TFTP, chamar Controlador Ethernet-relacionado funções. Essas funções são geralmente invólucros para as rotinas primitivo acessar expostos nas bibliotecas depuração Ethernet. Para obter mais informações, consulte Biblioteca de códigos BLCOMMON e Biblioteca de códigos Eboot.
A seguinte tabela mostra o controlador Ethernet-relacionado funções que você precisa implementar.
Função | Descrição |
---|---|
Chamado pelo BLCOMMON estrutura e dados leituras a partir de transporte durante o processo baixar. Essa função geralmente ativa ao redor e chamadas EbootEtherReadData Em Eboot.lib, que por sua vez chama OEMEthGetFrame. Esta função pode ser copiada de uma plataforma hardware existente. |
|
Lê dados diretamente de uma NIC através de pfnEDbgGetFrame ponteiro. Esta função pode ser copiada de uma plataforma hardware existente. |
|
Grava dados diretamente para o NIC através de pfnEDbgSendFrame ponteiro. Esta função pode ser copiada de uma plataforma hardware existente. |
|
Retorna o número de segundos que passaram desde que um determinado tempo fixo. O valor absoluto não é importante, mas relativo contagem deve ser por segundo precisas. |
Para implementar Controlador Ethernet-relacionado funções
Para editar o arquivo Main.c, adicionando a codificar necessário para implementar totalmente o controlador Ethernet-relacionado funções.
O seguinte exemplo de código mostra a implementação do controlador Ethernet-relacionado funções para a plataforma hardware usada nesse exemplo carregador inicializar.
BOOL OEMReadData(DWORD dwData, PUCHAR pData) { return(EbootEtherReadData(dwData, pData)); } BOOL OEMEthGetFrame(PUCHAR pData, PUSHORT pwLength) { return pfnEDbgGetFrame(pData, pwLength); } BOOL OEMEthSendFrame(PUCHAR pData, DWORD dwLength) { BYTE Retries = 0; while(Retries++ < 4) { if (!pfnEDbgSendFrame(pData, dwLength)) return(TRUE); EdbgOutputDebugString("INFO: OEMEthSendFrame: retrying send (%u)\r\n", Retries); } return(FALSE); } DWORD OEMEthGetSecs(void) { return( (*(volatile DWORD *)RTC_RDCR) & RTC_SECONDS_MASK ); }