Код Avr C не работает, если адрес основной функции после 0x200 на ATtiny25

#raspberry-pi3 #avr #avrdude #attiny

#raspberry-pi3 #avr #avrdude #attiny

Вопрос:

Я использую raspberry pi 3b, работающий на Arch ARM, для программирования ATtiny25V. Для этого я использую эту модифицированную версию avrdude :https://github.com/kcuzner/avrdude

Сначала это работало отлично, но затем я заметил, что в какой-то момент добавление дополнительного кода привело к тому, что микроконтроллер перестал работать. (например, если Iput включил только светодиод и постоянно переключался в main, светодиод больше не загорался).

Я использовал avr-objdump -S для проверки созданного кода, и я заметил, что до тех пор, пока основная функция находится перед 0x200 , она, казалось, работала, и как только она была помещена дальше (из-за растущего кода), ничего не произошло.

кажется, что avrdude быстрее мигает с изображением, что вызывает ошибку (хотя она больше).

Я не нашел ни одной подобной проблемы в Интернете, поэтому, если у кого-то может быть представление о том, что могло вызвать проблему?

Примечание: ATtiny25V имеет флэш-память объемом 2 Кб, 128 Гб eeprom, 128 Гб SRAM

ПРАВКА 2 :

Я пробовал с последней версией avrdude http://download.savannah.gnu.org/releases/avrdude /

с исправлением %ud -> %d
http://savannah.nongnu.org/bugs/?47550

… Но поведение такое же

ПРАВКА 3: я попытался переместить все функции, кроме main, в другой раздел, помещенный в 0x200 (так, чтобы main был раньше)… Но это не работает. Так что, возможно, условием сбоя является любая функция, установленная после 0x200

РЕДАКТИРОВАТЬ: Я пробовал с разными чипами ATtiny25V, но все они ведут себя одинаково.

avr-gcc -Wall -pedentic [...] не сообщает мне ни об ошибке, ни о предупреждении avrdude сообщает мне, что все байты были проверены. количество байтов < 2 Тыс.

 avr-size -Ax working.elf
working.elf  :
section     size       addr
.text      0x210        0x0
.data        0x6   0x800060
.bss        0x11   0x800066
.comment    0x11        0x0
Total      0x238
  
 avr-size -Ax fail.elf
fail.elf
section     size       addr
.text      0x2c2        0x0
.data        0x6   0x800060
.bss        0x11   0x800066
.comment    0x11        0x0
Total      0x2ea
  

avr-objdump working.elf -S

 working.elf:     format de fichier elf32-avr


Déassemblage de la section .text :

00000000 <__do_copy_data>:
   0:   10 e0           ldi r17, 0x00   ; 0
   2:   a0 e6           ldi r26, 0x60   ; 96
   4:   b0 e0           ldi r27, 0x00   ; 0
   6:   e0 e1           ldi r30, 0x10   ; 16
   8:   f2 e0           ldi r31, 0x02   ; 2
   a:   03 c0           rjmp    . 6         ; 0x12 <__zero_reg__ 0x11>
   c:   c8 95           lpm
   e:   31 96           adiw    r30, 0x01   ; 1
  10:   0d 92           st  X , r0
  12:   a6 36           cpi r26, 0x66   ; 102
  14:   b1 07           cpc r27, r17
  16:   d1 f7           brne    .-12        ; 0xc <__zero_reg__ 0xb>

00000018 <__do_clear_bss>:
  18:   20 e0           ldi r18, 0x00   ; 0
  1a:   a6 e6           ldi r26, 0x66   ; 102
  1c:   b0 e0           ldi r27, 0x00   ; 0
  1e:   01 c0           rjmp    . 2         ; 0x22 <.do_clear_bss_start>

00000020 <.do_clear_bss_loop>:
  20:   1d 92           st  X , r1

00000022 <.do_clear_bss_start>:
  22:   a7 37           cpi r26, 0x77   ; 119
  24:   b2 07           cpc r27, r18
  26:   e1 f7           brne    .-8         ; 0x20 <.do_clear_bss_loop>

00000028 <nop>:
  28:   08 95           ret

0000002a <CmdResetTimer>:
  2a:   84 e1           ldi r24, 0x14   ; 20
  2c:   90 e0           ldi r25, 0x00   ; 0
  2e:   08 95           ret

00000030 <CmdEndEnableWD>:
  30:   80 91 73 00     lds r24, 0x0073 ; 0x800073 <cmdIn 0x3>
  34:   80 93 6b 00     sts 0x006B, r24 ; 0x80006b <wdEnabled>
  38:   08 95           ret

0000003a <CmdEnableWD>:
  3a:   80 91 6b 00     lds r24, 0x006B ; 0x80006b <wdEnabled>
  3e:   80 93 6f 00     sts 0x006F, r24 ; 0x80006f <cmdOut 0x3>
  42:   88 e1           ldi r24, 0x18   ; 24
  44:   90 e0           ldi r25, 0x00   ; 0
  46:   08 95           ret

