Desenvolvendo em Linux para FRDM-KL25Z – Ferramentas

Publicado: 13 mar 2014 em Tech
Tags:, , , ,

english

Tópicos:

  1. Introdução
  2. Ferramentas
  3. Compilação
  4. Gravação
  5. Debug

De forma a compilar software para a placa FRDM-KL25Z, precisamos ser capazes de gerar código objeto para CPUs ARM. É altamente provável que seu sistema Gentoo Linux rode num computador não ARM, logo precisamos de ferramentas para cuidar da geração de manipulação de código objeto destinado a uma arquitetura de CPU diferente da do seu computador.

Instale crossdev, o gerador de ferramentas de construção cruzada de softwares do Gentoo:

localhost ~ # emerge sys-devel/crossdev

Use o crossdev para construir um compilador cruzado C, biblioteca libc e outras ferramentas de construção para CPUs ARM:

localhost ~ # crossdev -t arm-none-eabi
-----------------------------------------------------------
 * crossdev version:      20131107
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         arm-none-eabi
 * Stage:                 3 (C compiler & libc)
 * ABIs:                  default

 * binutils:              binutils-[latest]
 * gcc:                   gcc-[latest]
 * libc:                  newlib-[latest]



 * Log: /var/log/portage/cross-arm-none-eabi-binutils.log
 * Emerging cross-binutils ... [ ok ]
 * Log: /var/log/portage/cross-arm-none-eabi-gcc-stage1.log
 * Emerging cross-gcc-stage1 ... [ ok ]
 * Log: /var/log/portage/cross-arm-none-eabi-newlib.log
 * Emerging cross-newlib ... [ ok ]

Agora o seu sistema Gentoo contém um ótimo conjunto de ferramentas GNU de construção cruzada que pode gerar código para CPUs ARM. Todas a ferramentas são prefixadas com arm-none-eabi- indicando seus propósitos de serem ferramentas cruzadas para ARM no seu sistema não ARM:

user@localhost ~ $ cd /usr/bin
user@localhost /usr/bin $ ls arm-none-eabi-*
arm-none-eabi-addr2line  arm-none-eabi-gcc-4.8.2   arm-none-eabi-nm
arm-none-eabi-ar         arm-none-eabi-gcc-ar      arm-none-eabi-objcopy
arm-none-eabi-as         arm-none-eabi-gcc-nm      arm-none-eabi-objdump
arm-none-eabi-c++filt    arm-none-eabi-gcc-ranlib  arm-none-eabi-pkg-config
arm-none-eabi-cpp        arm-none-eabi-gcov        arm-none-eabi-ranlib
arm-none-eabi-cpp-4.8.2  arm-none-eabi-gcov-4.8.2  arm-none-eabi-readelf
arm-none-eabi-dwp        arm-none-eabi-gdb         arm-none-eabi-run
arm-none-eabi-elfedit    arm-none-eabi-gprof       arm-none-eabi-size
arm-none-eabi-emerge     arm-none-eabi-ld          arm-none-eabi-strings
arm-none-eabi-fix-root   arm-none-eabi-ld.bfd      arm-none-eabi-strip
arm-none-eabi-gcc        arm-none-eabi-ld.gold

Para uma verificação rápida da usabilidade do compilador cruzado, você pode criar um arquivo chamado hello.c contendo:

#include <stdio.h>

int main() {

        printf("Hello world\n");
        return 0;

}

Vamos ver se o compilador cruzado consegue gerar executáveis para ARM:

user@localhost ~ $ arm-none-eabi-gcc -o hello hello.c 
user@localhost ~ $ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped

Parece bom.

A seguir em Compilação usaremos as ferramentas de construção cruzada para compilar um aplicativo desenvolvido especificamente para a placa FRDM-KL25Z.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s