В общем проблема у меня. Ресетится устройство. Понятно что из-за переполнения. Вот что у меня после компилдяции:
Код
AVR Memory Usage
----------------
Device: atmega128
Program: 42940 bytes (32.8% Full)
(.text + .data + .bootloader)
Data: 5282 bytes (129.0% Full)
(.data + .bss + .noinit)
EEPROM: 66 bytes (1.6% Full)
(.eeprom)
Build succeeded with 0 Warnings...
Линкуется вот так:
Код
avr-gcc.exe -mmcu=atmega128 -Wl,-u,vfprintf -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff -Wl,-Map=ppp.map at.o common.o fcs.o icmp.o ip.o main.o ppp.o tcp.o udp.o mmc.o logger.o time.o lcd.o ff.o -lprintf_flt -lm -o ppp.elf
имею внешнюю оперативку в размере 64к.
Делаю тест вот так:
Код
u16 SRAM_Test(void)
{
unsigned short j;
Reset_WD();
for (j = 0; j < RAM_SIZE; j++) {
_SFR_MEM8(j + EXT_MEM_START) = (unsigned char)(j);
Reset_WD();
}
for (j = 0; j < RAM_SIZE; j++)
{
if (_SFR_MEM8(j + EXT_MEM_START) != (unsigned char)(j)) return j;
Reset_WD();
}
return 0xffff; // past it's test
}
В JTAG вижу, что в память всё пишеться и наверное даже читается ибо тест проходит.
Но блин когда начинаются обращения из кода типа:
Код
T_PPP PPP;
....
memcpy_P((char*)&PPP.OUR_IP.ip32, OurIP, 4);
....
рано или поздно оно ресетится.
Помогите победить! ХЕЛП!