Página 1 de 4

Iniciante

MensagemEnviado: 09 Jun 2010 17:41
por rcakto
ola a todo mundo,

estou querendo aprender a programar ARMs mas não estou encontrando nenhum tutorial alguem poderia me dizer por onde comecar??

Obs.: So tenho o basico do basico do basico.... do basico de PICs (assembler e leitura de botoes e acender leds)....

obrigado por tudo!!

MensagemEnviado: 09 Jun 2010 19:11
por proex
ARM com Assembler.......ja vai começar errado :lol:


.

Re: Iniciante

MensagemEnviado: 09 Jun 2010 20:27
por Rodrigo_P_A
rcakto escreveu:ola a todo mundo,

estou querendo aprender a programar ARMs mas não estou encontrando nenhum tutorial alguem poderia me dizer por onde comecar??

Obs.: So tenho o basico do basico do basico.... do basico de PICs (assembler e leitura de botoes e acender leds)....

obrigado por tudo!!


Dá uma olhada no meu blog:

IDEs: http://arm-m.blogspot.com/search/label/IDE(s)

JTAG: http://arm-m.blogspot.com/search/label/JTAG

eu utilizo ARMs NXP mas existem vários outros fabricantes.

Tem que começar pelo começo hehe, ARM é ARM mas tem as versões, ARM7, ARM 9, etc...

Dá uma lida nestes livros, em inglês:

Livro sobre LPC2148 da NXP:
http://arm-m.blogspot.com/2009/12/livro ... -o_30.html

Livro sobre LPC2368 da NXP:
http://arm-m.blogspot.com/2009/12/livro ... bre-o.html

MensagemEnviado: 09 Jun 2010 20:52
por rcakto
proex,

Cara leva a mal não, mas se nao for para ajudar ou fazer uma critica construtiva, por favor não fale nada....
outro coisa, programação em assembler tem 2 fatores positivos, codigo pequeno e resultados mais rapidos que as outras linguagens mais complexas ( não me lembro o nome certo mas vai assim mesmo.. estou falando de "C", JAVA, BASIC e afins), por outro lado, serao anos de programação para se montar um pc usando somente assemble....

Rodrigo_P_A,

Muito obrigado por tudo, sinceramente não faço ideia por onde comecar.. so sei que muitos não gostam de trabalhar com os ARM's da philips.... vai la saber o pq.... vou dar uma geral no seu blog e nos livros para download... qualquer coisa eu volto aqui para perguntar....



Fui...

MensagemEnviado: 09 Jun 2010 20:54
por tcpipchip
Pegue um livro que fale da arquitetura do ARM, depois pegue um livro que ensine a programaçao assembly. Faça uns exemplos bem básicos e ai vai para o "C".

TCPIPCHIP

MensagemEnviado: 09 Jun 2010 21:07
por proex
Cara, apesar do tom, foi critica construtiva sim. Vc que entendeu errado.

Então vai lá, se afunde no assembler e tire suas próprias conclusoes.

Não sei sua profissão mas se for depender desse aprendizado para desenvolver produtos, quando terminar o projeto ele já estará obsoleto.

................entende??????

Feliz páscoa!

.

MensagemEnviado: 09 Jun 2010 21:20
por rcakto
proex,

Minhas sinceras desculpas, agora entendi aonde voce quiz chegar, antes achava que voce basicamente tinha falado" ta primeiro vai aprender a programar de verdade ( coisa que muitos ja me falaram quando fui dar uma olhada em PICs), depois se vira"....

com relação ao que voce disse, concordo plenamente.. o tempo de programação e MUITO longo mas assim mesmo, deve-se ter conhecimento pois alguns casos e melhor trabalhar dentro de uma programação mais robusta como o C++ usando TAMBEM assembler para resultados mais rapidos, visto que a linguagem e a mais proxima da linguagem de trabalho interno (bits) ....

tcpipchip,

Saberia me informar um bom livro para aprender de verdade "C/C++" para microcontroladores?? o basico do assembler ainda me lembro... (falta de pratica...)


Pessoal... seria bom comprar o mini2440 e um jlink para comecar a aprender ou teria placas melhores para alguem aprender do ZERO???
Aceito recomendações de livros tb.

Agradeco a todos pela ajuda.

MensagemEnviado: 09 Jun 2010 21:37
por Rodrigo_P_A
rcakto escreveu:proex,