00000048 <ledT>:
  48:   88 b3           in  r24, 0x18   ; 24
  4a:   90 e1           ldi r25, 0x10   ; 16
  4c:   89 27           eor r24, r25
  4e:   88 bb           out 0x18, r24   ; 24
  50:   08 95           ret

00000052 <led>:
  52:   88 23           and r24, r24
  54:   11 f0           breq    . 4         ; 0x5a <led 0x8>
  56:   c4 9a           sbi 0x18, 4 ; 24
  58:   08 95           ret
  5a:   c4 98           cbi 0x18, 4 ; 24
  5c:   08 95           ret

0000005e <dbugT>:
  5e:   88 b3           in  r24, 0x18   ; 24
  60:   98 e0           ldi r25, 0x08   ; 8
  62:   89 27           eor r24, r25
  64:   88 bb           out 0x18, r24   ; 24
  66:   08 95           ret

00000068 <dbug>:
  68:   88 23           and r24, r24
  6a:   11 f0           breq    . 4         ; 0x70 <dbug 0x8>
  6c:   c3 9a           sbi 0x18, 3 ; 24
  6e:   08 95           ret
  70:   c3 98           cbi 0x18, 3 ; 24
  72:   08 95           ret

00000074 <__vector_14>:
  74:   1f 92           push    r1
  76:   0f 92           push    r0
  78:   0f b6           in  r0, 0x3f    ; 63
  7a:   0f 92           push    r0
  7c:   11 24           eor r1, r1
  7e:   2f 93           push    r18
  80:   3f 93           push    r19
  82:   4f 93           push    r20
  84:   5f 93           push    r21
  86:   6f 93           push    r22
  88:   7f 93           push    r23
  8a:   8f 93           push    r24
  8c:   9f 93           push    r25
  8e:   af 93           push    r26
  90:   bf 93           push    r27
  92:   ef 93           push    r30
  94:   ff 93           push    r31
  96:   d8 df           rcall   .-80        ; 0x48 <ledT>
  98:   80 91 76 00     lds r24, 0x0076 ; 0x800076 <cmdState>
  9c:   83 30           cpi r24, 0x03   ; 3
  9e:   00 f5           brcc    . 64        ; 0xe0 <__vector_14 0x6c>
  a0:   88 23           and r24, r24
  a2:   99 f1           breq    . 102       ; 0x10a <__vector_14 0x96>
  a4:   20 91 74 00     lds r18, 0x0074 ; 0x800074 <cmdRemaining>
  a8:   84 e0           ldi r24, 0x04   ; 4
  aa:   90 e0           ldi r25, 0x00   ; 0
  ac:   fc 01           movw    r30, r24
  ae:   e2 1b           sub r30, r18
  b0:   f1 09           sbc r31, r1
  b2:   e4 59           subi    r30, 0x94   ; 148
  b4:   ff 4f           sbci    r31, 0xFF   ; 255
  b6:   20 81           ld  r18, Z
  b8:   2f b9           out 0x0f, r18   ; 15
  ba:   20 91 74 00     lds r18, 0x0074 ; 0x800074 <cmdRemaining>
  be:   30 b3           in  r19, 0x10   ; 16
  c0:   82 1b           sub r24, r18
  c2:   91 09           sbc r25, r1
  c4:   fc 01           movw    r30, r24
  c6:   e0 59           subi    r30, 0x90   ; 144
  c8:   ff 4f           sbci    r31, 0xFF   ; 255
  ca:   30 83           st  Z, r19
  cc:   8f ef           ldi r24, 0xFF   ; 255
  ce:   82 0f           add r24, r18
  d0:   80 93 74 00     sts 0x0074, r24 ; 0x800074 <cmdRemaining>
  d4:   81 11           cpse    r24, r1
  d6:   06 c0           rjmp    . 12        ; 0xe4 <__vector_14 0x70>
  d8:   8f ef           ldi r24, 0xFF   ; 255
  da:   8f b9           out 0x0f, r24   ; 15
  dc:   83 e0           ldi r24, 0x03   ; 3
  de:   19 c0           rjmp    . 50        ; 0x112 <__vector_14 0x9e>
  e0:   83 30           cpi r24, 0x03   ; 3
  e2:   d1 f0           breq    . 52        ; 0x118 <__vector_14 0xa4>
  e4:   80 e4           ldi r24, 0x40   ; 64
  e6:   8e b9           out 0x0e, r24   ; 14
  e8:   ff 91           pop r31
  ea:   ef 91           pop r30
  ec:   bf 91           pop r27
  ee:   af 91           pop r26
  f0:   9f 91           pop r25
  f2:   8f 91           pop r24
  f4:   7f 91           pop r23
  f6:   6f 91           pop r22
  f8:   5f 91           pop r21
  fa:   4f 91           pop r20
  fc:   3f 91           pop r19
  fe:   2f 91           pop r18
 100:   0f 90           pop r0
 102:   0f be           out 0x3f, r0    ; 63
 104:   0f 90           pop r0
 106:   1f 90           pop r1
 108:   18 95           reti
 10a:   80 b3           in  r24, 0x10   ; 16
 10c:   80 93 75 00     sts 0x0075, r24 ; 0x800075 <cmdReceived>
 110:   81 e0           ldi r24, 0x01   ; 1
 112:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 116:   e6 cf           rjmp    .-52        ; 0xe4 <__vector_14 0x70>
 118:   8f ef           ldi r24, 0xFF   ; 255
 11a:   8f b9           out 0x0f, r24   ; 15
 11c:   e3 cf           rjmp    .-58        ; 0xe4 <__vector_14 0x70>

