Co powoduje błąd parowania w avrgcc przy użyciu volatile dla zmiennej char?

avrgcc + volatile -> Parser Error





Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: avrgcc + volatile -> Parser Error
Date: Fri, 11 Oct 2002 05:48:02 +0200


Pracowicie drążę avrgcc.... nie bez bólu. ;-)
Czy możecie mi wyjaśnić, czemu każda próba użycia 'volatile' jako
kwalifikatora typu zmiennej np.:

volatile char zmienna;

kończy się komunikatem o błędzie w rodzaju:
<CYTAT>
: 826
: 678
: 563
: 387
Error on parsing symbol 140 -> Type : 204x Desc : zmienna:G(1,1)=B(0,2)
</CYTAT>
???

Dodam, że 'volatile' użyte w odniesieniu do wstawek asemblerowych nie
sprawia problemów.
(gcc version 3.2 20020616 (experimental))

Mam w programie globalną zmienną modyfikowaną w obsłudze przerwania a
czytaną w pętli w wątku podstawowym. Obecnie zoptymalizowany kod czyta i
ładuje ją do rejestru jeden raz przed pętlą nie zważając na fakt, że autor
miał na myśli coś zupełnie innego ;-)

--
Marek Dzwonnik mdz_at_nospam_message.pl
GG: #2061027 (zwykle jako 'dostępny-niewidoczny')

P.S. Do poniedziałku mogę mieć kłopoty z dostępem do poczty i sieci w
ogóle.




Poprzedni Następny
Wiadomość
Spis treści
From: "Mister" <_NOSPAM_wojpie_at_nospam_bielsko.evatronix.com.pl>
Subject: Re: avrgcc + volatile -> Parser Error
Date: Fri, 11 Oct 2002 10:26:22 +0200


Mam w programie globalną zmienną modyfikowaną w obsłudze przerwania a
czytaną w pętli w wątku podstawowym. Obecnie zoptymalizowany kod czyta i
ładuje ją do rejestru jeden raz przed pętlą nie zważając na fakt, że
autor
miał na myśli coś zupełnie innego ;-)

Dokładnie wczoraj ten sam problem przerabiałem ale wstawienie volatile
sprawiło, że pętla wygląda tak jak chciałem.
Kompilator nie zgłasza żadnego błędu. Używam kompilatora chyba z listopada
2001.

A taki błąd miałem jak zadeklarowałem tablicę struktur, nie wiem czy ten
kompilator cos takiego łyka?

Pozdrawiam
Mister



Poprzedni Następny
Wiadomość
Spis treści
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: avrgcc + volatile -> Parser Error
Date: Fri, 11 Oct 2002 12:02:34 +0200


"Marek Dzwonnik" <mdz_at_nospam_message.pl> wrote in message news:3da649c8$1_at_nospam_news.home.net.pl...
Pracowicie drążę avrgcc.... nie bez bólu. ;-)
Czy możecie mi wyjaśnić, czemu każda próba użycia 'volatile' jako
kwalifikatora typu zmiennej np.:

volatile char zmienna;

kończy się komunikatem o błędzie ...
...

moze wersja kompilatora jeszcze niestabilna

ja uzywam starszej 3.0.2 i nie ma zadnego problemu z volatile

Andrzej




Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: avrgcc + volatile -> Parser Error
Date: Fri, 11 Oct 2002 16:26:26 +0200



Marek Dzwonnik wrote:

Mam w programie globalną zmienną modyfikowaną w obsłudze przerwania a
czytaną w pętli w wątku podstawowym. Obecnie zoptymalizowany kod czyta i
ładuje ją do rejestru jeden raz przed pętlą nie zważając na fakt, że
autor
miał na myśli coś zupełnie innego ;-)

Que? :-) jesli deklaracje typu "static volatile char x;" nie dzialaja, to
cos
jest zle z kompilatorem. Nie ma w tym nic dziwnego, sam ok. miesiaca
temu znalazlem blad w GCC (ale na IA-32), w binutils tez jest sporo
bledow. Jak dojdziesz do tego, ze kompilacja programu asemblerowego
zalezy od "ospacjowania" nawiasow, to tez sie nie dziw. :-)

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Micha=B3_Smolnik?= <smolnik_at_nospam_go2.pl>
Subject: Re: avrgcc + volatile -> Parser Error
Date: Fri, 11 Oct 2002 07:35:57 +0200


On Fri, 11 Oct 2002 05:48:02 +0200, "Marek Dzwonnik" <mdz_at_nospam_message.pl>
wrote:

Pracowicie drążę avrgcc.... nie bez bólu. ;-)
Czy możecie mi wyjaśnić, czemu każda próba użycia 'volatile' jako
kwalifikatora typu zmiennej np.:

volatile char zmienna;

kończy się komunikatem o błędzie w rodzaju:
<CYTAT>
826
678
563
387
Error on parsing symbol 140 -> Type : 204x Desc : zmienna:G(1,1)=B(0,2)
</CYTAT>

U mnie następująca deklaracja nie sprawia żadnych problemów.

void delay (uint16_t volatile ile);

(gcc version 3.2 20020616 (experimental))

3.2 20020625

W starszych też nie było problemów.
--
pozdrawiam
Michał Smolnik, Rybniczanin
smolnik_at_nospam_go2.pl www.smolnik.w.pl tel. 604 666 970

Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: avrgcc + volatile -> Parser Error
Date: Tue, 15 Oct 2002 22:08:57 +0200


Użytkownik "Marek Dzwonnik" <mdz_at_nospam_message.pl> napisał w wiadomości
news:3da649c8$1_at_nospam_news.home.net.pl...
Czy możecie mi wyjaśnić, czemu każda próba użycia 'volatile' jako
kwalifikatora typu zmiennej np.:
volatile char zmienna;
kończy się komunikatem o błędzie w rodzaju:
" Error on parsing symbol 140 -> Type : 204x Desc :
zmienna:G(1,1)=B(0,2) "
(gcc version 3.2 20020616 (experimental))

Dziękuję za podpowiedzi :-)
Jak się okazało problem wynika z błędu elfcoff-a i został wyjaśniony na
forum AVRfreaks w wątku:
http://www.avrfreaks.net/phorum/read.php?f=2&i=3426&t=3409#3426

Wcześniej próbowałem jeszcze obejścia za pomocą wywołania avrgcc z
parametrem "-fvolatile-global" wymuszającym traktowanie wszystkich
zmiennych globalnych i zewnętrznych jako "volatile". Dzięki temu można
uniknąć jawnego użycia "volatile" w deklaracji zmiennych. Jednakże
ostatecznie nie weryfikowałem wygenerowanego w ten sposób kodu.

MDz