Forma mais barata e fácil de começar a programar em microcontroladores ARM [fechado]

18

Quero começar a usar processadores ARM, migrando de PICs que uso há muito tempo. Modelos de 8 bits estavam disponíveis por menos de US $ 1, programadores por menos de US $ 10, e eu fui mimado pela facilidade e baixo custo de começar. Mas, vendo que o poder deles é diminuído por alguns chips ARM pelo mesmo preço, e sendo alimentados com software de código fechado, eu quero fazer a troca.

Eu prefiro evitar qualquer placa de desenvolvimento e, ao invés disso, ir direto para ela com um pcb genérico barato (US $ 1), e em uma placa de ensaio usando quaisquer componentes externos essenciais para fazê-lo funcionar.

Quais são minhas opções para programar chips ARM dessa maneira? Existem programadores como o PICKit2 que usam USB para conectar-se a um PC, programando através de uma conexão serial simples (como ICSP) com o chip? Quanta diferença de configuração é necessária para diferentes fabricantes de ARM, versões de ARM e chips individuais? (ST, Atmel ...) Por exemplo, cada fabricante precisa de seus próprios compiladores, programadores, IDE etc? Ou existem ferramentas comuns para todos?

EDIT: Tudo bem, então, depois de mais pesquisas, acredito que tenha encontrado uma solução relativamente barata, uma placa stm32 dev pode ser atualizada com o firmware DAPLINK, mas não acredito que o firmware oficial do github funcione nativamente (tudo isso é especulação até que eu receba minha placa de desenvolvimento stm32 pelo correio). Mas descobri que a placa daplink_usb incluída no readbear mk20 está executando um chip stm32, eles lançaram o firmware, que precisa ter uma linha alterada para torná-lo compatível com o cristal de 8 mhz (detalhado no post do fórum link abaixo). Caso contrário, troque o cristal por um de 16 mhz. Eu atualizo uma vez que confirmei quando meu kit de desenvolvimento chegar.

GITHUB REPO

Bom recurso do fórum aqui .

Garfo Github Redbear

CL22
fonte
4
É bom perceber que US $ 5 dá a você um Raspberry Pi Zero, que é suportado por um GCC perfeitamente normal (e gratuito!). E se você superou o choque com a rapidez com que os microcontroladores ARM são mais rápidos, o RPi o surpreenderá novamente. O principal problema da IMO é que nenhum fabricante de ARM entende a mensagem sob o RPi. Você não ganhará muito mais com microcontroladores ARM, mas ainda há muito a ser feito com o fornecimento de módulos de CPU prontos para uso.
MSalters
4
Às vezes, é um exagero usar um módulo de CPU pronto para uso em um aplicativo incorporado.
Bence Kaulics
3
@MSalters, RPI é volumoso ... Eu só não preciso dos extras que ele vem. Preciso de coisas básicas em um espaço muito compacto para processamento rápido em tempo real. Além disso, o RPI consome MUITO mais energia do que seria aceitável.
CL22 20/07
3
Claro, mas a maioria das placas de desenvolvimento será assim. Mas uma das grandes vantagens do desenvolvimento de MCU é que o desenvolvimento de hardware e software pode ser isolado até certo ponto.
Ignacio Vazquez-Abrams
2
Considere adquirir uma placa de desenvolvimento de baixo custo que vem com uma ponte USB-SWD integrada. Isso lhe dará acesso aos recursos de depuração, bem como ao download do código. Você pode dividir o acesso do SWD a qualquer outro destino quando ele lhe convier.
Sean Houlihane

Respostas:

14

As linhas stm32F0 e stm32L0 possuem placas de descoberta que custam cerca de US $ 10, e o Keil fornecerá um IDE de função completa para esta linha a custo zero.

As instruções de instalação do Keil free pro MDK estão AQUI

Além disso, o ARM possui uma folha em branco sobre a migração para o Cortex M3 do PIC, que você pode achar útil

