STM32F030 a emulace eeprom
Jiří Nesvačil
nesvacil na posys.eu
Pátek Září 19 11:34:56 CEST 2014
Jinak je dokumentace spoustu napr. v dokumentu porovnani CPU, zrovna jsem na to narazil:
STM32F10x and STM32F0xx Flash driver API correspondence
STM32F10x Flash driver API S
TM32F0xx Flash driver API
Interface configuration
void FLASH_SetLatency(uint32_t
FLASH_Latency);
void FLASH_SetLatency(uint32_t FLASH_Latency);
void FLASH_PrefetchB
ufferCmd(uint32_t
FLASH_PrefetchBuffer);
void FLASH_PrefetchBufferCmd(FunctionalState
NewState);
void FLASH_HalfCycleAccessCmd(uint32_t
FLASH_HalfCycleAccess);
NA
void FLASH_ITConfig(uint32_t FLASH_IT,
FunctionalState NewState);
void FLASH_ITConfig(uint32_t FLASH_IT,
FunctionalState NewState);
Memory Programming
void FLASH_Unlock(void); void FLASH_Unlock(void);
void FLASH_Lock(void); void FLASH_Lock(void);
FLASH_Status FLASH_ErasePage(uint32_t
Page_Address);
FLASH_Status FLASH_ErasePage(uint32_t
Page_Address);
FLASH_Status FLASH_EraseAllPages(void); FLASH_Status FLASH_EraseAllPages(void);
FLASH_STATUS
FLASH_ERASEOPTIONBYTES(void);
FLASH_STATUS FLASH_OB_ERASE(void);
FLASH_Status
FLASH_ProgramWord(uint32_t Address,
uint32_t Data);
FLASH_Status FLASH_ProgramWord(uint32_t Address,
uint32_t Data);
FLASH_Status
FLASH_ProgramHalfWord(uint32_t Address,
uint16_t Data);
FLASH_Status FLASH_ProgramHalfWord(uint32_t
Address, uint16_t Data);
Dne 19. 9. 2014 10:45, Jiří Nesvačil napsal(a):
> Zdravim,
> na F1 mam toto:
>
> // 0 = ok, -1 chyba
> int8_t bf_write16bit(uint32_t Address, uint8_t * buf)
> {
> FLASH_Status FLASHStatus=FLASH_ProgramHalfWord(Address, ((uint16_t)(*buf)|((uint16_t)(*(buf+1)))<<8));
> if (FLASHStatus != FLASH_COMPLETE)
> return -1;
> return 0;
> }
>
>
>
> // 0 = ok, -1 chyba
> int8_t bf_app_erase(uint32_t app_size)
> {
> uint32_t EraseCounter;
> uint32_t NbrOfPage = app_size / FLASH_PAGE_SIZE;
> if ((app_size % FLASH_PAGE_SIZE) > 0) NbrOfPage++;
> FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
> for(EraseCounter=0; EraseCounter<NbrOfPage; EraseCounter++)
> {
> FLASH_Status FLASHStatus = FLASH_ErasePage(APPLICATION_ADDRESS + (FLASH_PAGE_SIZE * EraseCounter));
> // BUG asi mozna taky vraci timeout, protoze to po prvni strance vyskoci a je to
> // if (FLASHStatus != FLASH_COMPLETE) return -1;
> }
> return 0;
> }
>
>
> Dne 19. 9. 2014 8:58, Miroslav Mraz napsal(a):
>> Tak mě napadá, že minimálně rutiny pro mazání a zápis do flash musí být
>> součástí systémového bootloaderu. Marně však hledám bližší popis. Třeba
>> NXP má pro tyto účely ROM API, které se dá volat z uživatelského
>> programu docela jednoduše. Buď neumím hledat nebo se na to v STM
>> jednoduše vykašlali, nechť si to každý jeden udělá po svém.
>>
>> Mrazík
>>
>> On 09/18/2014 11:39 PM, Jan Waclawek wrote:
>>> Nebudte sarkasticky, pan kolega. Myslim, ze tu kazdy chape hodnotu
>>> dokumentacie, ale ona ma naozaj dost daleko ku dokonalosti a nie je prilis
>>> instruktivna. Takze ja chapem, ze pan kolega Grunt by sa rad nechal
>>> inspirovat.
>>>
>>> Ale este je tu aj ta "standardna kniznica". To sa da pouzit aj ako zdroj
>>> inspiracie, a aj ako doplnok tej prepytujem dokumentacie. A u 'F0 je
>>> vyhoda v tom, ze su aj "snippets", do ktorych som sa sice nepozeral, ale
>>> som presvedceny o tom, ze to bude tiez inspirativne. A pre
>>> sadomasochisticke typy je tu aj F0-Cube.
>>>
>>> Ide o to sklbit dve veci - zvladnut samotne mazanie a napalovanie FLASH, a
>>> vymysliet a implementovat tu "emulaciu EEPROM". V predchadzajucom
>>> prispevku som to druhe naznacil v asi tej najjednoduchsej podobe, co podla
>>> mna u vacsiny aplikacii bohate staci.
>>>
>>> Este tretia vec, co to moze skomplikovat, a co sme teraz nespomenuli (ale v
>>> tej diskusii spred par mesiacov to bolo prave jadro problemu) je mozna
>>> potreba behu aspon casti programu (typicky obsluhy preruseni) pocas
>>> mazania/programovania FLASH - to vyzaduje zvladnutie behu inkriminovanych
>>> casti programu z RAM (co znamena vediet identifikovat inkriminovane casti,
>>> vediet ich linkovat do RAM, pred kritickymi operaciami ich tam
>>> nakopirovat, presmerovat tabulku vektorov, a ktovie na co som este
>>> zabudol). Takze najlepsie je, ak je to taka aplikacia, kde to
>>> "pozastavenie" jednoducho nebude vadit... :-)
>>>
>>> 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
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140919/df4f5371/attachment.html>
Další informace o konferenci Hw-list