[AVR GCC] Kompilacja warning ....
Masz problem? Zapytaj na forum elektroda.pl
From: "Paweł Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: [AVR GCC] Kompilacja warning ....
Date: Thu, 17 Jun 2004 16:04:02 +0200
uC.c:368: warning: passing arg 2 of `FlashMem_write_block' discards qualifiers f
rom pointer target type
uC.c:370: warning: passing arg 1 of `FlashMem_write_block' discards qualifiers f
rom pointer target type
funkcja:
void FlashMem_read_block(const void *buf, u32 *addr, size_t n){
u08 *buf_p;
buf_p = (u08 *)buf;
register u16 Page = addr264;
register u16 Buff = *addr%264;
FlashMem_READY();
DATAFLASH_read_mem_page_to_buffer(Page);
while ( n-- != 0) {
FlashMem_READY();
*buf_p++ = DATAFLASH_read_mem_buf(Buff++);
if ( Buff > 264 ) {
Buff = 0;
if ( Page < 512 ) Page++;
else Page = 0;
FlashMem_READY();
DATAFLASH_read_mem_page_to_buffer(Page);
}
}
*addr = Page * 264 + Buff;
wywolanie:
FlashMem_write_block( &StoreTmp, &Store_ptr, sizeof(Store_t) );
gdzie StoreTmp struktura, Store_ptr adres gdzie ma byc zapisana
Store_t wielkosc struktury.
--
--
Best regards
K_at_nospam_pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Paweł Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: Re: [AVR GCC] Kompilacja warning ....
Date: Thu, 17 Jun 2004 18:45:26 +0200
juz OK
moze sie komus przyda jak to zrobilem wiec
dodalem volatile jak nizej:
void FlashMem_write_block(volatile void *buf, volatile u32 *addr, size_t n);
--
--
Best regards
K_at_nospam_pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
Użytkownik "Paweł Kurzawa" <groups_at_nospam_kpw.qs.pl> napisał w wiadomości news:cas8d4$j71$1_at_nospam_atlantis.news.tpi.pl...
> uC.c:368: warning: passing arg 2 of `FlashMem_write_block' discards qualifiers f
> rom pointer target type
> uC.c:370: warning: passing arg 1 of `FlashMem_write_block' discards qualifiers f
> rom pointer target type
>
> funkcja:
> void FlashMem_read_block(const void *buf, u32 *addr, size_t n){
> u08 *buf_p;
> buf_p = (u08 *)buf;
>
> register u16 Page = *addr/264;
> register u16 Buff = *addr%264;
>
> FlashMem_READY();
> DATAFLASH_read_mem_page_to_buffer(Page);
> while ( n-- != 0) {
> FlashMem_READY();
> *buf_p++ = DATAFLASH_read_mem_buf(Buff++);
> if ( Buff > 264 ) {
> Buff = 0;
> if ( Page < 512 ) Page++;
> else Page = 0;
> FlashMem_READY();
> DATAFLASH_read_mem_page_to_buffer(Page);
> }
> }
> *addr = Page * 264 + Buff;
>
> wywolanie:
> FlashMem_write_block( &StoreTmp, &Store_ptr, sizeof(Store_t) );
> gdzie StoreTmp struktura, Store_ptr adres gdzie ma byc zapisana
> Store_t wielkosc struktury.
>
>
> --
> --
> Best regards
> K_at_nospam_pW from Poland
>
> kpw(at)qs.pl
> http://kpw.qs.pl
> UIN: 8017753
> GG: 1263183
> ---------------- end ----------------
>
>
>
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: [AVR GCC] Kompilacja warning ....
Date: Thu, 17 Jun 2004 20:03:54 +0200
Paweł Kurzawa wrote:
juz OK
moze sie komus przyda jak to zrobilem wiec
dodalem volatile jak nizej:
void FlashMem_write_block(volatile void *buf, volatile u32 *addr, size_t n);
pomijając to, że piszesz o innej funkcji niż wkleiłeś, `const' w
definicji FlashMem_read_block() nie ma najmniejszego sensu, bo ta
funkcja z definicji modyfikuje bufor, a Ty w pierwszej linijce zmieniasz
wskaźnik const na nie-const.
i jaki ma sens volatile w parametrach funkcji?
w.
========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Paweł Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: Re: [AVR GCC] Kompilacja warning ....
Date: Thu, 17 Jun 2004 21:25:58 +0200
pomijając to, że piszesz o innej funkcji niż wkleiłeś, `const' w
read write to identycze funkcjedlatego sie walnalem,
dlaczego 'const' wzrorowalem sie na bibliotece eeprom.h.
definicji FlashMem_read_block() nie ma najmniejszego sensu, bo ta
funkcja z definicji modyfikuje bufor, a Ty w pierwszej linijce zmieniasz
wskaźnik const na nie-const.
zobacz dobrze buffor nie jest modyfikowany.
i jaki ma sens volatile w parametrach funkcji?
nie wiem, ale przeszukalem archiwum www.avrfreaks.com i takie rozwiazanie
znalazlem i teraz nie wywala ostrzezen.
--
--
Best regards
K_at_nospam_pW from Poland
kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Wojtek Kaniewski <wojtekka_at_nospam_SPAM.SPAM.SPAM>
Subject: Re: [AVR GCC] Kompilacja warning ....
Date: Fri, 18 Jun 2004 15:43:09 +0200
Paweł Kurzawa wrote:
pomijając to, że piszesz o innej funkcji niż wkleiłeś, `const' w
read write to identycze funkcjedlatego sie walnalem,
dlaczego 'const' wzrorowalem sie na bibliotece eeprom.h.
void eeprom_read_block (void *buf, const void *addr, size_t n);
void eeprom_write_block (const void *buf, void *addr, size_t n);
ktoś tu kręci (;
definicji FlashMem_read_block() nie ma najmniejszego sensu, bo ta
funkcja z definicji modyfikuje bufor, a Ty w pierwszej linijce zmieniasz
wskaźnik const na nie-const.
zobacz dobrze buffor nie jest modyfikowany.
void FlashMem_read_block(const void *buf, u32 *addr, size_t n){
u08 *buf_p;
buf_p = (u08 *)buf;
/* ... */
*buf_p++ = DATAFLASH_read_mem_buf(Buff++);
zmieniasz zawartość tego, co jest pod adresem `buf', więc `const' po
prostu nie ma sensu.
i jaki ma sens volatile w parametrach funkcji?
nie wiem, ale przeszukalem archiwum www.avrfreaks.com i takie rozwiazanie
znalazlem i teraz nie wywala ostrzezen.
wystarczyłby porządek z `const', bo o ile mi wiadomo, `volatile' nie ma
wpływu na parametry funkcji.
w.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai