STM32F051 FLASH_ErasePage problem.

František Burian BuFran na seznam.cz
Neděle Září 22 21:46:20 CEST 2013


Jen palba od boku ... je kód v RAM nebo flash ? zksil bych ho dát do RAM ...



F.


---------- Původní zpráva ----------

Od: Miroslav Mraz <mraz na seznam.cz>

Datum: 22. 9. 2013

Předmět: Re: STM32F051 FLASH_ErasePage problem.


"Po delší době - nikdo nic ?

Problém jsem sice víceméně úspěšně obešel, ale pořád mě to tak nějak

vadí. Sice chápu, že může být chybka v překladači, v knihovnách, bordel

ve vektorech a co já vím co všechno, ale nemůžu to najít.



Mrazík



Miroslav Mraz píše v Út 17. 09. 2013 v 18:37 +0200:

> Zdravím,

> objevil jsem další záhadu, snad se najde nějaká dobrá duše, která pomůže 

> objasnit jí. Pro představu kousek kódu v main:

> FLASH_Status fs = 0;

> uprintf("begin program %d\r\n", simEeRead());

> while (1) {

> __WFI();

> if (!gblUsart.flag) continue;

> uprintf("pass %d\r\n", gFlashIndex);

> FLASH_Unlock();

> if (gblUsart.flag & 1) {

> gFlashIndex = 0;

> FLASH_ClearFlag (FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);

> uprintf("enter to erase 0x%x\r\n", (uint32_t) gBeginAddr);

> Delay(100); // ms

> fs = FLASH_ErasePage ((uint32_t) gBeginAddr);

> uprintf("erase: %d\r\n", fs);

> Delay(100);

> }

> if (gblUsart.flag & 2) {

> fs = FLASH_ProgramWord ((uint32_t) gBeginAddr + 4*gFlashIndex, 
gFlashIndex);

> uprintf("write: %d\r\n", fs);

> }

> gFlashIndex++;

> gblUsart.flag = 0;

> FLASH_Lock();

> }

> Volatilní proměnná gblUsart.flag se nastavuje v přerušení od usartu 

> (podle přijatého znaku), uprintf je neblokovaný (tzn. nečeká na 

> dokončení) výpis na usart v přerušení. Idea je taková, že budu do flash 

> zapisovat uint32 parametr (zde jen test), vždy na první volné místo 

> (0xFFFFFFFF) na stránce a pokud jí zaplním, tak jí smažu a začnu znovu.

> Zápis není problém. Mazání ano. Pokud vynechám to Delay(100) před 

> FLASH_ErasePage, stránka se sice smaže, ale program zůstává viset (podle 

> openocd, kterému moc nevěřím) v obsluze přerušení usartu a už se z toho 

> nevyhrabe. Vypadá to tak, že pokud usart nestihne odvysílat všechny 

> znaky než se začne mazat stránka, zdechne. A marně si lámu hlavu proč. 

> Netušíte někdo ?

> 

> Mrazík

> 

> 

> _______________________________________________

> 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"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130922/62b22580/attachment.htm>


Další informace o konferenci Hw-list