Ferramentas de desenvolvimento ARM Cortex-M3?

36

Estou planejando migrar para a arquitetura NXP Cortex M3 e estou um pouco perdido entre as ferramentas de desenvolvimento existentes.

Keil é caro e não sei se vale a pena. Quem já tentou algum compilador pode dar algum conselho?

Eu encontrei este compilador http://www.code-red-tech.com/red-suite-2.php parece bom e não é caro. Quem já experimentou ou sabe sobre isso pode me dar mais informações?

mba7
fonte
É o compilador fornecido com as placas LPCXpresso e usa o gcc com o IDE Eclipse. As ferramentas Rowley CrossWorks são muito melhores.
Leon Heller
2
De que maneira eles são melhores? Estou perguntando porque tenho a placa LPCXpresso e as ferramentas parecem funcionar bem, então estou me perguntando como as outras ferramentas são melhores.
John Burton
Não podemos fazer disso uma CW?
stevenvh
A maioria das possibilidades deve ser reconsiderada em 2012, pois o Microsoft Visual Studio 2012 oferece suporte ao ARM como destino de primeira classe.
Para pequenos projetos, a versão de teste do compilador Keil é gratuita.
Simon Richter

Respostas:

17

Ultimamente, tenho jogado com um STM32 (também Cortex M3) e usando a distribuição CodeSourcery do GCC, que funcionou muito bem.

Um colega que trabalhou com micros ARM profissionalmente no passado me disse que estava satisfeito com a cadeia de ferramentas IAR, embora eu não saiba qual é o custo ou como é o suporte ao Cortex.

Andrew
fonte
1
A IAR é uma empresa especializada em compiladores, até onde eu sei. Eu os uso no trabalho e eles têm algumas vantagens e algumas desvantagens. Acho que o suporte deles é excelente, porém, usamos o MSP430, mas eles parecem cobrir todos os processadores que procuro.
21410 Kortuk
16

Uso os compiladores cruzados CodeSourcery (Lite) para Linux para programar os microcontroladores TI Stellaris . Eles trabalham com qualquer Cortex-M3. Eles são totalmente gratuitos, com binários para Windows e Linux.

Aqui está uma receita curta (Debian / Ubuntu) para instalar:

Faça o download do conjunto de ferramentas (qualquer versão serve, mas eu uso este)

Instale o Java Runtime Environment (para o instalador danificado)

sudo apt-get install sun-java6-jre ia32-libs

Instalar

chmod 755 arm-2009q3-68-arm-none-eabi.bin
./arm-2009q3-68-arm-none-eabi.bin -i console

Adicione o diretório bin do compilador cruzado ao seu PATH

echo 'export PATH=$PATH:~/CodeSourcery/Sourcery_G++_Lite/bin/' >> ~/.bashrc 
. ~/.bashrc 

Para carregar o código e depurar, você precisará do OpenOCD e do gdb ou de uma das GUIs.

Você também precisará de um adaptador JTAG .

Toby Jaffey
fonte
Também uso as ferramentas CodeSourcery em uma de minhas aulas, com o kit de desenvolvimento Stellaris LM-3s6965. Nosso wiki (link para toolchain) está aqui: claymore.engineer.gvsu.edu/egr326/… (Consulte também as instruções de instalação do MacOS X abaixo.) O kit vem com uma demonstração por tempo limitado de suas ferramentas da GUI, mas o comando ferramentas de linha não são limitadas.
Kevin Vermeer
9

Comecei a usar uma delas (placa do desenvolvedor do MBED). Os grandes pontos de venda para mim foram o fato de eu poder codificar em C ou C ++, conexão direta com USB e um ambiente de desenvolvimento on-line sofisticado (nenhuma instalação de ferramenta local é necessária!).

http://mbed.org/

Cinco minutos depois da caixa de abertura, eu tinha um exemplo de programa intermitente (o 'olá mundo' do mundo incorporado) executando o seguinte:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

É isso aí! Acima está o programa completo!

Baseia-se no ARM Cortex M3, rápido e com bastante memória para projetos incorporados (100 mhz, 256k flash e 32k ram). As ferramentas de desenvolvimento online têm uma biblioteca muito boa e muitos exemplos, além de um fórum muito ativo. Muita ajuda para conectar dispositivos ao MBED, etc.

Embora eu tenha muita experiência com sistemas embarcados (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC, etc.), ainda achei um sistema refrescante e fácil de entender, apesar de ter uma capacidade séria.

