nand启动文件大于4KB,怎么解决

2019-07-16 10:46发布

这两天在学习2440做nand flash实验的时候遇到了一个问题,工程的文件包括head.s,init.c,nand.c,makefie,nand.lds,在linux下编译得到head.o,init.o,nand.o,main.o,文件大小如下:
head.o   812bytes
init.o   980bytes
nand.o   3.65KB
main.o   920bytes
nand.lds如下:
SECtiONS {
  firtst   0x00000000 : { head.o init.o nand.o }
  second  0x30000000 : AT(4096) { main.o }
}
因为head.o init.o nand.o这三个文件的大小已经超出了4K,所以程序无法运行。所以更改nand.lds如下:
SECTIONS {
  firtst        0x00000000 : { head.o init.o }
  second        0x30000000 : AT(4096) { nand.o main.o }
}
出现如下错误:
[root@localhost nand]# make
ARM-linux-gcc -Wall -c -O2 -o head.o head.S
arm-linux-gcc -Wall -c -O2 -o init.o init.c
arm-linux-gcc -Wall -c -O2 -o nand.o nand.c
nand.c:200: warning: `s3c2440_write_addr' defined but not used
arm-linux-gcc -Wall -c -O2 -o main.o main.c
arm-linux-ld -Tnand.lds -o nand_elf head.o init.o nand.o main.o
head.o: In function `_start':
head.o(.text+0xc): relocation truncated to fit: R_ARM_PC24 nand_init
head.o(.text+0x1c): relocation truncated to fit: R_ARM_PC24 nand_read
make: *** [nand.bin] 错误 1
希望各位大侠赐教,帮我解决一下。在编译优化是o2的条件下main.o的大小是3.65KB,在o3的条件下main.o的大小是3KB,还是不满足。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。