Цитата(Slev @ Oct 21 2009, 11:01)

Вложил картинку про фузы.
BOOTSZ=01 - 2048 words - 4096 bytes - F800*2=1F000
2 memphis_: твой фрагмент ничего не изменил, адреса получились такие же.
В данный момент пишу загрузчик на основе настроек линкера что дал выше - светодиод моргает

Для моргания светодиода ньюансов нет.
1. BOOTSTART у вас выставлен правильно - по ресету прыгаем в секцию загрузчика.
2. Если фусы BOOTSZ10 = 01 то размер секции загрузчика 2048 слов и адрес с которого надо располагать программу 1F000
В моём файле линкера это выглядит так:
Код
-DBOOT_START_512=1FC00 //константа адрес начала секции загрузчика 512 байт
-DBOOT_START_1024=1F800 //константа адрес начала секции загрузчика 1024 байт
-DBOOT_START_2048=1F000 //константа адрес начала секции загрузчика 2048 байт
-DBOOT_START_4096=1E000 //константа адрес начала секции загрузчика 4096 байт
-DBOOT_START=BOOT_START_2048 /*начало секции загрузчика*/
-DBOOT_SIZE_512=200
-DBOOT_SIZE_1024=400
-DBOOT_SIZE_2048=800
-DBOOT_SIZE_4096=1000
-DBOOT_SIZE=BOOT_SIZE_2048 //размер секции загрузчика
Проверил - у меня всё работает.
Не работает только в одном случае - если неправильно выставлены биты BOOTSZ10.
В вашех hex-файле видно что программа располагается с правильно адреса. Ищите косяки в установке бит BOOTSZ10.
Откомпилировал вашу программу у себя слегка изменив с параметрами
Код
-DBOOT_START_2048=1F000 //константа адрес начала секции загрузчика 2048 байт
-DBOOT_START=BOOT_START_2048 /*начало секции загрузчика*/
-DBOOT_SIZE_2048=800
-DBOOT_SIZE=BOOT_SIZE_2048//размер секции загрузчика
Попробуйте прошить.
CODE
#include <iom128.h>
#include <ina90.h>
//-------------------------------------------------------
void main(void)
{
long t=1000000;
__disable_interrupt();
MCUCR=(1<<IVCE);MCUCR=(1<<IVSEL);
PORTG = 0xff;
DDRG |= 0x08;
__enable_interrupt();
while(1){
if(t > 0) t--;
else
{
PORTG ^= 0x08;
t=1000000;
}
}
}
//--------------------------------------------------------