0000011e <start_blink>:
 11e:   80 91 66 00     lds r24, 0x0066 ; 0x800066 <__data_end>
 122:   8b 30           cpi r24, 0x0B   ; 11
 124:   29 f0           breq    . 10        ; 0x130 <start_blink 0x12>
 126:   8a 30           cpi r24, 0x0A   ; 10
 128:   21 f4           brne    . 8         ; 0x132 <start_blink 0x14>
 12a:   8b e0           ldi r24, 0x0B   ; 11
 12c:   80 93 66 00     sts 0x0066, r24 ; 0x800066 <__data_end>
 130:   08 95           ret
 132:   80 91 67 00     lds r24, 0x0067 ; 0x800067 <i>
 136:   90 91 68 00     lds r25, 0x0068 ; 0x800068 <i 0x1>
 13a:   a0 91 69 00     lds r26, 0x0069 ; 0x800069 <i 0x2>
 13e:   b0 91 6a 00     lds r27, 0x006A ; 0x80006a <i 0x3>
 142:   01 96           adiw    r24, 0x01   ; 1
 144:   a1 1d           adc r26, r1
 146:   b1 1d           adc r27, r1
 148:   80 93 67 00     sts 0x0067, r24 ; 0x800067 <i>
 14c:   90 93 68 00     sts 0x0068, r25 ; 0x800068 <i 0x1>
 150:   a0 93 69 00     sts 0x0069, r26 ; 0x800069 <i 0x2>
 154:   b0 93 6a 00     sts 0x006A, r27 ; 0x80006a <i 0x3>
 158:   88 34           cpi r24, 0x48   ; 72
 15a:   9c 40           sbci    r25, 0x0C   ; 12
 15c:   a1 05           cpc r26, r1
 15e:   b1 05           cpc r27, r1
 160:   09 f4           brne    . 2         ; 0x164 <start_blink 0x46>
 162:   c4 9a           sbi 0x18, 4 ; 24
 164:   80 91 67 00     lds r24, 0x0067 ; 0x800067 <i>
 168:   90 91 68 00     lds r25, 0x0068 ; 0x800068 <i 0x1>
 16c:   a0 91 69 00     lds r26, 0x0069 ; 0x800069 <i 0x2>
 170:   b0 91 6a 00     lds r27, 0x006A ; 0x80006a <i 0x3>
 174:   81 15           cp  r24, r1
 176:   98 41           sbci    r25, 0x18   ; 24
 178:   a1 05           cpc r26, r1
 17a:   b1 05           cpc r27, r1
 17c:   c8 f2           brcs    .-78        ; 0x130 <start_blink 0x12>
 17e:   80 e0           ldi r24, 0x00   ; 0
 180:   68 df           rcall   .-304       ; 0x52 <led>
 182:   10 92 67 00     sts 0x0067, r1  ; 0x800067 <i>
 186:   10 92 68 00     sts 0x0068, r1  ; 0x800068 <i 0x1>
 18a:   10 92 69 00     sts 0x0069, r1  ; 0x800069 <i 0x2>
 18e:   10 92 6a 00     sts 0x006A, r1  ; 0x80006a <i 0x3>
 192:   80 91 66 00     lds r24, 0x0066 ; 0x800066 <__data_end>
 196:   8f 5f           subi    r24, 0xFF   ; 255
 198:   c9 cf           rjmp    .-110       ; 0x12c <start_blink 0xe>

