У меня проблемы с определением глобальных переменных в базовой программе на Си для процессора ARM9. Я использую EABI GNU компилятор, и двоичный файл, сгенерированный из эльфа 12 КБ, составляет 4 ГБ! Я предполагаю, что проблема связана с моим разбросанным файлом, но у меня возникают проблемы с его обработкой.
У меня 256 КБ ПЗУ (базовый адрес 0xFFFF0000) и 32 КБ ОЗУ (база 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;
};
Если я объявлю a как локальную переменную, то есть раздела .data нет, тогда все будет работать.
хорошо. Любая помощь с благодарностью.
- 16 марта 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
arm-none-eabi-gcc -mcpu = arm926ej-s -Wall -nostartfiles -Wall main.c boot.s -o main.elf -T \ scatter_file
arm-none-eabi-objcopy ./main.elf --output-target = binary ./main.bin
arm-none-eabi-objdump ./main.elf --disassemble-all> ./main.dis