collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Assembly num Arduino UNO  (Lida 8225 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Assembly num Arduino UNO
« em: 12 de Abril de 2014, 19:41 »
Boas pessoal,

Preciso da vossa ajuda. Tenho um Arduino Uno mas nas aulas usamos umas boards atmega controller com um Atmega128 em vez do 328 do uno. Lá usamos o avr studio 4 para gerar o ficheiro .hex e depois fazermos upload do mesmo para o atmega com a ajuda do ponyprog2000. COmo posso fazer no uno para colocar os programas que faço em assembly para a outra board?

Obrigado pela ajuda,

Cumprimentos,
Jorge

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Assembly num Arduino UNO
« Responder #1 em: 12 de Abril de 2014, 19:44 »
Penso que o ponyprog não sabe falar com o bootloader do arduino, se não, usas avrdude, e usas o avrstudio 4 á mesma, simplesmente no projecto metes atmega238p em vez de atmega128, se bem que eu acho isso uma má ideia, os micros são diferentes, estás sujeito a não puder fazer/testar certas coisas, o instruction set é igual entre os dois, os periféricos, depende..

EDIT:
A não ser que programes o bootloader antigo de 2K que suportava o protocolo STKv2.
Avr fanboy

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Re: Assembly num Arduino UNO
« Responder #2 em: 12 de Abril de 2014, 21:30 »
Se coloca-se o bootloader antigo que vantagem teria para mim neste caso?
Quanto ao AVR Dude, também há para windows?

Ou seja, basicamente preciso de uma maneira de carregar ficheiros .hex para o arduino, preferencialmente trabalhar mesmo com o uP sem softwares arduino e assim.

PS: O Uno usa o atmega328 penso eu.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Assembly num Arduino UNO
« Responder #3 em: 12 de Abril de 2014, 21:54 »
Atmega328p, está escrito no chip, é só olhares para ele.
O avrdude está numa pasta do ide do arduino, e dado que o arduino já tem installer, abre a linha de comandos do windows e escreve avrdude, quase de certeza que está instalado, se não, terás de abrir a linha de comandos e navegar até onde tens o ide do arduino instalado para poderes usar o avrdude.
Avr fanboy

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Assembly num Arduino UNO
« Responder #4 em: 13 de Abril de 2014, 11:31 »
O Avrdude está incluído em muitos programas que lidam com os micros AVR, já o AVRstudio precisa de uma plataforma apropriada para se comunicar com o micro, por isso é que se recorre a um programa externo e enviar o .hex assim como alterar os fusebits e afins.

Recomendaria o AVR Burn-O-Mat + adaptador USB-ISP para ligar ao ICSP do arduino, o conversor USB presente no hardware do arduino não serve para isso, é apenas para comunicação série.
O adaptador USB-ISP é barato.

obs: o ponyprog2000 não suporta o micro Atmega328

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Re: Assembly num Arduino UNO
« Responder #5 em: 13 de Abril de 2014, 22:30 »
Encontrei o .exe do avrdude mas mal abro, ele fecha-se.
O pessoal nas aulas acho que passa programas em assembly para o arduino sem usar recorrer a programmers.
Não há nenhuma forma de fazer isso sem recorrer a hardware?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Assembly num Arduino UNO
« Responder #6 em: 13 de Abril de 2014, 22:38 »
Re-lê o que eu escrevi, mas desta vez com atenção!
Primeiro abres a linha de comandos, carregas no botão do windows, ou na barra iniciar e escreves cmd.exe e carregas enter, e vai-te aparecer a linha de comandos, cd e dir até dares com a pasta do avrdude, escreves avrdude e ele "abre" na linha de comandos.

Depende do que chamas hardware externo, o arduino trás um bootloader serial de fábrica, logo é só ligar o cabo usb e o avrdude fala com o bootloader via serial(porta COM emulada sob USB-CDC), não é preciso nenhum hardware extra a não ser o próprio arduino.

Sim, o avrdude tambem vem incluido tanto na antiga toolchain que era chamada de WinAvr e que vinha juntamente com o AvrStudio 4, e é tambem o que o Arduino usa, dai aquilo usar uma versão tão antiga do compilador.
O AvrStudio 6 continua a ter uma toolchain, simplesmente mudou de nome(não é só bem isso, mas para efeitos de utilizador final o efeito é o mesmo), e continua a estar disponivel para download para quem quiser usar um qualquer outro ide e makefiles.
Avr fanboy

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Re: Assembly num Arduino UNO
« Responder #7 em: 14 de Abril de 2014, 14:31 »
Ah, assim já lá consegui chegar. Ou seja o avrdude permite-me passar .hex ou .asm para o arduino?
Se não for pedir muito, podes-me explicar assim por alto como usar as opções? Não vi assim nenhuma muito óbvia de como transferir o programa hehehe.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Assembly num Arduino UNO
« Responder #8 em: 14 de Abril de 2014, 14:33 »
No meu tutorial sobre avr-gcc que está aqui no fórum, na primeira página tem lá uma pequena explicação de como usar o avrdude com um arduino.
Avr fanboy

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: Assembly num Arduino UNO
« Responder #9 em: 14 de Abril de 2014, 15:15 »
Ah, assim já lá consegui chegar. Ou seja o avrdude permite-me passar .hex ou .asm para o arduino?

O avrdude é o programa que envia o ficheiro .hex (ou .bin) para o micro em questão através de linhas de comando, essas linhas de comando são dadas não manualmente (embora seja possível) mas por um programas mais "User-friendly" como o "AVR Burn-O-Mat" que tinha referido.

.asm é uma extensão para listagens de código em assembler, ao ser compilado passa para .hex e não pode ser enviado antes disso.

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Re: Assembly num Arduino UNO
« Responder #10 em: 15 de Abril de 2014, 00:48 »
Vou ver se amanhã arranjo algum tempo para testar.
O meu muito obrigado ao dropes e ao senso pela disponibilidade :)

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Assembly num Arduino UNO
« Responder #11 em: 15 de Abril de 2014, 01:46 »
O resultado do compilador ou do assemblador são ficheiros "objecto" (extensão .o).
Depois o linker junta os vários ficheiros objecto, adiciona algum código de inicialização (se for caso disso) e gera um .ELF, que é um ficheiro com várias "secções" e muita "meta-informação" como informação de debug. A partir daí o utilitário objcopy (avr-objcopy no caso do winavr) é usado para extrair o conteúdo de secções do .ELF para um novo formato; neste caso, ele é usado para extrair as secções relevantes do programa para um .HEX (um formato de texto criado pela Intel e ainda muito usado por programadores de microcontroladores) ou um .BIN (que é apenas e só o código máquina puro, os bytes tal-e-qual como devem ser gravados na flash do micro).
Na parte inicial deste tutorial também faço uso do avrdude para gravar:
http://embeddeddreams.com/users/njay/Micro%20Tutorial%20AVR%20-%20Njay.pdf

Offline jOrGe.mRNh

  • Mini Robot
  • *
  • Mensagens: 17
Re: Assembly num Arduino UNO
« Responder #12 em: 16 de Abril de 2014, 13:50 »
Mais uma vez obrigado a todos.

À conversa com um eng. falou-me do programa Xloader e é realmente do amis simples que pode haver e cumpre a 100% a função que eu pretendia sem recurso a mais hardware ou outros bootloaders.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Assembly num Arduino UNO
« Responder #13 em: 16 de Abril de 2014, 15:43 »
Deves poder fazer o mesmo com o avrdude, só muda o nome do parâmetro "programador" a usar.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Assembly num Arduino UNO
« Responder #14 em: 16 de Abril de 2014, 18:11 »
Está tudo explicado(e em Português!) no meu tutorial aqui no fórum, é só pesquisar que dá logo com o tópico, não é preciso nenhuns programas, e saber usar uma linha de comandos é essencial(digo eu)..
Avr fanboy