Scott Seidman
fonte
7
+1 Mas também é importante notar que a maioria (todas) das placas de descoberta possui um STLINK embutido que também pode ser usado para programar dispositivos independentes configurando jumpers.
Roger Rowland
@RogerRowland - ótimo ponto. Eu usei os programadores de bordo para minhas próprias placas antes. A descoberta é uma ótima linha, em geral. Eu gostaria que eles tivessem furos de montagem!
Scott Seidman
Você recomendaria Nucleo ou Discovery? Eles parecem ter o mesmo preço e ambos apresentam o ST-LINK.
David David
@ David, não usei o núcleo, mas posso dizer que as descobertas me serviram bem. Nesse ponto de preço, obtenha um de cada (embora eu vá com duas descobertas!)
Scott Seidman
Dave Jones fez recentemente um vídeo do EEVblog sobre uma placa de desenvolvimento para um MCU de baixa potência ARM32 . Talvez seja relevante.
Lorenzo Donati apoia Monica
7

A maneira mais fácil - desembolsar> US $ 10.000 para um compilador Keil Pro com todas as funções e comprar seu depurador JLINK (outro US $ 1 mil talvez - existem outros mais baratos com algumas limitações). O IAR é outra possibilidade dispendiosa (são fornecidos exemplos para o processador STM32F7 Cortex M7 que funciona na demonstração IAR de 30 dias)

Maneira mais barata- faça o download e instale uma cadeia de ferramentas GCC-ARM + Eclipse (gratuita) com plug-ins de depurador JLINK. Obtenha um clone do JLINK por US $ 20 ou mais, o que acho que funcionará bem - ainda não testado, para depuração.

Existem instruções detalhadas para este último na rede, no entanto, eles fazem certas suposições. Espere passar um dia ou mais trabalhando, especialmente no Windows. Não espere poder usar muitos dos exemplos fornecidos para outros IDEs sem algum trabalho. De maneira impressionante, a cadeia de ferramentas gratuita pode usar 'pacotes' ('experimental' agora).

Existem outros sistemas, como o Rowley Crossworks (que usa o gcc, acredito) que são menos dolorosos financeiramente. O Atmel Studio é outro, mas tive queixas amargas do meu desenvolvedor de firmware muito experiente sobre isso (só brinquei brevemente com ele mesmo).

Se suas necessidades de código forem inferiores a 32K, você poderá usar o mesmo sistema Keil gratuitamente (versão limitada de código), mas lembre-se de que o caminho da atualização é fácil, mas bastante caro. Por exemplo, ele não compila os exemplos simples de Ethernet para o SAME70. Tudo bem se você estiver substituindo PICs ou AVRs por ARMs low-end, mas não tão bom se você estiver indo para ARM, porque na verdade você precisa conversar com monitores LCD e executar protocolos de comunicação complexos (é possível incluir módulos pré-compilados sem afetar o Limite de 32K, não investiguei esse ângulo em particular).

Spehro Pefhany
fonte
7

Aqui está o que eu uso:

  • STM32F103 "placa de sistema mínima" (veja, por exemplo, aqui , , núcleo Cortex-M3 ), funciona com energia de 3.3V ou USB sem componentes externos, os clones custam cerca de US $ 3 cada. Isso se encaixa perfeitamente no seu pedido de "entrar direto nele com um pcb barato e genérico barato".
  • Clone do programador USB ST-Link V2 (semelhante a este ), começa em cerca de US $ 2 e também suporta a depuração no chip.
  • EmBitz (anteriormente Em :: Blocks) como IDE com gcc toolchain, US $ 0
  • CubeMX da STM para ajudar a começar novos projetos, US $ 0
JimmyB
fonte
5

O começo mais fácil provavelmente é uma das placas de clone de terceiros. Exemplo aleatório de ST . Isso requer um programador usando o protocolo 'SWD'. A ST fabrica marcas com a marca 'ST-LINK', não tenho certeza se você precisa usar as ST-LINK com dispositivos ST ou se é realmente genérico.

Alguma combinação de SWD e JTAG desempenha o papel de ICSP em sistemas ARM, fornecendo recursos de programação e depuração.

Em termos de software, geralmente é possível trabalhar com o GCC e o OpenOCD na maioria dos chips. Os detalhes são ligeiramente diferentes para cada dispositivo. Profissionais costumam usar a cadeia de ferramentas Keil, que é bastante cara.

