Programowanie mikrokontrolerow

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Jozeph
Użytkownik
Posty: 26
Rejestracja: 2010-06-13, 09:28

Programowanie mikrokontrolerow

Post autor: Jozeph »

Witam! Mozecie polecic jakies srodowisko do programowania mikrokontrolerow AVR pod Linux'em? Chodzi o sam kompilator. Moze byc konsola.
Ostatnio zmieniony 2011-09-25, 09:19 przez Jozeph, łącznie zmieniany 2 razy.

Pajaczek
Użytkownik
Posty: 1439
Rejestracja: 2006-08-03, 13:16
Lokalizacja: Winny Gród

Re: Programowanie mikrokontrolerow

Post autor: Pajaczek »

No jeżeli sam kompilator, to chyba od razu narzuca się avr-gcc ;)

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Programowanie mikrokontrolerow

Post autor: bojleros »

avr-gcc + avr-libc + avr-binutils + avrdude

Kiedyś korzystałem z Kontrollerlab ale ostatecznie zostałem przy makefile. Dlaczego ? Taki projekt zawsze otworzysz w czym chcesz i zawsze się skompiluje a podejście niskopoziomowe uzupełni wiedzę :] Dodatkowo możesz pracować na plikach źródłowych czym chcesz i skąd chcesz, byle zachować te same standardy tekstu (kodowanie, znaki końca linii)


PS. Nie potrzebujesz wyłącznie kompilatora tylko całego zestawu narzędzi. Nazywa się to toolchainem. Do tego dodatkowo przydaje się oprogramowanie i kabelek do flashowania mcu. No chyba że wolisz na sucho ....

jacol
Przyjaciel Forum
Posty: 679
Rejestracja: 2004-06-12, 17:34

Re: Programowanie mikrokontrolerow

Post autor: jacol »

Witam.
Proponuję :
najważniejsze elementy:
Pozdrawiam jacol

Jozeph
Użytkownik
Posty: 26
Rejestracja: 2010-06-13, 09:28

Re: Programowanie mikrokontrolerow

Post autor: Jozeph »

jacol, dzieki :ok: bojleros, oczywiscie wiem o tym. Wszystko mam przygotowane, ale kiedys robilem to po Winda.

Jozeph
Użytkownik
Posty: 26
Rejestracja: 2010-06-13, 09:28

Re: [Rozw.]Programowanie mikrokontrolerow

Post autor: Jozeph »

O! avr-gcc-4.5.3 kompiluje pliki assemblera :roll: to fajnie ale mam jakis blad skladniowy bo wywala kompilacje..

ktos pomoze? :oops:

Kod: Zaznacz cały

jozeph@slack:~$ avr-gcc-4.5.3 aaa.asm
/usr/lib/gcc/avr/4.5.3/../../../../avr/bin/ld:aaa.asm: file format not recognized; treating as linker script
/usr/lib/gcc/avr/4.5.3/../../../../avr/bin/ld:aaa.asm:2: syntax error
collect2: ld returned 1 exit status
kod:

Kod: Zaznacz cały

.NOLIST
.INCLUDE "8515def.inc"
.LIST

.DEF   mp = R16
RJMP   main
main:
   LDI   mp,0b11111111
   OUT   DDRB,mp

loop:
   LDI   mp,0x00
   OUT   PORTB,mp

   LDI   mp,0xFF
   OUT   PORTB,mp
   RJMP   loop

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Programowanie mikrokontrolerow

Post autor: bojleros »

Nigdy nie pisałem w asm pod avr-gcc więc dużo nie pomogę ale wiem że są jakieś różnice w składni. Niezależnie od tego masz jeszcze kilka innych asemblerów, trzeba tylko poszukać. Generalnie piszę w C i nawet nie miałem konieczności zabawy we wstawki asm. W ten sposób oszczędzasz trochę czasu :)

Tak nawiasem mówiąc to ten program nie zamiga diodą chyba że będziesz "oglądał miganie" oscyloskopem :)

chimi
Użytkownik
Posty: 117
Rejestracja: 2005-05-01, 15:49

