ARM9 프로세서의 기본 C 프로그램에서 전역 변수를 정의 할 때 문제가 발생합니다. 나는 EABI GNU 컴파일러를 사용 중이며 12KB 엘프에서 생성 된 바이너리는 4GB입니다! 나는 문제가 내 분산 파일과 함께 있다고 생각하지만, 내 머리를 쓰는 데 문제가있다.objcopy가있는 거대한 이진 파일
int a=10;
int main() {
int b=5;
b = (a>b)? a : b;
return b;
};
내가 로를 선언하면 다음과 같이
나는 ROM 256의 (기본 주소 0xFFFF0000)이 있고 RAM의 32KBs (기본 0x01000000)
SECTIONS {
. = 0xFFFF0000;
.text : {
* (vectors);
* (.text);
}
.rodata : { *(.rodata) }
. = 0x01000000;
sbss = .;
.data : { *(.data) }
.bss : { *(.bss) }
ebss = .;
bssSize = ebss - sbss;
}
그리고 내 프로그램입니다 지역 변수, 즉 .data 섹션이 없다면 모든 것이 작동합니다. 괜찮습니다. 어떤 도움이라도 대단히 감사합니다.
--16th 월 2011--
사람이 임 갈 곳없는 등 ...
내 부팅, 컴파일 명령 objcopy의 명령
아래에 붙여 넣은 설명서, 포럼을 읽고,이 작업에 도움을 줄 수 있습니다.section "vectors" reset: b start undef: b undef swi: b swi pabt: b pabt dabt: b dabt nop irq: b irq fiq: b fiq
.text
start:
ldr sp, =0x01006000
bl main
stop: b stop
아암 그럼에도 EABI-GCC -mcpu = ARM926EJ-S - 벽 -nostartfiles - 벽을 main.c boot.s -o main.elf -T \ scatter_f ile
arm-none-eabi-objcopy ./main.elf --output-target = binary ./main.bin
arm-none-eabi-objdump ./main.elf --disassemble-all> ./main .dis
줄을 제거하면 파일이 얼마나 큽니까? = 0x01000000; ' ? – fazo
RAM 주소 (0x01000000)를 제거하면 364 바이트가됩니다. – Damn