XC8 a data ver Flash
Andrej Jancura
aj.hwlist na gmail.com
Čtvrtek Červen 20 14:49:03 CEST 2013
Dobry den,
2013/6/20 Jan Smrz <jan.smrz na email.cz>
> On 06/20/2013 12:23 PM, Andrej Jancura wrote:
>
>
>
> 2013/6/19 Jan Smrz <jan.smrz na email.cz>
>
>> Ano, pdata1 je konstanta, jen mám podezření, že ji asi ne vždy přiřadí
>> správnou hodnotu. V kódu mám dvoje čtení hned za sebou
>> mem_read((uint32_t)pdata1,sizeof(format_version),&format_version);
>> mem_read((uint32_t)pdata1 + 2,sizeof(length),(uint8_t*)&length);
>>
>>
> Este ma napada, ked preleziete vsetky include, najdete aj doplnkove
> funkcie copy memory blok a move blok. Ked pozriem na tu Vasu mem_read a
> matne si spomeniem na copy memory blok, tak su velmi az moc podobne.
> Pozrite si aj tie, myslim, ze to vyriesi Vas problem.
>
> Dekuji, podivam se na to.
>
>
Pozrite si vsetky tie include az do konca. Treba preliezt xc.h a string.h.
Funkcia sa vola memcpy a ostatne su podobne. Ale neviem, ci mate v lite
verzii aj zdrojaky jednotlivych funkcii. V kazdom pripade pre pic18 je tam
pouzity pointer far void *. Takze je to tak, ze si myslim, ze ten uint32_t
by ste mal prepisat na far pointer a prislusne si upravit aj Vasu definiciu
funkcie. Potom by nemal byt problem.
A.
mem_read vypada takto:
>
> void mem_read(uint32_t address, uint8_t size, uint8_t *dst)
> {
> uint8_t gie_l;
>
> if (GIE)
> gie_l = 1;
> else
> gie_l = 0;
> GIE = 0;
> for (uint8_t i = 0; i < size; i++)
> {
> LoadFlashAddr(address + i);
> TableRead(*dst++);
> }
> if (gie_l)
> GIE = 1; // restore interrupts
> }
>
>
> J.S.
>
>
>
> _______________________________________________
> 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/20130620/01faaba0/attachment.htm>
Další informace o konferenci Hw-list