Minhas sinceras desculpas, agora entendi aonde voce quiz chegar, antes achava que voce basicamente tinha falado" ta primeiro vai aprender a programar de verdade ( coisa que muitos ja me falaram quando fui dar uma olhada em PICs), depois se vira"....

com relação ao que voce disse, concordo plenamente.. o tempo de programação e MUITO longo mas assim mesmo, deve-se ter conhecimento pois alguns casos e melhor trabalhar dentro de uma programação mais robusta como o C++ usando TAMBEM assembler para resultados mais rapidos, visto que a linguagem e a mais proxima da linguagem de trabalho interno (bits) ....

tcpipchip,

Saberia me informar um bom livro para aprender de verdade "C/C++" para microcontroladores?? o basico do assembler ainda me lembro... (falta de pratica...)


Pessoal... seria bom comprar o mini2440 e um jlink para comecar a aprender ou teria placas melhores para alguem aprender do ZERO???
Aceito recomendações de livros tb.

Agradeco a todos pela ajuda.


Os livros que eu sugeri falam de ARM7 da NXP, mas falam sobre o processador ARM, o livro dá uma boa idéia de como funcionam os registradores do ARM ( independente do fabricante ) e dá para você tirar base nisso.

vou te dar um exemplo, eu estava desenvolvendo um projeto com um Cortex M3 da NXP, e tinha um rtos que tinha exemplos somente para os Luminarys ( hoje Texas Instruments ), eu li o código e o Port em assembler, mudei somente pequenas coisas, e estou usando no NXP na boa, ou seja esta é a vantagem, se você entender a estrutura de funcionamento do processador, você não vai ter dificuldades para mudar de uma família para a outra.

Sobre Kit, bom aproveitando a deixa, eu vendo kit de LPC2368 e sobre a Mini2440 ela usa ARM9 e é muito mais complexo, a mini2240 é ótima para aprender o uso de sistemas operacionais embarcados como o Linux, Windows CE mas claro que também é possível desenvolver aplicativos sem o uso de nenhum sistema operacional, mas é muito mais complexo.

Sobre C, C é C e no ARM é muito legal, eu por exemplo testos minhas rotinas em C no PC e a mesma rotina eu compilo e uso nos meus projetos com ARM, você tem que saber que o que muda é o acesso àos periféricos e configuração da CPU.

Não sei a sua experiência com PIC, se você está acostumado a usar CCS e Mikro C, você vai estranhar, pois nos compiladores para ARM não existem aquelas funções: SetupAdc... delay_ms... etc... você tem que criar tudo.

Sobre NXP, eu escolhi pois tenho facilidade me comprar no Brasil e no Exterior, e nunca tive problemas com fornecimento.

Exemplos tem vários na internet, escolha a família que você quer usar, e comece a lêr sobre ela.

Se o seu conhecimento em C não está muito bom, dá uma estudada em C, e treine mesmo em um compilador para PC, uma dica é, se você vai treinar no PC, evite usar rotinas da biblioteca STDIO como as rotinas sprintf, printf, getc, etc... comece testando somente a lógica de programação. Eu estou dizendo isso pois ainda não sei o que você vai escolher de ferramenta, mas como você é iniciante pode ser que você encontre dificuldade para configurar o uso das rotinas stdio no compilador, por exemplo parece que no GCC não tem uma lib stdio que possa ser redirecionada para a serial ou lcd, eu vi em um site no exterior que tem uma versão do gcc que é possível redirecionar mas eu não entendi, parece que isso ocorre pq o GCC foi feito para usar com a libc do linux, meu conhecimento vai só até aqui, não vou estender muito para num falar bobagem.

No keil é possível adicionar um arquivo retarget e direcionar as funções para a serial ou um lcd.

bom é isso aí, agora vai lendo as coisas e pensando

MensagemEnviado: 09 Jun 2010 21:53
por rcakto
blz entao,.. vo comecar com o pe no chao.... primeiro vou ver esses livros que voce me passou, e com relação a C, eu posso lhe afirmar que nao sei nada... mal mal montar o famoso "olá mundo!!" e nada mais... eu sou ex-programador em delphi, tentei parti para o C mas achei um tedio pois so achava material onde as telas faceis de fazer do delphi tinham de ser tudo programada na mao e na epoca eu achava isso uma perda de tempo...
HOJE me arrependo do tempo perdido, mas pelomenos estou finalmente terminando meu curso tecnico em eletrotecnica e no final do ano comeco a minha faculdade de engenharia eletrica, essa parte de "automação" e curiosidade minha, AMMMMMOOO eletronica, e procuro aprender mais e mais a cada dia.. sem contar que como estou montando meu laboratorio de eletronica na minha casa, aos poucos vou pensando em adcionar isso ou aquilo, mas seria bom ter um "PC" para monitorar alguns aparelhos e assim me avisar quando tudo esiver pronto, como anodeizar pecas metalicas e um controle para uma CNC que estou tentando montar...

