Pergunta

Eu tenho experiência em fazer uma programação de mesa e web por alguns anos. Eu gostaria de passar a fazer alguma programação do sistema de incorporação. Depois de perguntar ao questão inicial, Eu me pergunto qual hardware / software IDE devo começar ...

Ou ... não importa?

Em qual plataforma de desenvolvimento é a mais fácil de aprender e programar (considere a usabilidade da IDE)?

Qual é o mais fácil de depurar se algo der errado?

Meu objetivo é aprender sobre "Como as portas de IO funcionam, limitações/requisitos de memória, incl. É melhor aprender um que eu usarei mais tarde, ou o conceito de alto nível deve levar para a maioria dos microcontroladores?

Obrigado!

atualizar: como é este kit de dev para começar? Comente? sugestão?

Foi útil?

Solução

Pessoalmente, eu recomendo um ARM Cortex-M3 Microcontrolador baseado em base. A potência superior BRAÇO Os núcleos são extremamente populares, e essas versões de baixa potência podem muito bem decolar em um espaço que ainda está repleto de núcleos proprietários de 8/16 bits. Aqui está um artigo recente sobre o assunto: O ARM Cortex-M3 e a convergência do mercado da MCU.

o Arduino é muito popular para hobby. AtmelA biblioteca periférica é bastante comum entre os tipos de processadores. Então, suavizaria uma transição posterior de um Avr para um BRAÇO.

Não pretendo afirmar que um braço é melhor que um AVR ou qualquer outro núcleo. A escolha de um MCU para um produto comercial geralmente se resume a periféricos e preço, seguido pelas ferramentas de base de código e desenvolvimento existentes. Além disso, os microcontroladores são gerais muito mais simples que um PC para desktop. Portanto, realmente não é tão difícil se mover um para o outro depois que você pega o jeito.

Além disso, olhe para Freertos Se você estiver interessado no desenvolvimento do sistema operacional em tempo real (RTOs). É de código aberto e contém uma boa caminhada do que é um RTOS e como eles implementaram um. De fato, seu Exemplo de caminhada Até tem como alvo um AVR.


As ferramentas de desenvolvimento para sistemas incorporados podem ser muito caros. No entanto, muitas vezes existem alternativas de código aberto para núcleos mais abertos, como ARM e AVR. Por exemplo, veja o Winarm e Winavr projetos.

Essas cadeias de ferramentas são baseadas no GCC e, portanto, também estão disponíveis (e mais fáceis de usar o IMHO) em plataformas que não são de janelas. Se você está familiarizado com o uso do GCC, sabe que há uma abundância de "IDE" para se adequar ao seu gosto Emacs e vi (meu favorito) para Eclipse.

As ofertas comerciais podem economizar muitas dores de cabeça. No entanto, a escolha de um dependerá muito do seu hardware e orçamento alvo. Além disso, algum suporte de hardware de depuração USB direto, enquanto outros podem exigir um caro Jtag adaptador.


Outros links:


Placas Cortex-M3 de baixo custo:


Novo Arduino para utilizar um ARM Cortex-M3 em vez de um microcontrolador AVR.

Outras dicas

Dado que você já possui experiência de programação, considere obter um Arduino e limpar o firmware para fazer suas próprias coisas com o AVR Studio + Winavr. O Arduino oferece um bom ponto de partida para entender o lado eletrônico dele. A retirada do Arduino Bootloader lhe daria melhor acesso às entranhas da Atmel.

Para atingir os objetivos que você está definindo, eu também recomendaria explorar mais profundamente os computadores da área de trabalho através da programação x86. Você pode criar um kernel do sistema operacional X86, por exemplo.

O ARM é a arquitetura incorporada mais usada e abrange uma enorme variedade de dispositivos de vários fornecedores e uma ampla gama de custos. Dito isto, existem diferenças significativas entre os dispositivos ARM7, 9, 11 e córtex - especialmente o córtex. No entanto, se entrar em sistemas incorporados profissionalmente é o seu objetivo, a experiência do ARM o servirá bem.

As arquiteturas de 8 bits geralmente são mais fáceis de usar, mas geralmente muito limitadas tanto na capacidade da memória quanto nas velocidades do núcleo. Além disso, são simples de usar, as habilidades de 8 bits são relativamente fáceis de adquirir, por isso é uma habilidade menos atraente para um empregador em potencial, porque é fácil de cumprir internamente ou com funcionários menos experientes (e, portanto, mais baratos).

