Fwd: STM CUBE - zkusenosti

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Neděle Říjen 4 22:40:48 CEST 2015


Tak chyby se najdou vsude, tady je vyhoda, ze je vse ve forme otevrenych 
zdrojaku a ne uzavrenych knihoven, takze na vse se da prijit a opravit to.
Me celkem prekvapuje, ze ten vygenerovany kod proste funguje a prijde 
mi, ze ta nastaveni maji udelana docela chytre a funkcne, proste treba 
ten ethernet jsem nakonfiguroval a (po oprave HW) chodi na prvni dobrou...
Co me naopak zaskocilo, bylo zprovozneni SDRAM, ve vygenerovanem kodu 
nebyla inicializacni sekvence SDRAM. Ale je fakt, ze jsem nepouzil 
definici DATA_IN_ExtSDRAM, tam ten kod je ale zas je to napsano v 
system_xxx velmi natvrdo a ne pro muj typ SDRAM. V prikladech ovsem 
funkci pro inicializacni sekvenci maji.



Dne 04.10.2015 v 21:12 Jiří Nesvačil napsal(a):
> Zdravím,
> děkuji. Ten překladač již taky nemám, jen si na to vzpomínám. Nicméně 
> mi tam to volatile v definici těch adres za periferie v STM knihovnách 
> chybí.
> On to někdo použije a je z toho chyba.
>
>
> U maple jsem se díval na obecné metody zápisu čtení z GPIO a zpět. A 
> našel poznámku viz níže.
> Nejspíš v té verzi asi chybí taky volatile.(Nevím jak aktuální.) Je si 
> na to dobré dávat pozor.
>
> https://github.com/leaflabs/maple-bootloader/blob/master/hardware.h
>
>
> /* todo: there must be some major misunderstanding in how we access
>    regs. The direct access approach (GET_REG) causes the usb init to
>    fail upon trying to activate RCC_APB1 |= 0x00800000. However, using
>    the struct approach from ST, it works fine...temporarily switching
>    to that approach */
> typedef struct {
>     vu32 CR;
>     vu32 CFGR;
>     vu32 CIR;
>     vu32 APB2RSTR;
>     vu32 APB1RSTR;
>     vu32 AHBENR;
>     vu32 APB2ENR;
>     vu32 APB1ENR;
>     vu32 BDCR;
>     vu32 CSR;
> } RCC_RegStruct;
> #define pRCC ((RCC_RegStruct *) RCC)
>
>
> Jirka
>
>
> Dne 4. 10. 2015 v 20:23 Ales Povalac napsal(a):
>> 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
>>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


---
Tato zpráva byla zkontrolována na viry programem Avast Antivirus.
https://www.avast.com/antivirus



Další informace o konferenci Hw-list