ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
52722 Топик полностью
ReAl (02.03.2006 13:33, просмотров: 1) ответил MDenis на Т.е. суммарного листинга нет в принципе?
У gcc линкуется сначала в формат elf, потом из него выковыирвается hex для флеша и eeprom Если задан ключ отладочной информации -g то в этот elf летит полная информация о номерах строк, именах файлов, ... В результате дамп elf-файла (с учётом заглядывания avr-objdump в исходные файлы) - это полный-преполный листинг со всеми твоими комментариями и вместе с подлинкованными библиотеками, запускалкой и т.д. Где-то так:
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 e7 0a 	jmp	0x15ce <__init>
       4:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
       8:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
       c:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      10:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      14:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      18:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      1c:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      20:	0c 94 04 0b 	jmp	0x1608 <__bad_interrupt>
      24:	0c 94 f7 19 	jmp	0x33ee <__vector_9>
      28:	0c 94 2a 19 	jmp	0x3254 <__vector_10>

 :
 :

00001722 :

static FILE console_file = FDEV_SETUP_STREAM(console_putc, console_getc, _FDEV_SETUP_RW);
#define fconsole (&console_file)

void dbg_printf_P(dbg_level lev, const prog_char *fmt, ...)
{
    1722:	cf 93       	push	r28
    1724:	df 93       	push	r29
    1726:	cd b7       	in	r28, 0x3d	; 61
    1728:	de b7       	in	r29, 0x3e	; 62
    172a:	9d 81       	ldd	r25, Y+5	; 0x05
    172c:	6e 81       	ldd	r22, Y+6	; 0x06
    172e:	7f 81       	ldd	r23, Y+7	; 0x07
	if (lev <= curr_lev) {
    1730:	80 91 0e 01 	lds	r24, 0x010E
    1734:	89 17       	cp	r24, r25
    1736:	38 f0       	brcs	.+14     	; 0x1746 
		va_list va;
		va_start(va, fmt);
		vfprintf_P( fconsole, fmt, va);
    1738:	ae 01       	movw	r20, r28
    173a:	48 5f       	subi	r20, 0xF8	; 248
    173c:	5f 4f       	sbci	r21, 0xFF	; 255
    173e:	80 e0       	ldi	r24, 0x00	; 0
    1740:	91 e0       	ldi	r25, 0x01	; 1
    1742:	0e 94 c7 23 	call	0x478e 
    1746:	df 91       	pop	r29
    1748:	cf 91       	pop	r28
    174a:	08 95       	ret

0000174c :
		va_end(va);
	}
}

uint16_t get_tcnt3(void)
{
	uint16_t temp;
	ATOMIC_CODE( temp = TCNT3; );
    174c:	2f b7       	in	r18, 0x3f	; 63
    174e:	f8 94       	cli
    1750:	80 91 88 00 	lds	r24, 0x0088
    1754:	90 91 89 00 	lds	r25, 0x0089
    1758:	2f bf       	out	0x3f, r18	; 63
    175a:	08 95       	ret

0000175c :
	return temp;
}

#define CPU_TICK_SCALE ((uint32_t)(((1000000UL * 256) + XTAL_FREQ_HZ / 2) / XTAL_FREQ_HZ))

void report_ex_time( const prog_char *header, uint32_t cpu_ticks)
{
    175c:	0f 93       	push	r16
    175e:	1f 93       	push	r17
    1760:	cf 93       	push	r28
    1762:	df 93       	push	r29
    1764:	8c 01       	movw	r16, r24
    1766:	eb 01       	movw	r28, r22
	uint32_t ex_time = (cpu_ticks * CPU_TICK_SCALE + 128) / 256;	// CPU ticks to us
    1768:	ca 01       	movw	r24, r20
    176a:	b9 01       	movw	r22, r18
    176c:	23 e2       	ldi	r18, 0x23	; 35
    176e:	30 e0       	ldi	r19, 0x00	; 0
    1770:	40 e0       	ldi	r20, 0x00	; 0
    1772:	50 e0       	ldi	r21, 0x00	; 0
    1774:	0e 94 0f 27 	call	0x4e1e <__mulsi3>
    1778:	dc 01       	movw	r26, r24
    177a:	cb 01       	movw	r24, r22
p.s. про "прикрутить JMP на обработчик прерывания куда надо" в другой ветке читал?