MensagemEnviado: 09 Jun 2010 22:08
por tcpipchip

MensagemEnviado: 10 Jun 2010 08:37
por lrfad2
Tudo vai depender da tua necessidade / pressa. Dependendo de como for, sai mais barato vc fazer um curso dedicado. A lab tools e Anacom tem.

O Rodrigo_PA tb vende um kit bem legal e com preço acessível. Se vc for meio autodidata, dá pra vc pegar os exemplos e fazer seu próprio Frankenstein

T+

MensagemEnviado: 10 Jun 2010 08:57
por MarcusPonce
Rcakto, tenho uma sugestão um pouco diferente.
Claro que as abordagens que os colegas sugeriram também são boas, mas como você acabou deixando claro que é bem focado em eletrônica por gosto e por escolha profissional, eu sugiro o seguinte: abordagem mão na massa, fazendo e testando e aprendendo na medida do necessário. Focando em poder projetar e construir sua placa. Abaixo explico em detalhes.

ARM já é um assunto vasto, pois um ARM CORTEX A8 (usando no IPHONE GS por exemplo) contém acelerador gráfico, cálculo vetorial e ponto flutuante no hardware, descompactador de vídeo, LCD e saída NTSC/PAL, etc.
Se você partir por este lado, baseado em sistema operacional que pode ser gráfico, Linux ou outros, dá para fazer coisas incríveis porém os ARMS são encapsulamento BGA, então teria que comprar um módulo montado com o ARM e as memórias soldados para colocar na sua placa. O que você precisa aprender de programação e sistema operacional é enorme. Realmente complexo. Mas existem kits relativamente baratos inclusive chineses.

É possível projetar, mandar fazer e montar placas para rodar Linux com ARM9, encapsulamento PQFP. Pelo que lembro nenhum tem controlador de LCD interno. Normalmente tem que ser placa de 4 camadas. É possível fazer com 2 mas você vai ter que conhecer muito e planejar muito para ela ficar rodando estável (parece que o TCPIP fez uma). Também tem que conhecer razoalvelmente bem o Linux para fazer um equipamento que realmente necessite deste hardware. O legal é que dá para pendurar vários periféricos na USB e usar os drivers Linux que já existem, embora seja muito comum ter que dar uma ajeitadinha no driver que já existe...
Também tem vários kits no mercado.

Mas eu sugiro que você começe por um ARM contendo FLASH e RAM internos e encapsulamento TQFP, assim você pode projetar suas placas em 2 faces e mandar fazer algumas unidades por preços mais acessíveis. Mas para começar sugiro comprar um kit, pois vai economizar um monte de tempo.
Nesta categoria de ARMs tem os ARM7, ARM CORTEX M3 e M0. Sugiro pular os ARM7 e ir direto para ARM CORTEX M3. O motivo de M3 no lugar de ARM7: o mesmo preço ou mais barato, mais recursos, mais rápido, etc. Claro que sobre o ARM7 existem mais informações, pois está há mais tempo no mercado, mas acredito que M3 tem mais futuro.
Concordo com o Rodrigo que sugeriu NXP e acho que aqui no fórum tem mais gente usando eles que os M3 de outros fabricantes. Portanto estamos falando da família LPC17xx.
Existem vários kits lá fora, a própria NXP tem o LPCXpresso que é simples, os chineses também tem os seus, aqui no fórum já foi discutido isso.
Se você puder adquirir um adaptador JTAG ou SDW para rodar passo a passo no próprio LPC17xx seria mais fáci de debugar. Hoje existem por menos de US$100,00 e alguns kits já incluem um destes na própria placa, procure aqui neste fórum de ARMs mesmo.