Depois de brincar inicialmente com ele em uma tábua de pão básica, comprei uma placa de base desses caras: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Isso tem uma pilha de dispositivos de E / S (incluindo um OLED miniture e um acelerômetro de 3 eixos). No mesmo site, também comprei uma das placas de processador LCPExpresso que são baratas, menos energia / memória que o MBED, mas perfeitas para trabalhos menores (ainda prejudicam muito os processadores PIC / Atmega). A placa base suporta o LCPExpresso e o MBED. A compra da placa do processador LCPExpress também me trouxe um depurador JTAG conectado e um ambiente de desenvolvimento offline (kit de desenvolvimento baseado em código GCC / Eclipse do Code Red). Isso é muito mais complexo que o ambiente de desenvolvimento MBED on-line, mas é uma progressão lógica depois que você ganha experiência com o MBED.

Com referência ao meu ponto original noite, o controlador MBED é muito mais capaz do que o controlador LPCExpresso, MAS é muito mais simples de usar e aprender.

ttt
fonte
Há também excelente projeto de Adam Green gcc4mbed que lhe permite compilar off-line (à custa do tamanho do código ampliar): github.com/adamgreen/gcc4mbed
Kevin Chen
9

O código fonte lite é bom ou use o emdebian. ou crie o seu próprio, é bem fácil, a menos que você precise de uma biblioteca C ou gcc completa, ainda é possível, mas um pouco mais difícil. No início, você não precisará de um compilador compatível com o thumb2, o polegar fará o que você procura por uma cadeia de ferramentas que desejar.

O llvm é outro bom (use clang, não llvm-gcc !!), eu sei que o lado do braço está melhorando o tempo todo, a versão 27 produzia um código mais rápido que o atual gcc para um teste específico. Encontrei um bug no lado do polegar ao trabalhar no meu emulador de polegar (thumbulator.blogspot.com), que foi prontamente corrigido. A melhor parte do llvm é que, por padrão, é um compilador cruzado, sem necessidade de trabalho extra ou experiência de construção. Nos próximos anos, eu os vejo se aprofundando no gcc e passando o gcc para compilação / incorporação cruzada.

Eu tentei a ferramenta code-red uma vez com a placa lpcxpresso, o resultado final é que definitivamente nunca estou usando code-red e estou debatendo se também devo colocar na lista negra o lpc. ymmv. Se você tiver que usar uma ferramenta paga, eu usaria o keil apenas porque eles foram comprados pelo braço e parte do pacote é o compilador rvct. É claro que o código fonte também é uma casa paga, se você não atender às limitações de lite ou optar por obter suporte, sendo o gcc, ele tem o melhor suporte de todos os compiladores. Há pouco tempo, quando eu era capaz de experimentá-los, as ferramentas do braço explodiram o gcc na qualidade do código produzido. O gcc está subindo e descendo algumas versões do 3.x produzem código melhor que o 4.x, elas não parecem estar melhorando a cada lançamento, mas sim ou talvez codificaram o sourcery adicionado o suporte thumb2 há pouco tempo, o que as versões 3.x Eu não vou ter.

old_timer
fonte
If you have to use a pay for tool I would go with keil only because they were bought by arm- Você já experimentou os compiladores Keil? Não fiquei impressionado com as ferramentas Keil 8051 pelo menos. Eles se sentem como dinossauros em comparação com a concorrência baseada no GCC ou a suíte LLVM / Clang, IMHO.
Morten Jensen
8

Eu uso o software Rowley para desenvolvimento de ARM e MSP430:

http://www.rowley.co.uk

É excelente. Cortex-M3 é suportado.

Leon Heller
fonte
1
Estou tentando a versão de teste e acho que será minha escolha. é completo bem documentado e não muito caro (licença pessoal para 150 $)
mba7
O conjunto de ferramentas Rowley é ótimo e o suporte é excelente.
Radian
7

Eu uso o depurador Yagarto + Eclipse + J-link edu. (Gnu toolchain)

http://www.yagarto.de/

stbtra
fonte
5

Eu tive um sucesso muito bom usando cadeias de compilador / depuração IAR para o meu desenvolvimento ARM. Eles oferecem ferramentas de desenvolvimento relativamente estáveis, completas com um ambiente Embedded C ++ (o que parece um tanto raro). - Dependendo do tamanho da sua base de código, eles também oferecem ótimos "KickStart Kits" de hardware / software com versões limitadas em tamanho de código de suas ferramentas.

Nate
fonte
4

O IAR é excelente e, se você estiver executando pequenos projetos, há uma edição kickstart limitada em tamanho de código de 32K. As atualizações de tamanho são, no entanto, um pouco caras, acredito. Eles também vêm com vários bons exemplos de projetos, geralmente vários para cada família de processadores.

