Como criar aplicativo para rodar em um ARM920?

Iniciado por Andre Cavalcante, 04 de Janeiro de 2007, 19:09

tópico anterior - próximo tópico

Andre Cavalcante

Olá a todos.

É isso aí, como está no assunto.

Tô precisando compilar um aplicativo para rodar em um ARM920. Em princípio o gcc é compatível, mas não tô conseguindo compilar nada nem com a opção -mcpu=arm920, nem com -march=armv4. Pesquisei no google e achei um toolchain para arm. Alguém já ouviu falar no arm-linux-gcc?

O que eu queria era simplesmente um compilador que gerasse o código para arm.

André Cavalcante
Manaus, AM.
--------------
André Cavalcante
Manaus, AM

polo

Fica dificil ajudar em qualquer coisa se voce nao dizer exatamente porque ele nao compila nada ? Alguma mensagem de erro do compilador ?

Se voce so quer saber que compilador gera codigo para arm, entao ja achou, gcc gera se tiver sido compilado com suporte pra arm
-- Guilherme H. Polo Goncalves <ggpolo@gmail.com>

Andre Cavalcante

Olá Polo, grato pela resposta
De fato, não disse qual era o erro, mas é porque não há efetivamente erro e sim falta de suporte do gcc para o arm. Se eu coloco as opções de -mcpu=arm920, como tá no man gcc, ele inclusive diz que a opção está deprecated e não compila:

`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
cardacc.c:1: error: bad value (arm920) for -mtune= switch


Depois dessa mensagem aparece mensagens de erro de compilação normais, apesar de os arquivos existirem... :


bi_processo.h:39:23: error: sop_adapt.h: Arquivo ou diretório inexistente
In file included from dger_sist.h:45,
                 from cardacc.h:34,
                 from GBT_funcoes_cit.c:2:


Creio que você acertou em cheio. O problema é que o gcc aqui não está compilado com suporte para arm. Tenho duas alternativas, ou compilo o gcc com suporte (como?) ou então compilo um toolchain completo (pre-processador+compilador+assemblador+ligador+gerador de hex+...).

De qualquer forma tô com esse problema.

André Cavalcante
Manaus, AM.
--------------
André Cavalcante
Manaus, AM

polo

o mais simples seria pegar os binarios de um arm toolchain para a versao do seu gcc, acredito que voce deve ter visitado o site www.gnuarm.com

Nesse site ai tem os binarios para varias versoes do gcc ja (http://www.gnuarm.com/files.html#binaries), se tiver algum problema com esse toolchain eh so ir ali em Support nesse mesmo site ;)
-- Guilherme H. Polo Goncalves <ggpolo@gmail.com>

Andre Cavalcante

#4
Polo,
Mais uma vez muito grato por sua resposta. Passei a semana ainda tentando baixar os binários no www.gnuarm.org e, pasme, a versão para windows é só baixar que tá funcioando. As versões para linux não.
O bash simplesmente me retorna dizendo que não é possível executar o arquivo binário.

Você saberia me dizer o porque disso?

Abaixo, um resumo do problema e da solução (pelo menos em teoria):

Citar

Para se gerar um aplicativo para rodar em uma plataforma embarcada (no meu caso um ARM920) você deve baixar um cross-compiler, isto é, um compilador cujo target seja o que você quer (ARM920), mas com o host no PC (em teoria o SO que você usa, Windows, Linux ou MacOS).

Para compilar simplesmente:

arm-elf-gcc -o saida main.c


Até aí tudo bem, mas não consigo fazer um simples hello world. Detalhes, no Windows eu consegui! O problema é que eu tenho que usar o linux, porque eu quero e porque os arquivos base são todos do linux, incluindo alguns headers do kernel, termios etc.


André Cavalcante
Manaus, AM.
--------------
André Cavalcante
Manaus, AM

Andre Cavalcante

Acredite se quiser, mas o erro era o mais trivial possível. Estava baixando a versão para 64bits em vez da de 32bits...
Agora tá redondo!

André Cavalcante
Manaus, AM.
--------------
André Cavalcante
Manaus, AM

polo

que bom ;) demorei para aparecer, tava resolvendo umas coisas por aqui

agora é so aproveitar o arm =)
-- Guilherme H. Polo Goncalves <ggpolo@gmail.com>

Andre Cavalcante

Olá, Polo

Grato pelas suas respostas. A propósito abri uma outra thread sobre um erro. Vê se você pode me ajudar, ok?

André
--------------
André Cavalcante
Manaus, AM