Alguns dispositivos (por exemplo, da série Kinetis) possuem gerenciadores de inicialização USB: o dispositivo aparece como um dispositivo de armazenamento em massa, você faz o download de um arquivo BIN e pressiona um botão. Solução mais fácil possível, sem necessidade de programador. O Atmel AT91 possui um carregador de inicialização USB que funciona com um protocolo proprietário chamado SAM-BA.

pjc50
fonte
as placas st discovery e nucleo têm um stlink nelas e custam 30% menos que os dongles stlink autônomos. mais você recebe pelo menos um mcu para jogar. Obter um stlink ainda é bom e você pode usá-lo com o openocd para conectar via swd a outros chips st ou não st córtex-m.
old_timer
11
Interessante o chip Kenetisis que eu tentei, ainda não posso usar, porque ele não possui um gerenciador de inicialização que é apenas swd e não se conecta usando um stlink, precisa de um cmsis-dap supostamente. da mesma forma, o samd21 não carrega mais um gerenciador de inicialização, você pode adicionar um, mas ele está essencialmente no espaço flash do aplicativo e é bastante trivial para apagar acidentalmente. stm32s ainda tem um bootloader como nxp do, talvez isso vai longe demais ...
old_timer
3

Na frente do IDE, o Silicon Labs fornece o Simplicity Studio , baseado no Eclipse . Ele vem como padrão no GCC.

Existe um suporte interno para todos os kits iniciais que eles vendem, tornando a introdução relativamente simples.

A programação usa um driver Segger J-Link para os kits iniciais (grátis). Basta conectar o kit ao USB e pronto.

Atmel tem seu estúdio que é baseado no Visual Studio IDE e pode se conectar a qualquer um dos depuradores do Atmel. Isso também é fornecido com o GCC.

Ambos os fornecedores têm vários exemplos (muito numerosos) para acionar seus dispositivos.

Eu usei os dois e, embora a documentação não seja perfeita (nunca é), certamente foi suficiente para me fazer avançar de maneira relativamente simples.

Muitos dos kits ST (e outros) são habilitados para mbed .

Peter Smith
fonte
2

A Cypress fabrica placas de interrupção baseadas em PSOC-4200 (ARM Cortex M0) com um fator de forma DIP-40 que inclui um adaptador de programação baseado em USB em uma parte de interrupção. O preço do breakout board e do adaptador de programação conectado (destacável) é de US $ 3,99 da Digi-Key.

supercat
fonte
1

Eu recomendaria o CooCox - é a mesma combinação GCC + Eclipse, mas não há necessidade de configurar a cadeia de ferramentas manualmente, basta instalá-la e iniciar a codificação.

Flanker
fonte
Parece bom, acho que o Atmel não é suportado. O núcleo do ST M7 é suportado?
Spehro Pefhany
Parece que o Atmel não é suportado, existem algumas bibliotecas para a série STM32F7 nos componentes. Devo dizer que o futuro do CoIDE não está claro - o site está bagunçado, as atualizações são raras agora, mas ainda é uma ótima opção para começar com a programação ARM (especialmente com o STM32).
Flanker
1

Na minha opinião, TI, NXP (composto por NXP + Freescale) e ST são os principais atores no mundo do córtex M, especialmente o ST e o NXP oferecem ferramentas realmente competitivas para os novatos, outro parâmetro importante é a popularidade na comunidade de código aberto, que causa quantidade de tutoriais, bibliotecas, drivers de dispositivo, ferramentas etc.

então :

  1. compilador mbed online + uma placa mbed
  2. Uma placa de descoberta STM32 (como STM32F407discovery) + depurador integrado st-link + estrutura SPL ou HAL (STM CUBE) + IDE de licença gratuita.
  3. Uma placa de descoberta LPC + depurador LPC-link 2 + estrutura LPCOPEN + IDE de licença livre LPCXPRESSO.

Os números 2 e 3 são a melhor escolha para o nível superior do que o hobby. Lembre-se também de que, ao usar a licença gratuita de ferramentas profissionais como IAR, Keil ou mesmo LPCXPRESSO, você sente menos dor ao se mudar para a área profissional.

Mahmoud Hosseinipour
fonte
11
Bibliotecas MCU da ARM e toolchain são mbed- ver [ developer.mbed.org] [developer.mbed.org]
Sean Houlihane