mikeselectricstuff
fonte
2
Sim, eles cortaram bastante a minha escola, ainda estava na casa dos milhares depois de um corte de 95% no preço.
Kortuk
4

Passei os últimos dias configurando totalmente a cadeia de ferramentas CodeSourcery GNU para o EFM32G micro no OS X. Valeu a pena. Comparado a muitos dos depuradores baseados em GUI que eu tentei (principalmente baseados em Eclipse); Makefiles, GCC e GDB são um sonho tornado realidade; Além disso, tudo funciona no meu terminal Linux ou Mac.

A única parte que é péssima é o adaptador J-Link embutido na placa. O programa GDBServer para Windows e Linux da J-Link é de código fechado. Pior ainda, a versão Linux está muito mais atrasada. Portanto, para que o GDB funcione, tenho que executar uma imagem do Windows VMWare cujo único objetivo é executar o GDBServer (porque o Linux está quebrado).

Ah, além de não funcionar corretamente, o servidor GDB baseado em Linux da J-Link se liga a 127.0.0.1 e ouve APENAS pacotes com isso como dest; portanto, é necessário mexer com o iptables e o encaminhamento para conectar-se a partir de uma máquina remota. Ridículo; Segger precisa agir juntos.

nemik
fonte
Concordo que o jlink é uma dor real no Linux, mas acho que você pode fazê-lo funcionar usando LD_LIBRARY_PATH. Além disso, você pode corrigir o problema do endereço de ligação, usando um encaminhamento SSH ou LD_PRELOAD ou similar para interromper as chamadas de rede e alterar o endereço de rede. Mas é patético quando as ferramentas caras são mais difíceis de trabalhar do que as baratas, como o ST-LINK, para as quais os drivers completamente abertos foram projetados de forma reversa.
22813 Chris Stratton
4

Eu uso o QtCreator e o GNU Tools ARM Embedded. Funciona bem.

Vantagens:

  • Totalmente gratuito (e de código aberto)
  • O QtCreator é um ótimo IDE C ++ moderno com conclusão de código funcional, hiperlinks de símbolos, refatoração, etc.
  • O QtCreator suporta depuração bare metal (sim - você pode colocar graficamente pontos de interrupção, código de etapa e inspecionar variáveis). (Requer link JTAG ou SWD para o seu MCU, mas isso não foi tão difícil quanto eu pensava.)
  • Não é baseado em Eclipse ou Eclipse.

Desvantagens:

  • O suporte da Baremetal é muito novo e eu tive alguns problemas com ele - superei eventualmente com a excelente ajuda do autor na lista de discussão do QtCreator.
  • Talvez um pouco mais difícil de configurar do que Keil ou código vermelho.

Quando tudo estiver configurado corretamente, posso clicar para criar um ponto de interrupção no meu código e clicar no botão "depurar". Ele irá compilar, piscar, executar e pausar no ponto de interrupção em cerca de 5 segundos (e, simultaneamente, irritar você se precisar voltar ao "IDE" do Arduino).

Estou trabalhando em um tutorial sobre como configurar isso com outro chip ARM - o nRF51822, baseado no Cortex-M0.

Timmmm
fonte
5
Provavelmente vale a pena adicionar um pouco mais de detalhes sobre o que você gosta, alguns bons recursos etc. para tornar a resposta mais útil.
precisa
Você pode oferecer um esboço?
Scott Seidman
2

Eu uso as ferramentas CooCox, é excelente, mas livre de usar, não qualquer tamanho de código limitado. http://www.coocox.org/

BobEmbed
fonte
1

Uso arm-eabi-gcc e o conjunto de ferramentas que o acompanha instalado através do script convocar arm toolchain . O script configura o ambiente para o trabalho bare metal no ARM. Seu código-fonte aberto e gratuito e tudo isso funcionaram de forma confiável para mim. Eu também usei o IAR para isso, e certamente é melhor, pois permite que você faça uma depuração muito mais amigável e faça as coisas da maneira IDE, mas, no geral, me sinto mais confortável com o gcc, por nenhuma outra razão, porque eu não precisa justificar a despesa para ninguém.

(Eu nunca descobri como usar o gdb para nada, mas nunca me acostumei a usar um depurador ou a disponibilizá-lo de qualquer maneira, por isso não tenho certeza se estou qualificado para julgar isso.)

Chintalagiri Shashank
fonte
1

Eu uso o Emprog ThunderBench . É excelente, provavelmente o melhor que já usei.

O que eu mais gosto é que é, ao mesmo tempo, um compilador de córtex C / C ++ ARM , um depurador e um IDE.

ITguy
fonte
1
Parece mais uma combinação do GCC + Eclipse.
22813 Chris Stratton