Compartilhar via


Binary Image Builder File

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Um binário arquivo construtor (.bib) imagem define quais módulos e os arquivos estão incluídos em um executar-imagem tempo.

Durante o processo de criação, Makeimg.exe usa vários arquivos .bib para gerar CE.bib, um arquivo de inicialização mescladas. Em seguida, Romimage.exe usa CE.bib para determinar qual binários e arquivos serão incluídos na executar-imagem tempo. Ele também usa CE.bib para determinar como carregar módulos e os arquivos para a memória da executar-imagem tempo, que é descarregado para dispositivo destino.

Seções de um arquivo bib

A seguinte tabela mostra a principal seções que um arquivo .bib pode conter.

Seção Descrição

Memória

Define o físico memória que está disponível, incluindo endereço inicial, tamanho e tipo de memória.

Esta seção é o arquivo Config.bib, localizado no Diretório de \Files %_PLATFORMROOT%\ < MYBSP >.

CONFIG

Define as opções configuração para Romimage.exe para personalizar sua saída. Por padrão, esta seção é o arquivo Config.bib. No entanto, você não é exigido para incluir uma seção config em um arquivo .bib.

Modules

Especifica os objeto Módulos para ser carregado em áreas da memória por Romimage.exe. Módulos de objeto que não são compactados na seção de módulo irão executar no local.

Arquivos

Reserva uma seção de memória para arquivos .lib.

Tipos de arquivos bib

Há vários tipos diferentes de arquivos .bib, descritos da seguinte maneira.

Aa908680.collapse(pt-BR,WinEmbedded.60).gif Platform.bib

O arquivo Platform.bib define:

  • O hardware-dependente módulos e os arquivos, como arquivos, para o dispositivo destino driver
  • Os módulos e arquivo entradas para a executar-imagem tempo, such as de forma de onda áudio (.wav) arquivos .exe e

Platform.bib está localizado no Diretório \Files %_PLATFORMROOT%\ < MYBSP >.

Aa908680.collapse(pt-BR,WinEmbedded.60).gif Project.bib

O arquivo Project.bib define os módulos para incluir a executar-imagem tempo que sejam Project-specific. Quando você cria seus próprios módulos e os aplicativos, você deve adicioná-los para a seção Modules em Project.bib.

Project.bib está localizado na Diretório %_WINCEROOT%\PUBLIC\CEBASE\OAK\FILES.

Aa908680.collapse(pt-BR,WinEmbedded.60).gif Common.bib

O arquivo Common.bib define o comum módulos sistema núcleo para incluir na executar e exibir drivers-imagem tempo.

Common.bib está localizado na Diretório %_WINCEROOT%\PUBLIC\COMMON\OAK\FILES.

Aa908680.collapse(pt-BR,WinEmbedded.60).gif Config.bib

O arquivo Config.bib define informações configuração para ROM e memória RAM. Ele também contém as seções da memória e Config para a executar-imagem tempo.

A tabela memória para a executar - imagem tempo especificando o nome, endereço, tamanho e tipo das regiões da memória que estão dentro de executar - define a seção da memória de Config.bib imagem tempo.

Config.bib está localizado no Diretório \Files %_PLATFORMROOT%\ < MYBSP >.

Modificações do arquivo bib

Quando você atualização em Platform.bib ou Project.bib para incluir um arquivo, especificar os seguinte itens:

  • Nome: O nome do arquivo de origem para adicionar à executar-imagem tempo

  • Caminho: A localidade do arquivo após o processo de criação copiá-lo para o simple versão Diretório

  • Memória: A região listada na seção de memória que é definida como tipo RAMIMAGE

    Observação

    Cada executar-tempo imagem tem somente uma região RAMIMAGE.

  • Tipo: Os atributos arquivo definido para o arquivo na executar-imagem tempo

Na seção de memória do arquivo .bib, use o Endereço e Tamanho Parâmetros para definir a seção de memória dedicada para memória RAM e ROM. também O Endereço parâmetro especifica o endereço onde a seção memória RAM é iniciado. Juntos, o Endereço e o Tamanho Parâmetros indicam o endereço onde termina a seção memória RAM.