0000019a <handleCmd>:
 19a:   80 91 76 00     lds r24, 0x0076 ; 0x800076 <cmdState>
 19e:   81 30           cpi r24, 0x01   ; 1
 1a0:   31 f5           brne    . 76        ; 0x1ee <handleCmd 0x54>
 1a2:   e0 91 75 00     lds r30, 0x0075 ; 0x800075 <cmdReceived>
 1a6:   f0 e0           ldi r31, 0x00   ; 0
 1a8:   ee 0f           add r30, r30
 1aa:   ff 1f           adc r31, r31
 1ac:   ee 59           subi    r30, 0x9E   ; 158
 1ae:   ff 4f           sbci    r31, 0xFF   ; 255
 1b0:   01 90           ld  r0, Z 
 1b2:   f0 81           ld  r31, Z
 1b4:   e0 2d           mov r30, r0
 1b6:   09 95           icall
 1b8:   90 93 61 00     sts 0x0061, r25 ; 0x800061 <__data_start 0x1>
 1bc:   80 93 60 00     sts 0x0060, r24 ; 0x800060 <__data_start>
 1c0:   80 91 74 00     lds r24, 0x0074 ; 0x800074 <cmdRemaining>
 1c4:   81 11           cpse    r24, r1
 1c6:   0f c0           rjmp    . 30        ; 0x1e6 <handleCmd 0x4c>
 1c8:   83 e0           ldi r24, 0x03   ; 3
 1ca:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 1ce:   e0 91 60 00     lds r30, 0x0060 ; 0x800060 <__data_start>
 1d2:   f0 91 61 00     lds r31, 0x0061 ; 0x800061 <__data_start 0x1>
 1d6:   09 95           icall
 1d8:   84 e1           ldi r24, 0x14   ; 20
 1da:   90 e0           ldi r25, 0x00   ; 0
 1dc:   90 93 61 00     sts 0x0061, r25 ; 0x800061 <__data_start 0x1>
 1e0:   80 93 60 00     sts 0x0060, r24 ; 0x800060 <__data_start>
 1e4:   06 c0           rjmp    . 12        ; 0x1f2 <handleCmd 0x58>
 1e6:   82 e0           ldi r24, 0x02   ; 2
 1e8:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 1ec:   08 95           ret
 1ee:   83 30           cpi r24, 0x03   ; 3
 1f0:   71 f3           breq    .-36        ; 0x1ce <handleCmd 0x34>
 1f2:   08 95           ret

000001f4 <main>:
 1f4:   18 ba           out 0x18, r1    ; 24
 1f6:   8a e1           ldi r24, 0x1A   ; 26
 1f8:   87 bb           out 0x17, r24   ; 23
 1fa:   88 e5           ldi r24, 0x58   ; 88
 1fc:   8d b9           out 0x0d, r24   ; 13
 1fe:   80 e4           ldi r24, 0x40   ; 64
 200:   8e b9           out 0x0e, r24   ; 14
 202:   85 e2           ldi r24, 0x25   ; 37
 204:   8f b9           out 0x0f, r24   ; 15
 206:   78 94           sei
 208:   c4 9a           sbi 0x18, 4 ; 24
 20a:   c7 df           rcall   .-114       ; 0x19a <handleCmd>
 20c:   88 df           rcall   .-240       ; 0x11e <start_blink>
 20e:   fd cf           rjmp    .-6         ; 0x20a <main 0x16>
  

avr-objdump failing.elf

 
Watchdog.elf:     format de fichier elf32-avr


Déassemblage de la section .text :

00000000 <__do_copy_data>:
   0:   10 e0           ldi r17, 0x00   ; 0
   2:   a0 e6           ldi r26, 0x60   ; 96
   4:   b0 e0           ldi r27, 0x00   ; 0
   6:   e2 ec           ldi r30, 0xC2   ; 194
   8:   f2 e0           ldi r31, 0x02   ; 2
   a:   03 c0           rjmp    . 6         ; 0x12 <__zero_reg__ 0x11>
   c:   c8 95           lpm
   e:   31 96           adiw    r30, 0x01   ; 1
  10:   0d 92           st  X , r0
  12:   a6 36           cpi r26, 0x66   ; 102
  14:   b1 07           cpc r27, r17
  16:   d1 f7           brne    .-12        ; 0xc <__zero_reg__ 0xb>

00000018 <__do_clear_bss>:
  18:   20 e0           ldi r18, 0x00   ; 0
  1a:   a6 e6           ldi r26, 0x66   ; 102
  1c:   b0 e0           ldi r27, 0x00   ; 0
  1e:   01 c0           rjmp    . 2         ; 0x22 <.do_clear_bss_start>

00000020 <.do_clear_bss_loop>:
  20:   1d 92           st  X , r1

00000022 <.do_clear_bss_start>:
  22:   a7 37           cpi r26, 0x77   ; 119
  24:   b2 07           cpc r27, r18
  26:   e1 f7           brne    .-8         ; 0x20 <.do_clear_bss_loop>

00000028 <nop>:
  28:   08 95           ret

0000002a <CmdResetTimer>:
  2a:   84 e1           ldi r24, 0x14   ; 20
  2c:   90 e0           ldi r25, 0x00   ; 0
  2e:   08 95           ret

