Проверте настройки линкера - начало области загрузчика и размер секции векторов (там 35 векторов по 4 байта).
Ещё проверте фус-биты настройки размера секции загрузчика, фус-бит старта из секции загрузчика. И выключите режим совместимости.
Снизу фрагмент файла линкера на котором я осваивал бут-секцию атмеги 128.
Выделе фрагмент где описано расположение сегментов во флеш - посмотрите может чемто поможет

CODE
-DBOOT_START_512=1FC00 //константа адрес начала секции загрузчика 512 байт
-DBOOT_START_1024=1F800 //константа адрес начала секции загрузчика 1024 байт
-DBOOT_START_2048=1F000 //константа адрес начала секции загрузчика 2048 байт
-DBOOT_START_4096=1E000 //константа адрес начала секции загрузчика 4096 байт
-DBOOT_START=BOOT_START_4096 /*начало секции загрузчика*/
-DBOOT_SIZE_512=200
-DBOOT_SIZE_1024=400
-DBOOT_SIZE_2048=800
-DBOOT_SIZE_4096=1000
-DBOOT_SIZE=BOOT_SIZE_4096 //размер секции загрузчика
/* Code (flash) segments */
-D_..X_INTVEC_SIZE=8C /* 4 bytes * 35 vectors */
-D_..X_FLASH_TEND=FF /* End of tiny flash memory */
-D_..X_FLASH_NEND=FFFE /* End of near flash memory */
-D_..X_FLASH_END=(1FFFF-2) /* End of flash memory */ //тут указывается конечный адрес памяти минус 2 байта на crc
-D_..X_CRC_FLASH_END=(1FFFF) /*указываем что crc16 будет размещаться в конце памяти отведённой для программы*/
/* Code memory */
-Z(CODE)INTVEC=BOOT_START-(BOOT_START+_..X_INTVEC_SIZE-1)
/* Fill unused interrupt vector's with RETI */
-H1895
-h(CODE)BOOT_START-(BOOT_START+_..X_INTVEC_SIZE)
-Z(CODE)TINY_F=(BOOT_START+_..X_INTVEC_SIZE)-(BOOT_START+_..X_FLASH_TEND)
-Z(CODE)NEAR_F,SWITCH,DIFUNCT=(BOOT_START+_..X_INTVEC_SIZE)-(BOOT_START+_..X_FLASH_NEND)
-Z(CODE)CODE=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(FARCODE)FAR_F=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)HUGE_F,INITTAB=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)TINY_ID,NEAR_ID=(BOOT_START+_..X_INTVEC_SIZE)-_..X_FLASH_END
-Z(CODE)CHECKSUM=(_..X_CRC_FLASH_END-1)-_..X_CRC_FLASH_END //тут располагается сегмент crc16 - 2 последних байта памяти
//а это ключ линкера для вычисления crc16 по области (CODE)0-(_..X_CRC_FLASH_END-2)
//-J2,crc16,1,=(CODE)0-(_..X_CRC_FLASH_END-2)
-J2,crc16,1//=(CODE)1E004-1E00b // BOOT_START-(BOOT_START+2)