Na seção da memória, a executar-imagem tempo deve ser definido como RAMIMAGE tipo usando o Tipo parâmetro. A região memória memória RAM deve ser definida como tipo memória RAM.

Para obter mais informações, consulte MEMORY Section.

Para configurar os arquivos .bib, você deve especificar um formato de dados para a executar-imagem tempo. Depois você decidir sobre um formato de dados para seu executar-imagem tempo, definir esse formato na seção Config do arquivo Config.bib por configuração valores de ROMSIZE, ROMSTARTe ROMWIDTH. Para obter mais informações sobre formatos dados, consulte Run-Time Image Files e CONFIG Section.

A seguinte ilustração mostra as relações entre o valor ROMSTART, o valor ROMSIZE e a memória tabela parâmetros para a executar-tempo imagem memória seções.

Memory regions of run-time image

Romimage.exe gera um binário arquivo imagem (.bin). Os arquivos .bin contêm informações sobre a executar-imagem tempo que o carregador inicializar usa para iniciar a executar-imagem tempo. Os arquivos .bin são organizados em unidades lógicas, que são conhecidas como registros e existem somente na seção de RAMIMAGE de memória.

Exemplo de entrada bib nº 1

O seguinte exemplo de código mostra uma entrada em Project.bib.

MODULES
; Name        Path                           Memory Type
; --------------  --------------------------------------
IF IMGINCLUDEAPPS
  myapp.exe   $(_FLATRELEASEDIR)\myapp1.exe  NK   SH
ENDIF

Neste exemplo, se você definir um variável de ambiente User-defined, IMGINCLUDEAPPS, antes de executar Makeimg.exe, Makeimg.exe processa esta entrada, incluindo o arquivo de entrada MyApp1.exe como arquivo de saída Myapp.exe. Em seguida, ele carrega o arquivo saída Myapp.exe no nomeado região da memória NK como um arquivo. Os sinalizadores S e H são definidos para indicar que Myapp.exe é um arquivo sistema e um arquivo oculto.

Exemplo de entrada bib nº 2

O seguinte exemplo de código mostra uma entrada em Project.bib.

MODULES
; Name        Path                           Memory Type
; --------------  --------------------------------------
IF IMGNODEBUGGER !
   myproj.exe  $(_FLATRELEASEDIR)\myproj.exe  NK  S
ENDIF

Neste exemplo, se você não definir IMGNODEBUGGER, Makeimg.exe processa esta entrada, incluindo o arquivo Myproj.exe e carregá-lo para a região da memória NK. O "S" sinalizador é definido para indicar que myproj.exe é um arquivo sistema.

Para obter mais informações sobre a sintaxe das instruções If nos exemplos anteriores, consulte Preprocessing Using Romimage Conditionals.

O restante deste tópico descreve os sinalizadores que você pode usar nas seções Modules e arquivos.

Arquivo BIB "K" Sinalizador

Os arquivos executáveis que estão listados no FILES Section – ou aquelas que chegam executar até o dispositivo alguma outra maneira, such as ao carregar a partir de Diretório versão ou um cartão armazenamento – são corrigidos até - tempo quando eles são carregados. Portanto, há um impacto no desempenho quando esses módulos são carregados.

Os arquivos executáveis que estão listados no MODULES Section de ROM são corrigidos até em makeimg-tempo. Romimage.exe escolhe quais virtual endereços serão todos essas DLLs e EXEs executar e define-las até sempre executar a partir daí.

O sinalizador “ KB ” indica se o DLL irá executar no espaço kernel, que está acima 0x80000000, ou espaço usuário, que está abaixo 0x80000000. Se você tentar carregar um kernel DLL em modo usuário ou um modo usuário DLL para o kernel, você não poderá carregar o DLL e receberá uma mensagem depuração que se assemelha a seguinte:

RETAILMSG (1, (L"!!!ERROR! Trying to load DLL '%s' fixed-up to user address into Kernel.\r\n", lpszFileName));
RETAILMSG (1, (L"!!!ERROR! MUST SPECIFY 'K' FLAG BIB FILE.\r\n"));
RETAILMSG (1, (L"!!!ERROR! Trying to load DLL '%s' fixed-up to kernel address into user app.\r\n", lpszFileName));
RETAILMSG (1, (L"!!!ERROR! CANNOT SPECIFY 'K' FLAG BIB FILE.\r\n")); 