No entanto, se este é um hobby e não uma carreira, o baixo custo de peças, pranchas e ferramentas e facilidade de uso podem tornar 8 bits atraentes. Eu sugeriria o AVR simplesmente porque é suportado pela Chapa de ferramentas AVR-GCC gratuita. Alguns alvos de 8 bits são suportados pelo SDCC, outro compilador de código aberto C. Acredito que o Zilog disponibilize seu compilador Z8 gratuitamente, mas pode ser necessário pagar pelo hardware de depuração (embora isso seja relativamente barato). Muitos fornecedores de ferramentas comerciais fornecem versões de tamanho limitado de código de suas ferramentas para avaliação e uso não comercial, mas cuidado com a maioria dos depuradores exija hardware especializado que possa ser caro, embora em alguns casos você possa construí-lo se precisar apenas de funcionalidade básica e baixas velocidades.

O que quer que você faça, dê uma olhada www.embedded.com. Se você escolher o ARM, eu usei o WineMm com sucesso em projetos comerciais, embora não seja construído por conforto! Uma boa lista de recursos do braço está disponível aqui. Para AVR definitivamente confira www.avrfreaks.net

Eu recomendaria apenas peças de microchip PIC (pelo menos as de baixo custo) para projetos altamente sensíveis ao custo, onde o mix periférico é um bom ajuste ao aplicativo; não para aprender sistemas incorporados. Pic é mais uma marca do que uma arquitetura, os vários intervalos Pic12, 16, 18, 24 e Pic32 são muito diferentes um do outro, portanto, aprender um não é necessariamente em boa posição para usar outro - geralmente você precisa até Para comprar novas ferramentas! Dito isto, o DSPIC, baseado na arquitetura PIC24, pode ser uma boa opção se você quiser obter uma experiência simples do DSP ao mesmo tempo.

Em todos os casos, consulte a disponibilidade do compilador (especialmente se o suporte a C ++ for um requisito) e os requisitos de custo, e os requisitos de hardware, pois muitas vezes essas serão as partes mais caras do seu kit dev-kit, as placas e peças geralmente são a parte mais barata.

Texas Instruments lançou um kit de desenvolvimento muito interessante a um preço muito baixo: o Ferramenta de desenvolvimento EZ430-CRONOS Contém um MSP430 com exibição e vários sensores em um relógio esportivo, incluindo um programador de depuração USB e um ponto de acesso ao rádio USB por 50 $

Há também um wiki contendo Muitas e muitas informações.

eu já criou uma proposta de StackexChange Para o kit EZ430-CRONOS.

Faça o que fizer, certifique -se de obter um bom ambiente de desenvolvimento. Eu não sou fã das ferramentas de desenvolvimento do Microchip, apesar de gostar de seus microcontroladores (fui queimado muitas vezes pelo MPLAB + ICD, muito aborrecimento e disfunção). Os DSPs da série 2800 da TI são muito bons e têm um ambiente de desenvolvimento de C ++ baseado em eclipse, no qual você pode obter <US $ 100 (obtenha um dos kits do experimentador "ControlCard" como o para o para o para o 28335) - O link de comunicações do depurador é realmente sólido; O IDE é bom, embora eu ocasionalmente o coloque.

Em algum lugar, existem ICs e pranchas que são melhores; Não estou tão familiarizado com o cenário de microcontrolador incorporado, mas não tenho muita paciência com IDEs ruins com mais uma cadeia de ferramentas de software que tenho que descobrir como contornar todos os bugs.

Alguns recomendam o braço. Eu recomendo, não como uma primeira plataforma para aprender, mas como uma segunda plataforma. O ARM é um pouco complexo como uma plataforma para aprender os detalhes de baixo nível do incorporado, porque seus requisitos de código de inicialização e inicialização são mais complicados do que muitos outros micros. Mas o ARM é um grande player no mercado incorporado, tão vale a pena aprender. Então, eu o recomendo como uma segunda plataforma para aprender.

O Atmel AVR seria bom para aprender muitos itens essenciais incorporados, por três razões principais:

  1. A arquitetura é razoavelmente direta
  2. Bom kits de desenvolvimento disponíveis, com tutoriais
  3. Fórum de fãs com muitos recursos

