durny WinAVR
Masz problem? Zapytaj na forum elektroda.pl
From: "Jacek" <tymkonto_at_nospam_poczta.onet.pl>
Subject: durny WinAVR
Date: Sun, 5 Jun 2005 17:13:05 +0200
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem. W
pliku *.map widze, ze one sa ale nie dziala to tak jak powinno.
Wszystko wraca do normy w chwili gdy zaremuje jedna z nich. Programuje
mikrokontrolery w C od wielu lat i mialem juz do czynienia z kilkoma
kompilatorami C dla mikrokontrolerow. Z tego powodu wykluczam proste
problemy zwiazane ze skladnia plikow zrodlowych. Czy spotkaliscie sie z
tego typu problemami w przypadku tego kompilatora?
Jestem bezradny bo przeczy to wszelkim regulom zwiazanym z normami ANSI.
Bede wdzieczny za wszelkie wskazowki.
Jacek M.
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: durny WinAVR
Date: Sun, 5 Jun 2005 17:28:37 +0200
Użytkownik "Jacek" <tymkonto_at_nospam_poczta.onet.pl> napisał w wiadomości news:d7v4ob$d8j$1_at_nospam_news.onet.pl...
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem. W
pliku *.map widze, ze one sa ale nie dziala to tak jak powinno.
...
a w *.lst widzisz, ze jest wolana ?
Czy pod debugerem jak sledziesz to wchodzi do tej funkcji ?
Zrobilem kilkanascie projektow na AVR'a, uzywalem winavr i nie mialem takich poblemow.
Moze cos ze stosem nie tak ?
Chyba Marek Dz. nieadawno podpowiadal, ze Atmega fabrycznie ma ustawiony fuse
kompatybilnosci ze 103 a wtedy program napisany pod 128 nie za bardzo dziala.
Byl jakis watek na ten temat pare dni temu.
--
Andrzej
From: Tomasz Piasecki <mtbrider_at_nospam__-nospam-_.poczta.onet.pl>
Subject: Re: durny WinAVR
Date: Sun, 05 Jun 2005 17:46:33 +0200
Jacek wrote:
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem. W
pliku *.map widze, ze one sa ale nie dziala to tak jak powinno.
Kto "one"? Masz kilka funkcji o tej samej nazwie czy jak?
TP.
--
| _ _ _ |
| _____ _| |_| | __ (o) | | __ __ _at_nospam_poczta.onet.pl |
| | \ | | |o \| \| |/o |/ _\| \ |
| |_|_|_| \_| |__/|_| |_|\__|\__||_| Tomasz Piasecki |
From: Jan Dubiec <jdx_at_nospam_SPAMTRAP.slackware.pl>
Subject: Re: durny WinAVR
Date: 05 Jun 2005 18:31:46 +0200
On Sun, 5 Jun 2005 17:13:05 +0200, "Jacek" <tymkonto_at_nospam_poczta.onet.pl> wrote:
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem. W
pliku *.map widze, ze one sa ale nie dziala to tak jak powinno.
Jeśli wszystkie moduły programu dają się poprawnie skompilować i zlinkować,
to praktycznie jest pewne, że błąd jest w Twoim kodzie. Poza tym plik .map
nic nie mówi (albo niewiele) na temat miejsc(a) z których są odwołania do
danego symbolu - nawet jeśli dodasz parametr --cref do opcji linkera.
Skompiluj pliki a.c i b.c do assemblera i zobacz czy rzeczywiście są wywołania
tej funkcji w tych miejscach, w których być powinny. Przy czym jeszcze raz
powtarzam, że jest praktycznie pewne, że nie jest to błąd kompilatora.
Wszystko wraca do normy w chwili gdy zaremuje jedna z nich. Programuje
mikrokontrolery w C od wielu lat i mialem juz do czynienia z kilkoma
kompilatorami C dla mikrokontrolerow.
E, coś ściemniasz. Mówisz że programujesz od kilku lat, a jednocześnie
piszesz że "pogramujesz w WinAVR" albo że "kompilator nie wywoluje tej
funkcji". A z kontekstu całego posta można odnieść wrażenie że utożsamiasz
WinAVR (czyli zbiór kilku powiązanych ze sobą programów) z kompilatorem
(avr-gcc - jeden z tych programów).
Regards,
/J.D.
--
Jan Dubiec We're all living in Amerika
jdx#slackware.pl Coca Cola
+48 506 790442 Sometimes war
Amerika by Rammstein
From: "Jacek" <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: durny WinAVR
Date: Sun, 5 Jun 2005 19:40:34 +0200
Użytkownik "Jan Dubiec" <jdx_at_nospam_SPAMTRAP.slackware.pl> napisał w wiadomości
news:87mzq4kbnx.fsf_at_nospam_hs001.slackware.pl...
On Sun, 5 Jun 2005 17:13:05 +0200, "Jacek" <tymkonto_at_nospam_poczta.onet.pl>
wrote:
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z
trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem.
W
pliku *.map widze, ze one sa ale nie dziala to tak jak powinno.
Jeśli wszystkie moduły programu dają się poprawnie skompilować i
zlinkować,
to praktycznie jest pewne, że błąd jest w Twoim kodzie. Poza tym plik .map
nic nie mówi (albo niewiele) na temat miejsc(a) z których są odwołania do
danego symbolu - nawet jeśli dodasz parametr --cref do opcji linkera.
Skompiluj pliki a.c i b.c do assemblera i zobacz czy rzeczywiście są
wywołania
tej funkcji w tych miejscach, w których być powinny. Przy czym jeszcze raz
powtarzam, że jest praktycznie pewne, że nie jest to błąd kompilatora.
Rzeczywiscie nie pomyslalem o sprawdzeniu kodu w asemblerze
Wszystko wraca do normy w chwili gdy zaremuje jedna z nich. Programuje
mikrokontrolery w C od wielu lat i mialem juz do czynienia z kilkoma
kompilatorami C dla mikrokontrolerow.
E, coś ściemniasz. Mówisz że programujesz od kilku lat, a jednocześnie
piszesz że "pogramujesz w WinAVR" albo że "kompilator nie wywoluje tej
funkcji". A z kontekstu całego posta można odnieść wrażenie że utożsamiasz
WinAVR (czyli zbiór kilku powiązanych ze sobą programów) z kompilatorem
(avr-gcc - jeden z tych programów).
Regards,
/J.D.
Przepraszam ale moje skroty myslowe wynikaja nie z braku znajomosci
poprawnej nomenklatury ale z pospiechu (terminy mnie gonia). Rzeczywiscie
pisze w C dla mikrokontrolerow od osmiu lat i staralem sie na grupie pisac
przede wszystkim zwiezle, zakladajac ze w gronie ludzi z branzy bede
zrozumialy i nie musze zawsze pisac zgodnie z oficjalna forma. Moj tekst i
tak jest spory, z tego wynikaja te tak "pokraczne formy". Prawda jest, ze
dopiero rozpoczynam prace z GCC, WinAVR i Atmega128. Do tej pory pracowalem
z pakietami oprogramowania narzedziowego Keil-a, Fujitsu i IAR.
Tak w ogole to zauwazylem, ze od czasu do czasu rozpoczyna tutaj swoja
krucjate grupa osob broniacych poprawnosci jezykowej ponad wszystko. Mnie
wydaje sie, ze nalezy byc tutaj zrozumianym i zwiezlym nawet kosztem
skrotowej (nie do konca poprawnej) formy.
Przepraszam wszystkich urazonych.
A problem rozwiazalem. Okazalo sie, ze w funkcji "wspolnej" umiescilem
pulapke o ktorej zapomnialem i potem dziwilem sie, ze to nie dzialalo :-)).
Po jej usunieciu juz znowu wszystko wrocilo do normy.
Dziekuje wszystkim za pomoc i tym zyczliwym i tym mniej...
Serdecznie Was pozdrawiam
Jacek M.
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: durny WinAVR
Date: Sun, 05 Jun 2005 23:18:03 +0200
Jacek wrote:
Obecnie programuje w WinAVR dla ATmega128. Mój projekt składa się z trzech
plików a.c, b.c i d.c. Mam funkcję napisaną w pliku d.c ktora wywolywana
jest w funkcjach, z pozostalych dwoch plikow. Mimo zaincludowania pliku
naglowkowego zawierajacego deklaracje tej funkcji do tych dwoch plikow
kompilator nie wywoluje tej funkcji w miejscach w ktorych je napisalem.
Zobacz zrodlo w asemblerze (najlepiej po deasemblacji juz zlinkowanego
programu) - czy tam sa wywolania? Skad wiesz, ze funkcje nie sa wywolywane?
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.