Você pode correção esse erro de diversas maneiras:

  1. Na entrada arquivo .bib, adicionar ou remover o “ KB ” sinalizador para que seu DLL carrega apenas em uma localidade. Se você deve carregá-lo no modo kernel, adicionar o "K" sinalizador. Se você deve carregá-lo em modo de usuário, remover o "K" sinalizador.
  2. Se você deve executar o DLL no modo usuário e modo kernel simultaneamente, pôr duas cópias do DLL em ROM. a qualquer momento Um com o “ KB ” e outra sem o "K". De exemplo, adicionar dois k.mydll.dll com um “ KB ” e mydll.dll sem uma "K". A modificação de nomeação significa que os dois codificar modo kernel - modo e usuário - pode link contra “ mydll.dll ” e atingir o resultado correto. Esteja ciente que dividir as DLLs dessa maneira custos espaço ROM e memória RAM. Mesmo se o mesmo codificar foi organizado para executar Two times de ROM, a executar-codificar tempo ainda levaria duplo tantos memória RAM porque ele seria precisa ser corrigido até em dois locais.
  3. Se por algum motivo você tiver um DLL que tem que ser le AB para carregar em ambos os locais mas nunca simultaneamente, você pode pôr-lo na seção Files ou carregá-lo do seu Diretório versão. Não recomendamos isso porque você irá receber falhas carregar se você tentar carregar o DLL no modo kernel tanto usuário no mesmo tempo. O mesmo arquivo pode apenas ser carregado uma localidade em um tempo.

Aa908680.collapse(pt-BR,WinEmbedded.60).gif Práticas recomendadas para adicionar ou remover o sinalizador “K”

  • Quando você adicionar um DLL para o kernel ou carregá-lo no modo usuário, tanto kernel determinar se ele realmente tem que poder carregar no modo kernel tanto usuário. Investigar movendo-lo e qualquer coisa que dependa dele, em modo usuário. De exemplo, mover para services.exe ou udevice.exe. Ou, investigue dividindo o DLL para separar partes modo kernel - modo e usuário -.
  • Ao remover o sinalizador “ KB ”, verificar se tudo no kernel tenta nunca carregar o DLL, porque você pode interromper alguma funcionalidade movendo-lo. Da mesma forma, quando você adicionar o "K" sinalizador para um DLL, certifique-se de que nenhum usuário-modo codificar carrega a DLL.

Elementos interface (interface do usuário) do usuário não podem ser carregados para o kernel. O kernel oferece um mecanismo para redirecionar um interface do usuário para um usuário-processo modo.

Para obter mais informações, consulte Displaying a User Interface from a Kernel-Mode Device Driver.

Outros sinalizadores arquivo bib

Aa908680.collapse(pt-BR,WinEmbedded.60).gif "P" Sinalizador

Se você pôr uma DLL para a seção Modules e desejá-lo para carregar no modo usuário tanto modo kernel, você pode usar o "P" sinalizador. De exemplo, a seguinte linha de codificar:

    Sample.dll             $(_FLATRELEASEDIR)\Sample.dll   NK  SHQ

é equivalente para o seguinte duas linhas de código:

    Sample.dll             $(_FLATRELEASEDIR)\Sample.dll   NK  SH
    k.Sample.dll           $(_FLATRELEASEDIR)\Sample.dll   NK  SHK

Aa908680.collapse(pt-BR,WinEmbedded.60).gif "Z" Sinalizador

Há também um sinalizador “ Z ” que corresponde ao sinalizador “ KB ” a partir de versões anteriores do Windows Embedded CE. “ Z ” não pode ser combinado com “ C ”, o sinalizador compactação, mas existem há restrições semelhantes “ KB ” ou “ Q ”.

See Also

Concepts

Run-Time Image Configuration Files
OS Design Configuration Files
Run-Time Image Files
Make Binary Image Tool

Other Resources

How to Configure and Build a Run-Time Image for a CEPC
How to Decrease Run-Time Image Size on a CEPC
How to Create a Device Driver