00000030 <CmdEndEnableWD>:
  30:   80 91 73 00     lds r24, 0x0073 ; 0x800073 <cmdIn 0x3>
  34:   80 93 6b 00     sts 0x006B, r24 ; 0x80006b <wdEnabled>
  38:   08 95           ret

0000003a <CmdEnableWD>:
  3a:   80 91 6b 00     lds r24, 0x006B ; 0x80006b <wdEnabled>
  3e:   80 93 6f 00     sts 0x006F, r24 ; 0x80006f <cmdOut 0x3>
  42:   88 e1           ldi r24, 0x18   ; 24
  44:   90 e0           ldi r25, 0x00   ; 0
  46:   08 95           ret

00000048 <ledT>:
  48:   88 b3           in  r24, 0x18   ; 24
  4a:   90 e1           ldi r25, 0x10   ; 16
  4c:   89 27           eor r24, r25
  4e:   88 bb           out 0x18, r24   ; 24
  50:   08 95           ret

00000052 <led>:
  52:   88 23           and r24, r24
  54:   11 f0           breq    . 4         ; 0x5a <led 0x8>
  56:   c4 9a           sbi 0x18, 4 ; 24
  58:   08 95           ret
  5a:   c4 98           cbi 0x18, 4 ; 24
  5c:   08 95           ret

0000005e <dbugT>:
  5e:   88 b3           in  r24, 0x18   ; 24
  60:   98 e0           ldi r25, 0x08   ; 8
  62:   89 27           eor r24, r25
  64:   88 bb           out 0x18, r24   ; 24
  66:   08 95           ret

00000068 <dbug>:
  68:   88 23           and r24, r24
  6a:   11 f0           breq    . 4         ; 0x70 <dbug 0x8>
  6c:   c3 9a           sbi 0x18, 3 ; 24
  6e:   08 95           ret
  70:   c3 98           cbi 0x18, 3 ; 24
  72:   08 95           ret

00000074 <__vector_14>:
  74:   1f 92           push    r1
  76:   0f 92           push    r0
  78:   0f b6           in  r0, 0x3f    ; 63
  7a:   0f 92           push    r0
  7c:   11 24           eor r1, r1
  7e:   2f 93           push    r18
  80:   3f 93           push    r19
  82:   4f 93           push    r20
  84:   5f 93           push    r21
  86:   6f 93           push    r22
  88:   7f 93           push    r23
  8a:   8f 93           push    r24
  8c:   9f 93           push    r25
  8e:   af 93           push    r26
  90:   bf 93           push    r27
  92:   ef 93           push    r30
  94:   ff 93           push    r31
  96:   d8 df           rcall   .-80        ; 0x48 <ledT>
  98:   80 91 76 00     lds r24, 0x0076 ; 0x800076 <cmdState>
  9c:   83 30           cpi r24, 0x03   ; 3
  9e:   00 f5           brcc    . 64        ; 0xe0 <__vector_14 0x6c>
  a0:   88 23           and r24, r24
  a2:   99 f1           breq    . 102       ; 0x10a <__vector_14 0x96>
  a4:   20 91 74 00     lds r18, 0x0074 ; 0x800074 <cmdRemaining>
  a8:   84 e0           ldi r24, 0x04   ; 4
  aa:   90 e0           ldi r25, 0x00   ; 0
  ac:   fc 01           movw    r30, r24
  ae:   e2 1b           sub r30, r18
  b0:   f1 09           sbc r31, r1
  b2:   e4 59           subi    r30, 0x94   ; 148
  b4:   ff 4f           sbci    r31, 0xFF   ; 255
  b6:   20 81           ld  r18, Z
  b8:   2f b9           out 0x0f, r18   ; 15
  ba:   20 91 74 00     lds r18, 0x0074 ; 0x800074 <cmdRemaining>
  be:   30 b3           in  r19, 0x10   ; 16
  c0:   82 1b           sub r24, r18
  c2:   91 09           sbc r25, r1
  c4:   fc 01           movw    r30, r24
  c6:   e0 59           subi    r30, 0x90   ; 144
  c8:   ff 4f           sbci    r31, 0xFF   ; 255
  ca:   30 83           st  Z, r19
  cc:   8f ef           ldi r24, 0xFF   ; 255
  ce:   82 0f           add r24, r18
  d0:   80 93 74 00     sts 0x0074, r24 ; 0x800074 <cmdRemaining>
  d4:   81 11           cpse    r24, r1
  d6:   06 c0           rjmp    . 12        ; 0xe4 <__vector_14 0x70>
  d8:   8f ef           ldi r24, 0xFF   ; 255
  da:   8f b9           out 0x0f, r24   ; 15
  dc:   83 e0           ldi r24, 0x03   ; 3
  de:   19 c0           rjmp    . 50        ; 0x112 <__vector_14 0x9e>
  e0:   83 30           cpi r24, 0x03   ; 3
  e2:   d1 f0           breq    . 52        ; 0x118 <__vector_14 0xa4>
  e4:   80 e4           ldi r24, 0x40   ; 64
  e6:   8e b9           out 0x0e, r24   ; 14
  e8:   ff 91           pop r31
  ea:   ef 91           pop r30
  ec:   bf 91           pop r27
  ee:   af 91           pop r26
  f0:   9f 91           pop r25
  f2:   8f 91           pop r24
  f4:   7f 91           pop r23
  f6:   6f 91           pop r22
  f8:   5f 91           pop r21
  fa:   4f 91           pop r20
  fc:   3f 91           pop r19
  fe:   2f 91           pop r18
 100:   0f 90           pop r0
 102:   0f be           out 0x3f, r0    ; 63
 104:   0f 90           pop r0
 106:   1f 90           pop r1
 108:   18 95           reti
 10a:   80 b3           in  r24, 0x10   ; 16
 10c:   80 93 75 00     sts 0x0075, r24 ; 0x800075 <cmdReceived>
 110:   81 e0           ldi r24, 0x01   ; 1
 112:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 116:   e6 cf           rjmp    .-52        ; 0xe4 <__vector_14 0x70>
 118:   8f ef           ldi r24, 0xFF   ; 255
 11a:   8f b9           out 0x0f, r24   ; 15
 11c:   e3 cf           rjmp    .-58        ; 0xe4 <__vector_14 0x70>

