STM32F051 FLASH_ErasePage problem.

Miroslav Mraz mraz na seznam.cz
Neděle Září 22 21:19:31 CEST 2013


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




Další informace o konferenci Hw-list