Outros micros com kits de desenvolvimento também poderia ser bom - como MSP430- Embora eles não tenham um fórum de fãs. O uso de um kit de desenvolvimento é um bom caminho a percorrer, pois eles são voltados para se aprofundar rapidamente com o micro e promover o aprendizado eficaz. É provável que tenham tutoriais orientados para começar rapidamente.

Bem, suponho que os kits de desenvolvimento e seus tutoriais provavelmente encolhem coisas como carregadores de inicialização e código de inicialização, a favor de fazer com que seu código pisque o LED o mais rápido possível. Mas essa pode ser uma boa maneira de começar, e você pode explorar a cadeia de eventos de "Power-On" a "Code Running" no seu ritmo.

Não sou fã das fotos, pelo menos os pic16s, Devido à sua arquitetura. Não é muito amigável. E os bancos de memória são dolorosos.

Essa é uma pergunta difícil de responder, pois sua resposta ideal depende muito do que está interessado em aprender.

Se seu objetivo é apenas mergulhar um pouco mais fundo no funcionamento interno dos sistemas de computação, eu quase recomendaria que você renuncie à rota incorporada e pegue um livro sobre como escrever um módulo Linux Kernel. Escreva algo simples que lê um sensor de temperatura do SMBUS ou algo parecido.

Se você estiver olhando para o desenvolvimento de aplicativos incorporado de alto nível (telefones etc.), faça o download do Android SDK, você pode codificar em Java sob o Eclipse e até ter um bom emulador.

Se você está olhando para entrar no espaço do microcontrolador "real" e realmente dar uma olhada na programação do sistema de baixo nível, eu recomendaria que você inicie uma arquitetura muito simples, como um AVR ou PIC, algo sem um MMU.

Mergulhar no meio termo, por exemplo, um braço com MMU e algum tipo de sistema operacional, seja Linux ou de outra forma será um choque, pois sem fundo é a programação do sistema e a interface de hardware, acho que a transição será muito difícil Se você planeja fazer muito além de escrever aplicativos muito simples, a contagem de botões ou similar.

Isso importa, você precisa adquirir gradualmente a experiência começando com sistemas mais simples. Observe que, por mais simples, não quero dizer menos poderoso, quero dizer facilidade de uso, facilidade de configuração etc. Naquela veia, eu recomendaria o seguinte (não tenho interesse em nenhum dos produtos, acabei de os acabei de encontrar):

Comecei a usar um desses (MBED Developer Board). Os grandes pontos de venda para mim eram que eu poderia codificar em C ou C ++, conexão direta vis USB e um ambiente de desenvolvimento on-line liso (nenhuma instalação de ferramenta local necessária!).

http://mbed.org/

Cinco minutos afer caixa de abertura Eu tinha um programa de amostra (o 'Hello World' do mundo emedded) executando o seguinte:

#include "mbed.h"

DigitalOut myled(LED1);

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

É isso! Acima está o programa completo!

É baseado no ARM Cortex M3, rápido e com muita memória para projetos incorporados (100MHz, Flash 256K e 32K RAM). As ferramentas de desenvolvimento on -line têm uma biblioteca muito boa e muitos exemplos e um fórum muito ativo. Muita ajuda na conexão de dispositivos ao mbed etc

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

Depois de brincar inicialmente com ele em uma placa de ensaio básica, comprei uma placa base desses caras: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?phpsessid=lj20urpsh9isa0c8ddcfmmn207. Isso possui uma pilha de dispositivos de E/S (incluindo um Miniture OLED e um acelerômetro 3xis). No mesmo site, também comprei uma das placas de processador LCPexpresso, que são baratas, menos potência/memória do que o mbed, mas perfeito para trabalhos menores (ainda martela a porcaria dos processadores PIC/ATMEGA). A placa base suporta o LCPexpresso e o mbed. A compra da placa de processador LCPexpress também me deu um depurador JTAG anexado e um envolvimento off -line (Kit dev baseado em GCC/Eclipse da Code Red). Isso é muito mais complexo que o ambiente de desenvolvimento mbed on -line, mas é uma progressão lógica depois que você obteve a Experence com o MBED.

Com referência ao meu Point Noite original de que o controlador MBED é muito mais capaz do que o controlador LPCEXPRESSO, mas é muito mais simples de usar e aprender.

