Цитата(Annuta @ Jul 9 2007, 11:27)

Моя переменная
#define EFC_PAGE_SIZE 128
Размер страницы что у SAM7X128 что у SAM7X256 равен 256 байт (согласно даташиту)
Цитата(Annuta @ Jul 9 2007, 11:27)

При попытке поменять в xcl файле адреса на такие /скопировала в аналогичной проге/
верните прежние значения, просто смотрите куда вы пишете, то есть какой начальный адрес вы передаете в функцию void EFCWrite(u32 adr, u8 *pbuf, u32 Len, u32 NeedReset)
Если вы передадите туда допустим адрес 0х00001000 а размер программы у вас более 4 кб, то собственно все что свыше этих 4 кб будет затерто вашими данными ... Поэтому просто ограничиваете размер флэшки в xlc файле (как тут советовали) и пишете в ту область. Допустим пишете тут
-DROMSTART=00000000
-DROMEND=0002FFFF
(размер программы при этом не может быть более 196607 байт)
и уже в функцию записи передаете адрес 00030000.
И еще: вместо page = (0x00310000)/EFC_PAGE_SIZE;
напишите page = (adr & 0x3FFFF)/EFC_PAGE_SIZE;
Сообщение отредактировал Timofey - Jul 9 2007, 10:11