Промежуточная сборка и источник для avr-objdump

Попытка заставить avr-objdump создать список, который перемежает сборку с исходным кодом. Я пробовал кучу аргументов отладки в разных конфигурациях, но я не могу их получить. Лучшее, что я мог сделать, это заставить его перемежать объект с номерами строк из сборки (avr-objdump -lS spi.o)

Оригинальный Makefile

Вот мой текущий Makefile:

PREFIX=avr-
CC=${PREFIX}gcc
OBJCOPY=${PREFIX}objcopy

BIN=knightrider
MCU=attiny85
OBJS=../src/tinySPI.o src/knightrider.o

PROG?=atmelice_isp
PORT?=usb

CFLAGS=-g -mmcu=${MCU} -ffunction-sections -fdata-sections
LDFLAGS=-mmcu=${MCU} -Wl,--gc-sections

${BIN}.hex: ${BIN}.elf
    @mkdir -p bin
    ${OBJCOPY} -O ihex -R .eeprom build/$< bin/[email protected]

${BIN}.elf: ${OBJS}
    @mkdir -p build
    ${CC} ${LDFLAGS} -o build/[email protected] $?

install: ${BIN}.hex
    avrdude -c ${PROG} -P ${PORT} -p ${MCU} -U flash:w:${BIN}.hex:i -qq

clean:
    rm -f build/*
    rm -f bin/*

fuses:
    avrdude -c ${PROG} -P ${PORT} -p ${MCU} -U lfuse:w:0x62:m -U hfuse:w:0xDF:m -U efuse:w:0xFF:i -qq

Что мне нужно изменить, чтобы запустить avr-objdump и получить чередуемый список .o и его соответствующий .c (например, spi.o и spi.c)?

2 голоса | спросил Ashlyn Black 4 FriEurope/Moscow2015-12-04T19:19:27+03:00Europe/Moscow12bEurope/MoscowFri, 04 Dec 2015 19:19:27 +0300 2015, 19:19:27

1 ответ


3

Сначала убедитесь, что вы добавили -g ко всем вашим командам компиляции.

Затем вы можете запустить avr-objdump -S build/spi.elf (например).

Также я вижу, что вы не указали определение MCU в своей команде связи. Без этого он не будет связываться в правильных процедурах запуска C, и ваша программа, скорее всего, не будет запущена.

Вот файл makefile, который я использую:

PREFIX=avr-
CC=${PREFIX}gcc
CXX=${PREFIX}g++
LD=${PREFIX}ld
AS=${PREFIX}as
OBJCOPY=${PREFIX}objcopy
OBJDUMP=${PREFIX}objdump

BIN=blink
MCU=atmega328p
OBJS=blink.o

CFLAGS=-g -mmcu=${MCU} -ffunction-sections -fdata-sections
CXXFLAGS=-g -mmcu=${MCU} -ffunction-sections -fdata-sections -fno-exceptions
LDFLAGS=-mmcu=${MCU} -Wl,--gc-sections

${BIN}.hex: ${BIN}.elf
    ${OBJCOPY} -O ihex -R .eeprom $< [email protected]

${BIN}.elf: ${OBJS}
    ${CC} ${LDFLAGS} -o [email protected] $? 
    ${OBJDUMP} -S [email protected] > ${BIN}.dis

install: ${BIN}.hex
    avrdude -C ./avrdude.conf -c usbasp -p ${MCU} -U flash:w:${BIN}.hex
 -qq

clean:
    rm -f *.o *.elf *.hex

fuses:
    avrdude  -c usbasp -p ${MCU} -C avrdude.conf -U lfuse:w:0xff:m -U h
fuse:w:0xd6:m -U efuse:w:0x05:m -qq
ответил Majenko 4 FriEurope/Moscow2015-12-04T22:07:45+03:00Europe/Moscow12bEurope/MoscowFri, 04 Dec 2015 22:07:45 +0300 2015, 22:07:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132