Nk.exe Boot Process
9/8/2008
Durante o processo inicializar, o sistema chama o kernel, Nk.exe é inicializado e então inicializado.
No processo inicializar kernel, a seguinte as chamadas são feitas na ordem mostrado:
Nk.exe
- Inicialização
- KernelStart ou KernelInitialize
- <Função inicialização kernel principal>
- OEMInitDebugSerial
- OEMInit
- KernelInit
- HeapInit
- InitMemoryPool
- ProcInit
- SchedInit
- FirstSchedule
- SystemStartupFunc
- IOCTL_HAL_POSTINIT
A inicialização
Esta é a primeira função que é chamado durante a inicialização kernel e ele inicializa o CPU para um estado conhecido. O Inicialização função executa a seguinte tarefas:
- Executa processador mínimo e inicialização hardware.
- Desabilita as interrupções, caches e unidade gerenciamento de memória (MMU).
- Após a Inicialização função inicializa o CPU, ele chama o KernelStart Ou KernelInitialize função.
O Inicialização função, em \Startup\Startup.* \Common\Src\Soc\ < identificador BSP > < Hardware Platform Name > %_WINCEROOT%\Platform\, geralmente é escrita linguagem assembly e é compartilhada com o carregador inicializar.
KernelStart ou KernelInitialize
A camada de adaptação OEM (OAL) configura quaisquer platform-ou configurações específicas da CPU que estão exigido para o kernel para acessar ROM e memória RAM. Para iniciar o sistema, ele e vai para KernelInitialize, para x plataformas hardware 86-based, OU KernelStart, para todas as outras plataformas hardware. Nesta apontar, o MMU e caches não devem ser habilitado. O KernelStart Ou KernelInitialize função executa a seguinte tarefas:
- Inicializar globals kernel por chamado KernelRelocate a partir de seção de cópia em ROM.
- (ARM e x 86 apenas) Inicializa a primeira-nível tabela página com base no conteúdo de OEMAddressTable.
- (ARM e x 86 apenas) Permite a MMU e os caches.
- Inicializa as pilhas para cada modo de operação.
- Localiza a entrada-point of Kernel.dll usando sumário.
- Vai para o ponto de entrada de Kernel.dll, a função inicialização kernel principal.
Para MIPS e SHx plataformas, o armazenar em cache e MMU estiver habilitado na ponto de entrada de Kernel.dll. Até que seja o MMU habilitado, os endereços simbólicos kernel são inválido e deve ser traduzido por meio de OEMAddressTable Para obter o físico correto endereços. A implementação das KernelStart e o KernelInitialize função estão sob %_WINCEROOT%\Private\Winceos\Coreos\Nk\Ldr\ <CPU>. Após KernelStart Ou KernelInitialize executou todas as suas tarefas, ele chama a função principal inicialização para o kernel que você está usando.
Função de inicialização do núcleo principal
Função de inicialização principal kernel é responsável por chamado as funções OEM-supplied inicialização. Ele também executa o seguinte tarefas:
- Configura o NKGLOBALS estrutura
Isso define todas as exportações kernel à camada de transporte independentes kernel (KITL) e a camada de adaptação OEM (OAL). - Inicializa o OEMGLOBALS estrutura.
Isso define todos o OAL exporta para kernel e KITL. - Se a imagem tiver interno KITL, função inicialização kernel carrega Kitl.dll e chama a ponto de entrada de Kitl.dll.
- Inicializa o porta serial depuração com OEMInitDebugSerial.
- Exibe a mensagem sign-on Windows Embedded CE a porta de depuração.
- Inicializa a plataforma hardware com OEMInit.
- Configura memória usando o KernelFindMemory Rotina.
- Vai para o KernelInit Rotina para completo de inicialização e vai para o primeiro segmento.
Se você tiver um kernel ARM, KernelStart Chamadas ARMInit como função de inicialização principal kernel.
OEMInitdebugSerial
OEMInitDebugSerial Inicializa o porta serial depuração no dispositivo de destino. Funções de depuração geralmente se comunicar com um serial dispositivo. Como o carregador inicializar implementa o mesmo codificar, uma implementação única pode ser compartilhada entre a OAL e o carregador inicializar. Esses são serial depuração funções que os OEMs precisa implementar:
A faixa NK é exibida após o OEMInitDebugSerial função foi concluída.
OEMInit
OEMInit é implementada por OEMs para inicializar hardware todas as interfaces de dispositivo de destino. Neste apontar no processo de inicializar kernel, as interrupções estão desativadas, e o kernel não conseguir exceções identificador. O kernel apenas serviço disponível para OEMInit é HookInterrupt. OEMInit Pode registrar interrupção serviço rotinas (ISRs) por chamado HookInterrupt. O seguinte hardware inicialização geralmente é exigido:
- Interrupções
- Timer do sistema
- Interface KITL
Depending on o hardware, opcional inicialização inclui o seguinte:
- Barramento interfaces.
Exemplo das implementações das OEMInit função estão em %_WINCEROOT%\Platform\ <Nome da plataforma de hardware> \Src\OAL\.
KernelInit
O KernelInit função encapsula a inicialização de kernel. Ele inicializa o seguinte partes de kernel a chamadas para inicialização diferentes funções:
- Pilha
- Pool de memória.
- Processo de kernel.
- Agendador.
Depois de chamar para esta função, o sistema está pronto para cronograma o primeiro segmento através de SystemStartupFunc. A implementação das KernelInit função está sob o Diretório particular.
HeapInit
HeapInit Inicializa o heap kernel.
A implementação das HeapInit função está sob o Diretório particular.
InitMemoryPool
InitMemoryPool Inicializa o pool memória kernel.
A implementação das InitMemoryPool função está sob o Diretório particular.
ProcInit
ProcInit Inicializa o processo kernel Windows Embedded CE.
A implementação das ProcInit função está sob o Diretório particular.
SchedInit
SchedInit Inicializa o Agendador de tarefas e cria o SystemStartupFunc segmento.
A implementação das SchedInit função está sob o Diretório particular.
FirstSchedule
FirstSchedule Inicia o Agendador de tarefas.
A implementação das FirstSchedule função está sob o Diretório particular.
SystemStartupFunc
SystemStartupFunc Executa IOCTL_HAL_POSTINIT. Implementação desta função pode ser manipulada por codificar OEM para o processo inicialização kernel completo. A implementação das SystemStartupFunc função está sob o Diretório particular.
See Also
Concepts
Other Resources
File System Boot Process
Bringing Up a Hardware Platform
Developing a Device Driver
Kernel Migration