Re: Programowanie mikrokontrolerow

Post autor: chimi »

file format not recognized; treating as linker script
avr-gcc nie kompiluje plików assemblera, albo zrób wstawkę w C, albo zainteresuj się avrą (http://avra.sourceforge.net/)

_zx
Użytkownik
Posty: 1
Rejestracja: 2011-09-27, 21:03

Re: Programowanie mikrokontrolerow

Post autor: _zx »

Uważaj na wersję kompilatora gcc. Począwszy do wersji gcc-4.4 coś jest skopane i programy mogą nie do końca działać OK. Swego czasu kombinowałem z arduino i programem typu zaświeć/zgaś diodę co sekundę i mrugało jak się tam mu coś poustawiało. Także radzę pozostać przy 4.3.x ;-)

Jozeph
Użytkownik
Posty: 26
Rejestracja: 2010-06-13, 09:28

Re: Programowanie mikrokontrolerow

Post autor: Jozeph »

bojleros, to byl najprostszy program jaki mi przyzedl na mysl :razz: Ok avr-gcc narazie zostawie.. za to avra radzi sobie calkiem dobrze :-) ten programik sie skompilowal, stworzyl sie *.hex, *.eep.hex i *.obj. Wiadomo ze hex do proca, eep.hex od pamieci eeprom, a obj? Trzeba to jeszcze jakims linkerem potraktowac?

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Programowanie mikrokontrolerow

Post autor: bojleros »

Jak możesz to napisz konkretnie jakie polecenia wywołałeś.

Jozeph
Użytkownik
Posty: 26
Rejestracja: 2010-06-13, 09:28

Re: Programowanie mikrokontrolerow

Post autor: Jozeph »

program:

Kod: Zaznacz cały

.NOLIST
.INCLUDE "8515def.inc"
.LIST

.DEF   mp = R16
RJMP   main
main:
   LDI   mp,0b11111111
   OUT   DDRB,mp

loop:
   LDI   mp,0x00
   OUT   PORTB,mp

   LDI   mp,0xFF
   OUT   PORTB,mp
   RJMP   loop
Kompilacja:

Kod: Zaznacz cały


bash-4.1$ ./avra adf.asm 
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info

   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.

   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.

Pass 1...
8515def.inc(44) : PRAGMA directives currently ignored
8515def.inc(48) : PRAGMA directives currently ignored
8515def.inc(53) : PRAGMA directives currently ignored
8515def.inc(490) : PRAGMA directives currently ignored
8515def.inc(491) : PRAGMA directives currently ignored
8515def.inc(492) : PRAGMA directives currently ignored
8515def.inc(493) : PRAGMA directives currently ignored
8515def.inc(515) : PRAGMA directives currently ignored
Pass 2...
8515def.inc(44) : PRAGMA directives currently ignored
8515def.inc(48) : PRAGMA directives currently ignored
8515def.inc(53) : PRAGMA directives currently ignored
8515def.inc(490) : PRAGMA directives currently ignored
8515def.inc(491) : PRAGMA directives currently ignored
8515def.inc(492) : PRAGMA directives currently ignored
8515def.inc(493) : PRAGMA directives currently ignored
8515def.inc(515) : PRAGMA directives currently ignored
done

Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0007, Length = 0x0008

Assembly complete with no errors.
Segment usage:
   Code      :         8 words (16 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes

chimi
Użytkownik
Posty: 117
Rejestracja: 2005-05-01, 15:49

Re: Programowanie mikrokontrolerow

Post autor: chimi »

Obj to chyba tylko mapa symboli, możesz do niego zajrzeć. W Twoim przypadku wystarczy wgrać *.hex do flasha (eeprom jest pusty/nieużywany w kodzie).

Awatar użytkownika
bojleros
Użytkownik
Posty: 785
Rejestracja: 2005-08-29, 11:12
Lokalizacja: z widokem na familoki :)
Kontakt:

Re: Programowanie mikrokontrolerow

Post autor: bojleros »

Bez większych filozofii trzeba załadować i zobaczyć czy się znęca nad diodą.

ODPOWIEDZ