#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» при разборке, но там нет векторной таблицы. Неудивительный код не работает