STM32F030 a emulace eeprom
Jiří Nesvačil
nesvacil na posys.eu
Pátek Září 19 10:45:46 CEST 2014
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
Další informace o konferenci Hw-list