0000011e <debug>:
 11e:   ef 92           push    r14
 120:   ff 92           push    r15
 122:   0f 93           push    r16
 124:   1f 93           push    r17
 126:   cf 93           push    r28
 128:   df 93           push    r29
 12a:   ec 01           movw    r28, r24
 12c:   16 2f           mov r17, r22
 12e:   90 e0           ldi r25, 0x00   ; 0
 130:   80 e0           ldi r24, 0x00   ; 0
 132:   c3 9a           sbi 0x18, 3 ; 24
 134:   01 96           adiw    r24, 0x01   ; 1
 136:   81 15           cp  r24, r1
 138:   24 e0           ldi r18, 0x04   ; 4
 13a:   92 07           cpc r25, r18
 13c:   d1 f7           brne    .-12        ; 0x132 <debug 0x14>
 13e:   f1 2c           mov r15, r1
 140:   e1 2c           mov r14, r1
 142:   80 e0           ldi r24, 0x00   ; 0
 144:   91 df           rcall   .-222       ; 0x68 <dbug>
 146:   8f ef           ldi r24, 0xFF   ; 255
 148:   e8 1a           sub r14, r24
 14a:   f8 0a           sbc r15, r24
 14c:   e1 14           cp  r14, r1
 14e:   24 e0           ldi r18, 0x04   ; 4
 150:   f2 06           cpc r15, r18
 152:   b9 f7           brne    .-18        ; 0x142 <debug 0x24>
 154:   11 11           cpse    r17, r1
 156:   07 c0           rjmp    . 14        ; 0x166 <debug 0x48>
 158:   df 91           pop r29
 15a:   cf 91           pop r28
 15c:   1f 91           pop r17
 15e:   0f 91           pop r16
 160:   ff 90           pop r15
 162:   ef 90           pop r14
 164:   08 95           ret
 166:   08 e0           ldi r16, 0x08   ; 8
 168:   f1 2c           mov r15, r1
 16a:   e1 2c           mov r14, r1
 16c:   88 81           ld  r24, Y
 16e:   88 1f           adc r24, r24
 170:   88 27           eor r24, r24
 172:   88 1f           adc r24, r24
 174:   79 df           rcall   .-270       ; 0x68 <dbug>
 176:   8f ef           ldi r24, 0xFF   ; 255
 178:   e8 1a           sub r14, r24
 17a:   f8 0a           sbc r15, r24
 17c:   e1 14           cp  r14, r1
 17e:   24 e1           ldi r18, 0x14   ; 20
 180:   f2 06           cpc r15, r18
 182:   a1 f7           brne    .-24        ; 0x16c <debug 0x4e>
 184:   88 81           ld  r24, Y
 186:   88 0f           add r24, r24
 188:   88 83           st  Y, r24
 18a:   f1 2c           mov r15, r1
 18c:   e1 2c           mov r14, r1
 18e:   80 e0           ldi r24, 0x00   ; 0
 190:   6b df           rcall   .-298       ; 0x68 <dbug>
 192:   8f ef           ldi r24, 0xFF   ; 255
 194:   e8 1a           sub r14, r24
 196:   f8 0a           sbc r15, r24
 198:   e1 14           cp  r14, r1
 19a:   24 e0           ldi r18, 0x04   ; 4
 19c:   f2 06           cpc r15, r18
 19e:   b9 f7           brne    .-18        ; 0x18e <debug 0x70>
 1a0:   90 e0           ldi r25, 0x00   ; 0
 1a2:   80 e0           ldi r24, 0x00   ; 0
 1a4:   c3 9a           sbi 0x18, 3 ; 24
 1a6:   01 96           adiw    r24, 0x01   ; 1
 1a8:   81 15           cp  r24, r1
 1aa:   24 e0           ldi r18, 0x04   ; 4
 1ac:   92 07           cpc r25, r18
 1ae:   d1 f7           brne    .-12        ; 0x1a4 <debug 0x86>
 1b0:   f1 2c           mov r15, r1
 1b2:   e1 2c           mov r14, r1
 1b4:   80 e0           ldi r24, 0x00   ; 0
 1b6:   58 df           rcall   .-336       ; 0x68 <dbug>
 1b8:   8f ef           ldi r24, 0xFF   ; 255
 1ba:   e8 1a           sub r14, r24
 1bc:   f8 0a           sbc r15, r24
 1be:   e1 14           cp  r14, r1
 1c0:   24 e0           ldi r18, 0x04   ; 4
 1c2:   f2 06           cpc r15, r18
 1c4:   b9 f7           brne    .-18        ; 0x1b4 <debug 0x96>
 1c6:   01 50           subi    r16, 0x01   ; 1
 1c8:   79 f6           brne    .-98        ; 0x168 <debug 0x4a>
 1ca:   21 96           adiw    r28, 0x01   ; 1
 1cc:   11 50           subi    r17, 0x01   ; 1
 1ce:   c2 cf           rjmp    .-124       ; 0x154 <debug 0x36>

