【发布时间】:2012-04-03 11:28:10
【问题描述】:
我正在使用 Codesourcerys GCC arm EABI 编译器为 Beagleboard (ARM Cortex A8) 编译裸机软件(无操作系统)。现在它编译成一个二进制或图像文件,我可以使用 U-Boot 引导加载程序加载。
问题是,我可以在运行时动态地将 hexdata 加载到内存中(这样我就可以将其他图像文件加载到内存中)吗?我可以使用 gcc objcopy 生成软件的 hexdump。我可以使用这些信息并将其加载到适当的地址吗? .text .data .bss 部分的所有地址是否会按照链接描述文件中的说明正确加载?
生成的hexdata输出$(OBJCOPY) build/$(EXE).elf -O binary build/$(EXE).bin
od -t x4 build/$(EXE).bin > build/$(EXE).bin.hex
看起来像这样:
0000000 e321f0d3 e3a00000 e59f1078 e59f2078
0000020 e4810004 e1510002 3afffffc e59f006c
0000040 e3c0001f e321f0d2 e1a0d000 e2400a01
0000060 e321f0d1 e1a0d000 e2400a01 e321f0d7
...等等。
是否像将每行的 20 个字节加载到所需的内存地址一样简单,只需将 PC 分支到正确的地址就可以正常工作吗?我是不是忘记了什么?
【问题讨论】:
标签: c embedded beagleboard