Monday 17 July 2017

Objcopy Ihex Binary Options


Navegação Avançada Navegação Gerando arquivos srec (formato Motorola S), binários, ihex (Intel Hex) Ao construir um projeto, o conjunto de ferramentas Code Red criará um arquivo de formato executável ARM (AXF) - que é realmente ELFDWARF. Este arquivo pode ser programado diretamente para o seu destino usando a funcionalidade de depuração Código Vermelho. Mas também pode ser convertido em uma variedade de formatos adequados para uso em outras ferramentas externas. O utilitário objcopy (braço-nenhum-eabi-objcopy) é usado para isso. Objcopy pode converter nos seguintes formatos: srec binário ihex tekhex Por exemplo, para converter example. axf em formato binário, use o seguinte comando: arm-none-eabi-objcopy - O binário example. axf example. bin Se você clicar Ctrl No projectname no lado direito da barra inferior do IDE, isso irá lançar um prompt de comando no diretório do projeto com os caminhos apropriados configurados. Tudo o que você precisa fazer antes de executar o comando objcopy é mudar para o diretório da configuração de compilação necessária. Você também pode selecionar o arquivo. axf no Project Explorer, clicar com o botão direito do mouse e selecionar Binário Utilities-gtCreate binário. Você pode alterar as opções usadas para criar um arquivo binário desta maneira na página de preferências Windows-gtPreferences, LPCXpressoRedSuiteUtilites. Convertendo automaticamente o arquivo durante uma compilação Objcopy pode ser usado para converter automaticamente um arquivo axf durante uma compilação. Para fazer isso, crie uma etapa de Post-build apropriada. Para obter mais detalhes, consulte Perguntas freqüentes. Processamento posterior do aplicativo vinculado. Checksums de imagem (famílias NXP LPC) As partes NXP usam uma palavra na tabela de vetores do processador para armazenar uma soma de verificação que é examinada pelo gerenciador de inicialização para identificar uma imagem válida. Para peças baseadas em ARM7ARM9 esta palavra de soma de verificação é armazenada no deslocamento 0x14, para peças baseadas em Cortex-M é armazenada no deslocamento 0x1C. Ao fazer o download de código através do depurador, essa palavra de soma de verificação será preenchida automaticamente à medida que a imagem é baixada. Ao criar um arquivo binário, você precisará garantir que você execute o utilitário checksum fornecido para fazer o processamento do próprio binário. Se você modificar o passo de pós-compilação fornecido para criar seu binário (conforme o FAQ Post-processando seu aplicativo vinculado, isso normalmente será feito automaticamente pela etapa pós-compilação: mas se você precisar criar um arquivo hexadecimal para uso Por FlashMagic, é preciso ter cuidado para que você não execute o utilitário checksum no próprio arquivo hexadecimal. O utilitário checksum funciona apenas em arquivos binários, e não em arquivos hexadecimais. Portanto, o utilitário checksum irá corromper seu arquivo hexadecimal se você usar o arquivo hexadecimal Como entrada. Note que o FlashMagic irá definir automaticamente a palavra de soma de verificação para você quando você usá-lo para programar um arquivo hexadecimal em um dispositivo LPC. Mas se você deseja configurar o checksum você mesmo, então a maneira recomendável de criar esse arquivo hexadecimal é como Segue: converter para binário executar o utilitário checkum converter o binário em hexadecimal, usando arm-none-eabi-objcopy - I binário - O ihex myfile. bin myfile. hex Gerando outros tipos de checksum Existem muitos tipos diferentes de checksums que os usuários podem Quer fazer uma imagem. Ferramenta para manipular arquivos de imagem e gerar uma variedade de somas de verificação é a ferramenta Open Source SRecord. OutputFormats (() DerekMorris 2012-01-15 20:36:13) GNU Binutils O GNU Binutils é uma coleção de ferramentas binárias. Os principais são: Mas eles também incluem: addr2line - Converte endereços em nomes de arquivos e números de linha. Ar - Um utilitário para criar, modificar e extrair arquivos. Cfilt - Filtrar para demarcar símbolos C codificados. Dlltool - Cria arquivos para criar e usar DLLs. Ouro - Um novo, mais rápido, vinculador ELF, ainda em teste beta. Gprof - Exibe informações de perfil. Nlmconv - Converte o código objeto em um NLM. Nm - Lista símbolos de arquivos de objeto. Objcopy - Copia e converte arquivos de objetos. Objdump - Exibe informações de arquivos de objetos. Ranlib - Gera um índice para o conteúdo de um arquivo. Readelf - Exibe informações de qualquer arquivo de objeto de formato ELF. Size - Lista os tamanhos de seção de um objeto ou arquivo de arquivo. Strings - Lista cadeias imprimíveis de arquivos. Tira - descarta símbolos. Windmc - Um compilador de mensagens compatível com o Windows. Windres - Um compilador para arquivos de recursos do Windows. A maioria desses programas usa BFD. A biblioteca Binary File Descriptor, para fazer manipulação de baixo nível. Muitos deles também usam a biblioteca opcodes para montar e desmontar as instruções da máquina. Os binutils foram portados para a maioria das principais variantes do Unix, bem como sistemas Wintel, e sua principal razão para a existência é dar ao sistema GNU (e GNULinux) a facilidade para compilar e vincular programas. Obter binutils O último lançamento do GNU binutils é 2.27. Os vários arquivos NEWS (binutils, gas e ld) têm detalhes sobre o que mudou nesta versão. Consulte a página SOFTWARE para obter informações sobre como obter versões do GNU binutils e outro software GNU. A versão atual pode ser baixada de ftp. gnu. orggnubinutils Se você planeja fazer trabalhos ativos em GNU binutils, você pode acessar a árvore de origem de desenvolvimento por git anônimo: Alternativamente, você pode usar a interface gitweb. Ou os snapshots de origem, disponíveis como arquivos bzipped tar via FTP anônimo de ftp: sourceware. orgpubbinutilssnapshots. Relatórios de bugs Listas de discussão Existem três listas de discussão de binutils: bug-binutilsgnu. org (archives) Para relatar bugs. Binutilssourceware. org (arquivos) Para discutir problemas binutils. Binutils-cvs (archives) Uma lista de discussão somente leitura contendo as notas de checkins para o repositório git binutils. (Esta lista tem um nome estranho por razões históricas.) Você pode usar este formulário para se inscrever nas listas de discussão binutilssourceware. org ou binutils-cvssourceware. org: Para se inscrever na lista de discussão bug-binutilsgnu. org, veja o bug-binutils Página de informações. Você pode procurar os arquivos de correio velhos das listas de discussão gas2 e bfd. Estas foram as listas de discussão para binutils até maio de 1999. Por favor, não envie correio para eles por mais tempo. Documentação Um guia para portar o binutils para um novo alvo foi contribuído. Envie as perguntas do amplificador do FSF amp GNU para o gnugnu. org. Existem também outras formas de entrar em contato com a FSF. Envie comentários sobre estas páginas da web para binutilssourceware. org. Envie outras perguntas para gnugnu. org. Copyright (C) 1998, 2000-2014 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, EUA A cópia e distribuição de todo este artigo é permitida em qualquer meio, desde que este aviso seja preservado. Atualizado: Última modificação: Seg 23 de setembro 08:45:03 BST 2014AVR Libc Reference Manual Um projeto simples Gerando arquivos Intel Hex Temos um binário do aplicativo, mas como o conseguimos no processador Os programadores mais (se não todos) Não aceitar um executável GNU como um arquivo de entrada, então precisamos fazer um pouco mais de processamento. O próximo passo é extrair partes do binário e salvar a informação em arquivos. hex. O utilitário GNU que faz isso é chamado avr-objcopy. O conteúdo da ROM pode ser extraído de nossos projetos binários e colocar no arquivo demo. hex usando o seguinte comando: avr-objcopy - j. text - j. data - O ihex demo. elf demo. hex O arquivo demo. hex resultante contém : 1000000020E0A0E6B0E001C01D92A336B207E1F700: 100010001F920F920FB60F9211242F938F939F93DD: 1000200080916200882301F1813081F48091600029: 100030009091610001979093610080936000009718: 1000400049F41092620080E090E004C0809160006A: 10005000909161009BBD8ABD9F918F912F910F90D0: 100060000FBE0F901F9018958091600090916100D5: 10007000019690936100809360008F3F23E0920788: 1000800049F781E0809362008FEF93E0E3CF83E84C: 100090008FBD8EB581608EBD1BBC1ABC82E087BB54: 1000A00084E089BF7894089583E88FBD8EB5816020: 1000B0008EBD1BBC1ABC82E087BB84E089BF7894EC: 1000C00085B7806885BF889585B78F7785BFF8CF5E: 0800D000F89400C0F894FFCF82: 00000001FF o - j opção indica que nós queremos as informações do. text e segmento. data extraído. Se especificarmos o segmento EEPROM, podemos gerar um arquivo. hex que pode ser usado para programar a EEPROM: avr-objcopy - j. eeprom --change-section-lma. eeprom0 - O ihex demo. elf demoeeprom. hex Existe Nenhum arquivo demoeeprom. hex escrito, pois esse arquivo ficaria vazio. Começando com a versão 2.17 do GNU binutils, o comando avr-objcopy usado para gerar os arquivos EEPROM vazios agora aborta por causa da seção de entrada vazia. eeprom, então esses arquivos vazios não são gerados. Ele também sinaliza um erro para o Makefile que será capturado lá e faz com que ele imprima uma mensagem sobre o arquivo vazio não sendo gerado. NOTICE: Este site será encerrado em um futuro próximo. O conteúdo do produto foi transferido para o nxp. O conteúdo do fórum e as FAQs foram movidas para community. nxp. Recomendamos que você crie uma conta de usuário no nxp para usar os novos fóruns da comunidade e acessar o conteúdo do microcontrolador NXP. Agradecemos muito as suas contribuições e esperamos ver você em nossa nova localização na web. Problema de conversão bin-gthex Qua, 2013-07-24 14:55 Eu estou tentando criar um arquivo. hex começando em um local diferente de zero na memória com a soma de verificação incluída, e eu estou correndo em um problema. Para executar checksum. exe eu preciso converter de. axf para. bin, executar checksum e, em seguida, converter para. hex. O problema é que o arquivo. hex resultante não começa onde o script de vinculador diz a ele, mas sim começa em 0x0000. Tudo funciona quando eu converter de. axf diretamente para. hex, por isso me leva a acreditar que o problema está na conversão. bin para. hex, ou possivelmente na conversão. axf para. bin. Sua informação semelhante está sendo perdida em algum lugar ao longo da linha. Pelo que eu li, as etapas de pós-compilação para adicionar na soma de verificação e acabar com um arquivo. hex são as seguintes: Ive retirado a etapa checksum e tentei. axf - gt. bin - gt. hex e recebo o mesmo Resultado, por isso o problema não é checksum. exe Qualquer idéias ou erros óbvios Target LPC1769 Usando RedSuite5 Sua avaliação: Nenhum Wed, 2013-07-24 20:38 Por definição, um arquivo binário não contém informações de endereço. Um arquivo binário contém apenas dados. Então, a conversão para o binário é perdida toda a informação do endereço. Eu acho que você pode usar objdump para basear novamente o arquivo hex com a opção --image-base. Thu, 2013-07-25 02:56 Uh. Para alterar o endereço inicial Eu apenas para as propriedades do projeto - gt CC Build - gt MCU configurações. Lá, eu mudo o endereço de localização para o Flash (e o tamanho obviamente, também) e pressione Aplicar (lt - isso é importante, ele não terá efeito se você não clicar em Aplicar). Em seguida, em CC Build - gt Settings - gt Build Steps Eu uso o seguinte comando nas etapas Post-build: arm-none-eabi-size arm-none-eabi-objcopy - O binário. bin checksum - p - d. bin arm - None-eabi-objcopy - O ihex. hex Isso tem funcionado até agora perfeitamente. Ou estou entendendo a pergunta errada Thu, 2013-07-25 09:38 TKoe escreveu: Uh. Para alterar o endereço inicial Eu apenas para as propriedades do projeto - gt CC Build - gt MCU configurações. Lá, eu mudo o endereço de localização para o Flash (e o tamanho obviamente, também) e pressione Aplicar (lt - isso é importante, ele não terá efeito se você não clicar em Aplicar). Em seguida, em CC Build - gt Settings - gt Build Steps Eu uso o seguinte comando nas etapas Post-build: arm-none-eabi-size arm-none-eabi-objcopy - O binário. bin checksum - p - d. bin arm - None-eabi-objcopy - O ihex. hex Isso tem funcionado até agora perfeitamente. Ou estou entendendo a pergunta errada Ao executar essas etapas, parece que você está criando um arquivo. bin com a soma de verificação e criando um arquivo. hex sem a soma de verificação. É a informação da soma de verificação realmente na lima de. hex eu tentei para fora e não estava lá. TheFallGuy escreveu: Por definição, um arquivo binário não contém informações de endereço. Um arquivo binário contém apenas dados. Assim, a conversão para binário todas as informações de endereço é perdida. Eu acho que você pode usar objdump para basear novamente o arquivo hex com a opção --image-base. Tudo bem, isso faz sentido. Eu ainda não entendo muito sobre o formato binário, mas se está sendo programado para flash, eu acho que thered ser alguma forma de inferir informações de endereço a partir dele. A opção --image-base parece promissora. Eu tentei: arm-none-eabi-objcopy --image-base 0x10000 - I binário - O ihex. bin. hex Não funcionou, mas parece uma possibilidade. Eu preciso ler um pouco mais. Tudo bem, entendi. A versão incluída do objcopy não usa a opção --image-base. Possui outras opções como --set-start, --change-start, --adjust-start. Aqueles não funcionaram, mas o que funcionou é - troca de endereços. Obrigado por me apontar na direção certa. Quem teria pensado em realmente olhar para as opções para a ferramenta que eu estava usando. Eu dou-lhe em inútil louvor internet. Qua, 2015-03-25 05:58 Im novo no ARM e LPCXpresso. Eu tenho nas mãos uma placa COMBLOCK 1500B com um LPC1759 ARM Cortex M3 MCU. Para a minha introdução a este ferramentas eu decido começar com um acadêmico piscar LED exemplo em P120 GPIO. (Eu anexo meu projeto) Para configuração eu uso: void led2init (void) Defina P120 para 00 - GPIO LPCPINCON-gtPINSEL3 amp (Set GPIO - P020 - para ser emitido LPCGPIO1-gtFIODIR (1 ltlt 20) Função para ativar o LED no void led2on (Void) LPCGPIO1-gtFIOSET (1 ltlt 20) Função para desligar o LED2 void led2off (void) LPCGPIO1-gtFIOCLR (1 ltlt 20) O projeto foi construído sem problemas. Então para flash o MCU eu uso um JTAG externo para esta placa E usar a ferramenta Flash Magic para fazer o upload do arquivo HEX. Eu tento suas sugestões as etapas de pós-build no projeto LPCXpresso - gt Properties - gt CC Build - gt configurações: Eu envio o código com o Flash Magic para o MCU sem problemas, mas eu não Veja a atividade no LED O que eu fiz errado Você poderia me ajudar

No comments:

Post a Comment