STM32 a FLASH EEPROM emulace

Jiří Nesvačil nesvacil na posys.eu
Úterý Říjen 14 12:41:35 CEST 2014


Zdravím,
podívejte se na timeout flash erase, write.... , ten je někde jako #define. Ten zkuste prodloužit. Dostal jsem CPU taky do stavu, že nešel flashnout přes instrukce CPU, ale přes JTAG šel.
Dával jsem page erase, write a po read jsem zde měl neustále blbosti. Odhaduji, že pokud se někde nedodrží ten timeout, atp. , tak se nějaký klopák v tom hw překlopí a je smůla. Dokonce aplikace v pohodě běží z FLASH, ale na tom jednom místě to 
zapisuje a čte blobosti. Narazil jsem na to na druhé stránce. První prošla ok. Zkusil bych ten timeout.
Normálně to chodí.

Jirka

Dne 14. 10. 2014 12:05, Michal Grunt napsal(a):
> Už jsem na to přišel (ne proč, ale kdy se tak děje).
>
> Mám jednoduchý program, kde zapíšu 50 hodnot (25x dvojku a 25x pětku) . Přes ST Link utilitu vymažu mcu (komplet erase), nahraji program a pustím ho. Vše je OK. Kouknu přes ST Link utilitu do paměti a vše je v pořádku. Provedu restart a opět je vše OK. A tak to pokračuje dokud se nezaplní page0. Když je page0 zaplněná (5x50 hodnot) a provedu 6. restart page0 se vymaže a část obsahu (ale divného obsahu) se přesune do page1. A právě tam je ten problém. Na začátku page1 je 50 hodnot (0002) s podivným indexem (0000).
>
> 5. restart (page0 zaplněna) http://i58.tinypic.com/2a5dmoz.png
> 6. restart (page0 vymazána a naplnění page1) http://i57.tinypic.com/a107zp.png
>
> MG
>
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
> Sent: Tuesday, October 14, 2014 9:17 AM
> To: HW-news
> Subject: Re: STM32 a FLASH EEPROM emulace
>
> Skuste neignorovat navratove hodnoty.
>
> wek
>
>
> ----- Original Message ---------------
>> Mám následující kód:
>>
>> // eeprom.h
>>
>> #define EEPROM_START_ADDRESS ((uint32_t)0x08003800)
>>
>> #define NB_OF_VAR ((uint8_t)50)
>>
>>
>>
>> // main.c
>>
>> for (i = 0; i < NB_OF_VAR; i++) VirtAddVarTab[i] = i;
>>
>>
>>
>> FLASH_Unlock();
>>
>> EE_Init();
>>
>>
>>
>> EE_WriteVariable(VirtAddVarTab[0], (uint16_t)0);
>>
>> EE_WriteVariable(VirtAddVarTab[1], (uint16_t)1);
>>
>> EE_WriteVariable(VirtAddVarTab[2], (uint16_t)2);
>>
>> ...
>>
>> EE_WriteVariable(VirtAddVarTab[49], (uint16_t)49);
>>
>>
>>
>> FLASH_Lock();
>>
>>
>>
>> Následuje ètení hodnot EE_ReadVariable 0 - 49...
>>
>>
>>
>> Kdy¾ provádím restarty tak jeden restart je v¹e OK a následující mám v¹echny pøeètené hodnoty rovno 0, dal¹í u¾ je to opìt v poøádku atd.
>>
>>
>>
>> Neví nìkdo proè se tak dìje? Mo¾ná jsem ¹patnì pochopil funkci...
>>
>>
>>
>> MG
> _______________________________________________
> 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ší informace o konferenci Hw-list