ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1470507 Топик полностью
3m (17.10.2024 12:57, просмотров: 75) ответил klen на в elf когда его линкуют - всовывается отладочная инфрпмация. из нее gdb вытягивает адреса и типы символов и потом может все дебагить. если из elf сделан бинарник - это значит из elf выдрат раздел бинарных данных и сохранен отдельным файлом. если из bin -> elf то можно получить elf но без отладочной информации... ее уже к этому моменту нет :(. Но скормить gdb его можно и тогда можно будет прошить и отлажтвать в asm. Если вдруг есть информация об адресе и типе объекта по
После линковки получается ch.elf, потом из него делается ch.bin, далее моя утилита в конец bin кое что добавляет и получаю ch.crc.bin. Теперь мне надо прошить модифицированный бинарник а отладочные символы берутся из исходного ch.elf - в gdb можно подсунуть отдельный файл с символами. Сейчас делается так: 
# Custom rules
# Program
encrypt: $(BUILDDIR)/$(PROJECT).bin
 @echo "encrypt binary file"
 ./tools/fwencryption.exe -i $(BUILDDIR)/$(PROJECT).bin -o $(BUILDDIR)/$(PROJECT).crc.bin
 Jflash.exe -openprj ./stm32g031f8prj.jflash -min -open $(BUILDDIR)/$(PROJECT).crc.bin,08005000 -connect -erasesectors -programverify -exit
#
# Custom rules

Такое решение работает но дальше надо уметь шить через GDB Server запущенный на удаленной машине. То есть из $(BUILDDIR)/$(PROJECT).crc.bin создать

$(BUILDDIR)/$(PROJECT).crc.elf как то так:

# $(CP) --input-target=binary --output-target=elf32-little $(BUILDDIR)/$(PROJECT).crc.bin $(BUILDDIR)/$(PROJECT).crc.elf
# $(CP) --input-target=elf32-little --output-target=elf32-little --change-section-address .data=0x08005000 --set-section-flags .data=CONTENTS,ALLOC,LOAD,READONLY,CODE $(BUILDDIR)/$(PROJECT).crc.elf
# $(CP) --input-target=elf32-little --output-target=elf32-little --rename-section .data=.text $(BUILDDIR)/$(PROJECT).crc.elf

CP = objcopy

Закомментировано потому что файл создается но ни Jflash ни Gdb server в нем ничего не видят.