000001d0 <start_blink>:
 1d0:   80 91 66 00     lds r24, 0x0066 ; 0x800066 <__data_end>
 1d4:   8b 30           cpi r24, 0x0B   ; 11
 1d6:   29 f0           breq    . 10        ; 0x1e2 <start_blink 0x12>
 1d8:   8a 30           cpi r24, 0x0A   ; 10
 1da:   21 f4           brne    . 8         ; 0x1e4 <start_blink 0x14>
 1dc:   8b e0           ldi r24, 0x0B   ; 11
 1de:   80 93 66 00     sts 0x0066, r24 ; 0x800066 <__data_end>
 1e2:   08 95           ret
 1e4:   80 91 67 00     lds r24, 0x0067 ; 0x800067 <i>
 1e8:   90 91 68 00     lds r25, 0x0068 ; 0x800068 <i 0x1>
 1ec:   a0 91 69 00     lds r26, 0x0069 ; 0x800069 <i 0x2>
 1f0:   b0 91 6a 00     lds r27, 0x006A ; 0x80006a <i 0x3>
 1f4:   01 96           adiw    r24, 0x01   ; 1
 1f6:   a1 1d           adc r26, r1
 1f8:   b1 1d           adc r27, r1
 1fa:   80 93 67 00     sts 0x0067, r24 ; 0x800067 <i>
 1fe:   90 93 68 00     sts 0x0068, r25 ; 0x800068 <i 0x1>
 202:   a0 93 69 00     sts 0x0069, r26 ; 0x800069 <i 0x2>
 206:   b0 93 6a 00     sts 0x006A, r27 ; 0x80006a <i 0x3>
 20a:   88 34           cpi r24, 0x48   ; 72
 20c:   9c 40           sbci    r25, 0x0C   ; 12
 20e:   a1 05           cpc r26, r1
 210:   b1 05           cpc r27, r1
 212:   09 f4           brne    . 2         ; 0x216 <start_blink 0x46>
 214:   c4 9a           sbi 0x18, 4 ; 24
 216:   80 91 67 00     lds r24, 0x0067 ; 0x800067 <i>
 21a:   90 91 68 00     lds r25, 0x0068 ; 0x800068 <i 0x1>
 21e:   a0 91 69 00     lds r26, 0x0069 ; 0x800069 <i 0x2>
 222:   b0 91 6a 00     lds r27, 0x006A ; 0x80006a <i 0x3>
 226:   81 15           cp  r24, r1
 228:   98 41           sbci    r25, 0x18   ; 24
 22a:   a1 05           cpc r26, r1
 22c:   b1 05           cpc r27, r1
 22e:   c8 f2           brcs    .-78        ; 0x1e2 <start_blink 0x12>
 230:   80 e0           ldi r24, 0x00   ; 0
 232:   0f df           rcall   .-482       ; 0x52 <led>
 234:   10 92 67 00     sts 0x0067, r1  ; 0x800067 <i>
 238:   10 92 68 00     sts 0x0068, r1  ; 0x800068 <i 0x1>
 23c:   10 92 69 00     sts 0x0069, r1  ; 0x800069 <i 0x2>
 240:   10 92 6a 00     sts 0x006A, r1  ; 0x80006a <i 0x3>
 244:   80 91 66 00     lds r24, 0x0066 ; 0x800066 <__data_end>
 248:   8f 5f           subi    r24, 0xFF   ; 255
 24a:   c9 cf           rjmp    .-110       ; 0x1de <start_blink 0xe>