Eu uso o Microchips Pic, é o que eu comecei, principalmente com isso devido aos 123 projetos de microcontroladores para o livro do mal Genius. Fiz uma aula de microprocessadores na escola para minha graduação e aprendi um pouco sobre interrupções, tempo e coisas, isso ajudou muito com meus microcontroladores. Suponho que alguns dos outros programadores etc. podem ser melhores/mais fáceis, mas por US $ 36 para o pickit1, sou barato demais para comprar outro ... e, francamente, sem usá -los, não sei se eles são mais fáceis/melhores , Eu gosto do meu e recomendo todas as chances que tive, e demorei uma eternidade para realmente olhar para ele, mas pude programar outro chip fora do tabuleiro com o ICSP finalmente. Não sei o que outros programadores fazem isso, mas para mim essa é a interface mais legal de 5 fios e você está programado. Não consigo bater isso com um bastão ...

Eu só usei um desses.

A escala de frees é um chip fino. Eu usei chips hc-something há anos para pequenos projetos. A única advertência é que eu não tocaria o CodeWarrier incorporado com um poste de 10 pés. Você pode encontrar pequenos compiladores e montadores gratuitos (não me lembro do nome do último que usei) que fazem o trabalho muito bem. O CodeWarrior era grande e confuso e, independentemente do quanto eu sabia sobre a arquitetura do chip e a programação C sempre parecia apenas dificultar as coisas. Se você usou o CodeWarrior no Mac nos velhos tempos e acha que a CW é bem legal, bem, não é nada assim. CW incorporado parece vagamente semelhante, mas isso funciona muito diferente, e não muito bem.

Um compilador de linha de comando é geralmente multar. Profissionais que podem desembolsar os grandes dólares recebem ambientes de desenvolvimento caros, e tenho certeza que eles melhoram as coisas, mas sem isso ainda é muito melhor do que escrever código de montagem para um PC de desktop em 1990, e de alguma forma conseguimos fazer isso bem . :-)

Não, não importa se você deseja aprender a programar um dispositivo incorporado. Mas você precisa saber o fluxo de onde começar e por onde ir a seguir. Porque existem muitos microcontroladores por aí e você não sabe qual escolher. É melhor ter um mapa de estradas antes de começar.

Na minha opinião, você deve começar - qualquer placa AVR (placas ATMEGA 328P -Arduino ou placas AVR), então você deve ir para o micro -controlador de armar - primeiro faça o córtex tdmi depois o córtex do Arm Cortex m3. Depois disso, você pode escolher qualquer placa, dependendo do tipo de projeto que você está trabalhando e quais são seus requisitos.

Leia mais sobre incorporado on- doafco.com

Você pode considerar uma Roboard. Agora, este quadro pode não Seja o que você está procurando em termos de microcontrolador, mas tem a vantagem de poder executar Windows ou DOS e, portanto, você poderia Use as ferramentas de desenvolvimento Microsoft .NET ou mesmo C/C ++ para mexer com coisas como servos ou sensores ou até, que diabos, construa um robô! Na verdade, é meio divertido.

Há também o Axônio II, que possui o processador ATMEGA640.

De qualquer maneira, ambas as placas devem ajudá -lo a atingir seu objetivo.

Desculpe pelo foco da robótica, apenas algo em que estou interessado e pensei que isso também pode ajudá -lo.

Eu uso fotos, mas consideraria Arduino se eu escolhesse hoje. Mas de seus objetivos:

  • Como funcionam as portas de io
  • Limitações de memória/requisitos
  • Rotinas de serviço de interrupção

Gostaria de saber se você aposta é apenas para invadir o kernel Linux?

Micro bit bbc

https://en.wikipedia.org/wiki/micro_bit

Este pequeno quadro barato (~ 20 libras) foi criado pelas propriedades do ARM como dispositivo educacional e as unidades de 1M foram entregues gratuitamente para estudantes do Reino Unido.

Ele contém um córtex-m0 de braço, o menor núcleo de braço de todos.

Eu o recomendo como uma primeira placa de microcontrolador devido à sua ampla disponibilidade, baixo custo, simplicidade e ao fato de ele apresentar a arquitetura do ARM, que possui muitos outros quadros avançados também disponíveis para aplicações mais sérias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top