[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