나는 Microblaze에 대해 주소 0x00000000 (즉, 리셋시 실행되도록)에로드하려는 어셈블러가 있습니다.링크에서 파일 오프셋 제어
나는 (내가 생각하는)이 작업을 수행해야 링커 스크립트가 있습니다
SECTIONS
{
ENTRY(_start)
. = 0x0000;
.vectors.reset : { *(.vectors.reset) }
. = 0x0008;
.vectors.sw_exception : { *(.vectors.sw_exception) }
. = 0x0010;
.vectors.interrupt : { *(.vectors.interrupt) }
. = 0x0018;
.vectors.hw_exception : { *(.vectors.hw_exception) }
. = 0x100;
.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) }
}
을하지만 코드를 컴파일 할 때이 0x1000 인에 의해 상쇄 될 것 같다
objdump -h startup.MICROBLAZE.elf
startup.MICROBLAZE.elf: file format elf32-big
Sections:
Idx Name Size VMA LMA File off Algn
0 .vectors.reset 00000008 00000000 00000000 00001000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .vectors.sw_exception 00000008 00000008 00000008 00001008 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .vectors.interrupt 00000008 00000010 00000010 00001010 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .vectors.hw_exception 00000008 00000018 00000018 00001018 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
4 .text 00000020 00000100 00000100 00001100 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
어디 오프셋 않습니다 나와서 어떻게 억누를 수 있습니까?
편집 : 0x1000 오프셋은 컴파일 된 파일/개체의 코드 섹션의 실제 오프셋입니다 - 맞습니까?
파일 오프셋을 제어하는 방법이 있습니까? – smwikipedia
ELF 파일의 오프셋을 제어하려는 경우 문제 해결의 잘못된 경로에있을 가능성이 큽니다. 좀 더 자주 원시/포맷되지 않은 바이너리 파일의 특정 오프셋에서 특정 ELF 섹션을 가질 필요가 있으며, ELF 섹션을 일반 형식의 바이너리 파일을 포함한 다른 형식으로 추출 할 수있는'objcopy' 도구를 사용해야합니다. – dkz