精灵文件认为它小,但它的大!无法生成.bin和.hex文件

时间:2011-07-01 20:56:13

标签: linux gcc makefile arm stm

我正在努力将项目从Kail迁移到Gcc。

Makefile http://www.copypastecode.com/73860/ .ld文件http://www.copypastecode.com/73856/

我有一个Makefile和一个platform.ld脚本以及一些.c和.h文件。 当我制作时,一切都编译和链接,它看起来很好。

arm-none-eabi-size -B输出/ stm32_gps_test.elf

text    data   bss      dec     hex filename
  0       0    2048    2048     800 Output/stm32_gps_test.elf

但是当我检查生成的文件时,我看到了:

输出/

7327274 2011-07-02 04:28 stm32_gps_test.elf
0 2011-07-02 04:28 stm32_gps_test.bin
34 2011-07-02 04:28 stm32_gps_test.hex

tail Output / stm32_gps_test.hex

:0400000508000000EF
:00000001FF

关于精灵档案的一些信息:

arm-none-eabi-readelf -h输出/ stm32_gps_test.elf

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x8000000
  Start of program headers:          52 (bytes into file)
  Start of section headers:          7323752 (bytes into file)
  Flags:                             0x5000002, has entry point, Version5 EABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         1
  Size of section headers:           40 (bytes)
  Number of section headers:         18
  Section header string table index: 15

有什么问题?我试图运行objcopy来创建binfile和hexfile,但结果总是一样。

2 个答案:

答案 0 :(得分:0)

当你拆卸它时你看到了什么? (objdump -D)如果你有例如0x80000000的rom图像和0x20000000的ram,来自objcopy的.bin文件将至少为0x60000000字节加上rom中图像的大小。 intel hex文件或srec应该可以工作。

答案 1 :(得分:0)

选项--set-section-flags .bss=alloc,load,contents是否有效?使用此选项,.bss部分将包含在stm32_gps_test.bin中。