當我在一個ARM9處理器的基本C程序中定義全局變量時,我有問題。我使用的是EABI GNU編譯器,而從12KB精靈生成的二進制文件是4GB!我認爲這個問題與我的分散文件有關,但我無法繞開它。巨大的二進制文件與objcopy
我ROM的256KB(基地址0xFFFF0000地址)和RAM 32KBs(基本爲0x01000000)
SECTIONS {
. = 0xFFFF0000;
.text : {
* (vectors);
* (.text);
}
.rodata : { *(.rodata) }
. = 0x01000000;
sbss = .;
.data : { *(.data) }
.bss : { *(.bss) }
ebss = .;
bssSize = ebss - sbss;
}
而且我的程序如下:
int a=10;
int main() {
int b=5;
b = (a>b)? a : b;
return b;
};
如果我宣佈一個作爲一個局部變量,即沒有.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
臂-NONE-EABI-GCC -mcpu = ARM926EJ-S -Wall -nostartfiles -Wall 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 2011-03-08 16:16:01
它的364字節,如果我刪除RAM地址(0x01000000) – Damn 2011-03-16 15:03:18