Fwd: STM CUBE - zkusenosti

Ales Povalac alpov na alpov.net
Neděle Říjen 4 20:23:34 CEST 2015


Dobrý den,

toto je bug překladače, který mě před pár roky také potrápil. Je
reportovaný na http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45052 .
Týká se verze GCC 4.5.1, použité v Sourcery G++ Lite 2010.09-51 a
Atollic Studiu 2.1.0. Novější verze GCC už potíže nemají.

Zdravím
A. Povalač


Dne 4. října 2015 20:16 Jiří Nesvačil <nesvacil na posys.eu> napsal(a):
> Zdravim,
> konkretne kod pro test, zda flash je resetovana (je i v cube) vola interni
> metodu(viz nize) pro zjisteni stavu banky a zavola se jen jednou. Prekladac,
> vse co je v jednom *.c souboru optimalizuje. Pomohlo az slovo volatile pred
> FLASH.
>
> gcc version 4.5.1 (Sourcery G++ Lite 2010.09-51)
>
> Zkuste si dat slovo volatile pred tyhle zakladni odkazy v *.h souboru a
> uvidite jestli se Vam zmeni velikost prekladu, atp. . Nebo ten kdo ovlada
> asm muze i tam zkouknout.
>
>
> FLASH_Status FLASH_GetBank1Status(void)
> {
>   FLASH_Status flashstatus = FLASH_COMPLETE;
>
>   if((FLASH->SR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY)
>   {
>     flashstatus = FLASH_BUSY;
>   }
>   else
>   {
>     if((FLASH->SR & FLASH_FLAG_BANK1_PGERR) != 0)
>     {
>       flashstatus = FLASH_ERROR_PG;
>     }
>     else
>     {
>       if((FLASH->SR & FLASH_FLAG_BANK1_WRPRTERR) != 0 )
>       {
>         flashstatus = FLASH_ERROR_WRP;
>       }
>       else
>       {
>         flashstatus = FLASH_COMPLETE;
>       }
>     }
>   }
>   /* Return the Flash Status */
>   return flashstatus;
> }
>
>
> Dne 4. 10. 2015 v 19:56 Jan Waclawek napsal(a):
>
>> No, prisne vzate podla normy, pretypovanie konstanty na pointer je
>> implementation defined a moze skoncit vselijako, a to najma zle (C99
>> 6.3.2.3#5). Dalej, co znamena volatile, je tiez implementation defined
>> (C99 6.7.3#6). A ano, cital som Regehrovo pojednanie na danu temu
>> https://www.cs.utah.edu/~regehr/papers/emsoft08-preprint.pdf .
>>
>> Na druhej strane, oboje - aj pretypovanie konstanty na struct, aj
>> oznacovanie poloziek structu ako volatile - je dnes zauzivanym standardom,
>> takze ma dost prekvapuje, ze sa najde nearchaicky prekladac, ktory toto
>> nezvlada.
>>
>> Mozete byt prosim konkretny vo verzii a v okolnostiach, pripadne dat
>> konkretny co najjednoduchsi priklad, ktory by som dokazal zreprodukovat?
>>
>> Dakujem
>>
>> wek
>>


Další informace o konferenci Hw-list