Compartilhar via


Implementing the OEMInit Function

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

A função OEMInit é responsável por inicializar a placa-nível hardware.

Durante OEMInit, você deve:

  • Inicializar todos os periféricos hardware necessário para suporte a plataforma hardware.
  • Inicie o transporte KITL depuração.
  • Definir variáveis kernel que são exigido pelo kernel para habilitar ou alterar funcionalidade.

Para obter mais informações sobre inicialização KITL, consulte Adding KITL Initialization Code.

O OEMInit** função contém grande parte da funcionalidade presente na função OEMPlatformInit no carregador de inicializar. Para obter mais informações, consulte Implementing the OEMPlatformInit Function.**

A seguinte lista mostra as tarefas sugeridas inicialização para o OEMInit função.

Para implementar a função OEMInit

  1. Inicialize interrupção mapeamento tabelas. Essas são duas tabelas OAL particulares que mapa (n.); mapear (v.) entre interrupções físico — interrupção solicitações (IRQs) — e interrupções lógicas — valores SYSINTR. O seguinte mostra exemplo de código como para inicializar as tabelas mapeamento interrupção:

    for (i = 0; i <= IRQ_MAXIMUM; i++) {
        IRQToSysIntr[i] = SYSINTR_UNDEFINED;
    }
    
    for (i = 0; i < SYSINTR_MAXIMUM; i++) {
        SysIntrToIRQ[i] = IRQ_UNDEFINED;
    }
    

    Observação

    Tabelas de mapeamento interrupção, de exemplo, IRQToSysIntr e SysIntrToIRQ, são particulares para a OAL. Os OEMs podem dar essas tabelas mapeamento interrupção qualquer nome. Os OEMs podem usar as tabelas mapeamento interrupção para implementar as funções OEMTranslateIrq e OEMTranslateSysIntr.

  2. Criar todos os mapeamentos estáticos iniciais exigido pela OAL. De exemplo, talvez SYSINTR_OS_TICK mapa (n.); mapear (v.) para IRQ_OS_TICK, conforme o seguinte hardware exemplo de código:

    SysIntrToIRQ[SYSINTR_OS_TICK] = IRQ_OS_TICK;
    IRQToSysIntr[IRQ_OS_TICK] = SYSINTR_OS_TICK;
    

    Para obter mais informações sobre as interrupções Windows Embedded CE , consulte Interrupts e Defining an Interrupt Identifier.

  3. Configurar a timer de sistema, relógio em tempo real (RTC) ou qualquer outro dispositivo timekeeping por implementar a função InitClock e chamado-lo OEMInit. Para obter mais informações, consulte System Tick Timer Initialization.

  4. Configurar qualquer CPU - nível e placa - nível controladores interrupção.

  5. Fornece suporte depuração fotodiodo. Enquanto opcional, ele é útil quando depuração de kernel.

  6. Se for necessário para seu tipo CPU, chamar a função HookInterrupt para registrar um ou mais rotinas serviço interrupção (ISRs).

    O HookInterrupt função associa um ISR com um valor de linha (IRQ) solicitação interrupção. OEMInit deve registrar o ISR para marcação de sistema. Esta é a funcionalidade básica exigido pelo kernel para segmentos cronograma. Para obter mais informações, consulte System Tick Timer Implementation.

    Observação

    HookInterrupt não é exigido ou possíveis para plataformas hardware ARM-Based. Há apenas duas interrupções e elas são manipuladas por OEMInterruptHandler e OEMInterruptHandlerFIQ.

    O seguinte exemplo de código mostra como você pode registrar o intervalo-timer ISR, TimerISR, para interrupção hardware 5.

    void OEMInit(void)
    {
      ...
      HookInterrupt(5, TimerISR); // Hook timer interrupt
      ...
    }
    
  7. Máscara todas as fontes interrupção não configurados no CPU - nível e placa - nível. Isso impede interrupções acidentalmente sendo entregue durante a inicialização kernel.

  8. Deixe a 1 - milissegundo (ms) marcação sistema unmasked, isso que timekeeping e segmento agendamento função corretamente.

A seguinte lista mostra opcional funcionalidade que você pode implementar na OEMInit função:

  • Log funções
  • Funções do Registro
  • Seguro funções carregador
  • Salvar e restaurar co-processador registra
  • Contadores alto desempenho
  • Parar de sistema
  • Rastreamento de eventos
  • Detecção de tempo ocioso
  • Alarme notificação do usuário
  • Executar vários - em - regiões local (xip)
  • Quantum segmento padrão
  • Ativar depuração de E/S controle
  • Apagando a armazenar objeto
  • Suporte a funcionalidade utilização de CPU
  • Objeto armazenar frio inicializar
  • Suporte ARM FPU
  • Zeroing memória

See Also

Tasks

How to Develop an OEM Adaptation Layer