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