Integrando outro binário

8

Estou construindo um binário para ARM usando GCC e Crossworks. Eu tenho uma imagem binária secundária que precisa ser carregada em outro IC durante a inicialização.

Eu gosto de integrar esse binário à minha cadeia de ferramentas, em outras palavras, faço essa parte binária da minha imagem e toda vez que construo esse binário é integrado ao arquivo binário final que será carregado na CPU. Qual é a melhor prática para isso?

Valeu

Ktc
fonte

Respostas:

3

Você pode usar objcopypara transformar a imagem binária em um arquivo de objeto. O arquivo de objeto conterá símbolos que podem ser acessados ​​a partir do código C. Em seguida, diga ao GCC para vincular o arquivo de objeto e você poderá acessar os símbolos no arquivo de objeto externpara carregar os dados no outro IC.

Aqui está um bom tutorial sobre como vincular um blob binário, incluindo como arquivar as opções que você precisa passar para o objcopyuso objdump.

E, claro, a objcopypágina de manual e a objdumppágina de manual .

Embedded.kyle
fonte
resposta de super .. ele me levou total de 5 minutos para fazer este trabalho ..
Ktc
Pergunta adicional. O arquivo obj está funcionando bem, no entanto, a cadeia de ferramentas o coloca na RAM, o que está se tornando um problema devido ao tamanho do arquivo. Como forçar a colocação desse objeto no Flash?
Ktc 6/07/12
resolvido .. basicamente, objcopy -I binário -O elf32-littlearm -B arm --rename-section .data = .rodata, aloca, carrega, somente leitura, dados, conteúdo fpga.bin fpga.o isso faz a coisa toda. O rodata e o vinculador são colocados corretamente no flash.
Ktc 6/07
objcopytem um grande número de opções. Provavelmente pode fazer o que você quiser. Isso requer muito olhar para essa página de manual. Obrigado por compartilhar sua solução, pois tenho certeza de que será uma pergunta comum para as pessoas que desejam fazer o que você está fazendo.
embedded.kyle