0000024c <handleCmd>:
 24c:   80 91 76 00     lds r24, 0x0076 ; 0x800076 <cmdState>
 250:   81 30           cpi r24, 0x01   ; 1
 252:   31 f5           brne    . 76        ; 0x2a0 <handleCmd 0x54>
 254:   e0 91 75 00     lds r30, 0x0075 ; 0x800075 <cmdReceived>
 258:   f0 e0           ldi r31, 0x00   ; 0
 25a:   ee 0f           add r30, r30
 25c:   ff 1f           adc r31, r31
 25e:   ee 59           subi    r30, 0x9E   ; 158
 260:   ff 4f           sbci    r31, 0xFF   ; 255
 262:   01 90           ld  r0, Z 
 264:   f0 81           ld  r31, Z
 266:   e0 2d           mov r30, r0
 268:   09 95           icall
 26a:   90 93 61 00     sts 0x0061, r25 ; 0x800061 <__data_start 0x1>
 26e:   80 93 60 00     sts 0x0060, r24 ; 0x800060 <__data_start>
 272:   80 91 74 00     lds r24, 0x0074 ; 0x800074 <cmdRemaining>
 276:   81 11           cpse    r24, r1
 278:   0f c0           rjmp    . 30        ; 0x298 <handleCmd 0x4c>
 27a:   83 e0           ldi r24, 0x03   ; 3
 27c:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 280:   e0 91 60 00     lds r30, 0x0060 ; 0x800060 <__data_start>
 284:   f0 91 61 00     lds r31, 0x0061 ; 0x800061 <__data_start 0x1>
 288:   09 95           icall
 28a:   84 e1           ldi r24, 0x14   ; 20
 28c:   90 e0           ldi r25, 0x00   ; 0
 28e:   90 93 61 00     sts 0x0061, r25 ; 0x800061 <__data_start 0x1>
 292:   80 93 60 00     sts 0x0060, r24 ; 0x800060 <__data_start>
 296:   06 c0           rjmp    . 12        ; 0x2a4 <handleCmd 0x58>
 298:   82 e0           ldi r24, 0x02   ; 2
 29a:   80 93 76 00     sts 0x0076, r24 ; 0x800076 <cmdState>
 29e:   08 95           ret
 2a0:   83 30           cpi r24, 0x03   ; 3
 2a2:   71 f3           breq    .-36        ; 0x280 <handleCmd 0x34>
 2a4:   08 95           ret

000002a6 <main>:
 2a6:   18 ba           out 0x18, r1    ; 24
 2a8:   8a e1           ldi r24, 0x1A   ; 26
 2aa:   87 bb           out 0x17, r24   ; 23
 2ac:   88 e5           ldi r24, 0x58   ; 88
 2ae:   8d b9           out 0x0d, r24   ; 13
 2b0:   80 e4           ldi r24, 0x40   ; 64
 2b2:   8e b9           out 0x0e, r24   ; 14
 2b4:   85 e2           ldi r24, 0x25   ; 37
 2b6:   8f b9           out 0x0f, r24   ; 15
 2b8:   78 94           sei
 2ba:   c4 9a           sbi 0x18, 4 ; 24
 2bc:   c7 df           rcall   .-114       ; 0x24c <handleCmd>
 2be:   88 df           rcall   .-240       ; 0x1d0 <start_blink>
 2c0:   fd cf           rjmp    .-6         ; 0x2bc <main 0x16>
  

Комментарии:

1. Вы уверены, что у вас не заканчивается flash? Можете ли вы обновить с помощью нерабочего источника? Вывод компилятора при компиляции нерабочего исходного кода? Вывод avr-dump ?

2. Я больше не уверен… но avrdude сообщает мне, что ему удалось проверить все байты… avr-gcc не сообщает мне ни о предупреждении, ни об ошибке (-Wall, -pdentic). Извините за опечатку, это avr--objdump

3. Примечание: Я также пробовал с несколькими чипами (хотя все ATtiny25V), и все они ведут себя одинаково

4. Можете ли вы опубликовать нерабочий код? Например. здесь я вижу, что ваш код начинается с 0x000 без таблицы векторов прерываний, поэтому, если вы включаете прерывания, вы, вероятно, получите нежелательное поведение.

5. Я вижу инструкцию «sei» при разборке, но там нет векторной таблицы. Неудивительный код не работает