用openocd调试的时候一般下载的是elf文件,因为包含了调试信息,也包含了程序的起始地址,下载到内存时只需要load就可以了,openocd会自动下载程序到elf的指定地址,我碰到这样一个问题,makefile里指定程序的起始地址是0x30000000,下载elf文件到内存时,只能下载到0x30000000位置,不能从0x00开始,而CPU是从0x00这个位置开始执行指令的,下载到内存后程序就跑不起来,如果用load_image xx.bin 0x00,程序是可以跑起来的,但是又不能调试,因为Bin文件里是没有调试信息的,比如韦东山老师的sdram例子,把程序拷贝到SDRAM中运行,更不用说设断点了,地址根本对不上号,比如break _start,这里_start的地址是0x30000000,而程序执行时不会从0x30000000开始,如何调试这样的程序?