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