Vai doer um pouco, mas sugiro esquecer assembly por hora.
Aprender "C" deveria ser prioridade absoluta neste momento. Veja que se mais tarde você migrar para ARM9 ou Cortex A8 rodando Linux (gráfico ou não) você não vai programar em assembly mesmo...
Vários colegas vão discordar, mas investir tempo em aprender assembly agora te acrescenta muito pouco por hora investida. Tempo sempre é caro.
Talvez um dia você precise otimizar ao máximo um loopizinho e tenha que ser em assembly. Não acho provável precisar disso, pois os LPC17xx são 100MHz ou 120MHz, contém bastante memória e os compiladores C atualmente são muito bons. Mas, quem sabe um dia... sugiro esperar ele chegar para você correr atrás. Nem preciso lembrar que a tecnologia evolui muito rápido, os microcontroladores vão sendo lançados, os conjuntos de instruções vão mudando e o assembly junto.
Outro motivo é que você provavelmente não está aprendendo ARM para fazer pisca-pisca. Qualquer coisa complexa o suficiente para necessitar de ARM já é complexa o suficiente para ter uma grande diferença de tempo entre implementar em assembly e C.

Sugerir o ambiente de desenvolvimento é sempre um assunto polêmico, mas sugiro que você baixe o Keil do site oficial, pois sem pagar você pode compilar até 32kbytes. É fácil de instalar. Tem um monte de exemplos. Tem um simulador para você rodar passo a passo que inclui alguns dos periféricos. Acho que aqui no fórum tem mais gente usando Keil que os concorrentes. E a Keil foi comprada pela ARM faz um tempo.

Um CORTEX M3 tem um monte de periféricos. A abordagem mão na massa é ir estudando _em detalhes_ os periféricos na medida que você vai precisando para o que você está construindo. Claro que inicialmente leia para que serve cada um deles, mas não precisa ir a fundo nos detalhes.

Boa sorte

MensagemEnviado: 10 Jun 2010 21:47
por rcakto
MarcusPonce,

Vlw pela ajuda, tipow so para ver se estou com a ideia certa... comecei a ver PIC ( 18F para ser mais exato) com a seguinte ideia: ("INICIALMENTE como projeto pessoal")

cada aparelho que eu monte, teria uma determinada parte onde iria adquirir dados para feedback, e este seria ligado a uma placa central onde iria receber este feedback para trabalha-lo, assim aparecendo em uma televisao ou monitor alguns dados, e/ou acionando algum alarme e por ai vai...

durante o meu curso conheci os PLCs... mas estes ainda não iriao me ser util pois teria de ter um pc conectado para receber os dados e trabalhar eles...

quero algo solo, assim nao iria gastar 3000 reais somente para isso...
os PICs ate que dariam para fazer mas sao poucos os recursos nos chips baratos, ja nos ARMs eu vi que posso fazer isso tudo ( basta querer aprender mesmo) assim o controlador principal sera o ARM, e na parte para recolher os dados deixo para os pics dessa forma posso separar em modulos todo o sistema.
Central - ARM
analise - PIC
feedback - Video, buzzer, portas logicas ( AND, OR, NAND, NOR, exclusivas...)

achei melhor assim, pois posso fazer melhorias sem precisar de mudar TUDO, faco a melhoria em uma determinada parte e quando tudo estiver ok somente mudo o codigo caso precise ou possa haver alterações para melhor desempenho...

OBS.: isso tudo iria ficar gravado dentro do modulo central, assim via usb posso pegar tudo e por em um pendriver ou conectar direto a um pc... BEM mais tarde talvez ate coloque tudo conectado via net assim se eu precisar ate ligar ou desligar um equipamento no meu FUTURO laboratorio, faco de onde estiver...

Qualquer duvida falem, sou PESSIMO para me expressar!!

MensagemEnviado: 11 Jun 2010 17:55
por chipselect
Alguns livros que eu acho importante para quem quer aprender C e C++, mesmo que seja para microcontrolador, são:

Treinamento em Linguagem C (módulo 1 e 2) de VICTORINE VIVIANE MIZRAHI, Prentice-Hall

C Completo e Total de Herbert Schildt, Makron Books

Treinamento em Linguagem C++ (módulo 1 e 2) de VICTORINE VIVIANE MIZRAHI, Makron Books

MensagemEnviado: 12 Jun 2010 00:22
por rcakto
chipselect,

Vlw pelas dicas, o C completo eu tenho a 3 edicao.... ele e BEM chato mas vou voltar a ler ele.......
depois eu compro os outros livros...

Obs.: Achei o disquete com os exemplos do livro... agora e achar um computador que AINDA tenha driver para ler ele e passar para o meu pendrive.....