最近查看了wiki中 'Boot Images for OMAP-L137' 的内容, 并下载了其中“Booting ARM Binaries”的实例代码,
发现其中dsp部分 "device.h" 中的ARM程序地址入口"DEVICE_ARM_UBL_LOAD_ADDR" 被声明为:
#define DEVICE_ARM_UBL_LOAD_ADDR (0x80000BEC)
并且arm部分的 '.map'文件中有以下内容:
.text 0 80000800 00000494
80000800 00000180 rts32earm9.lib : memcpy32.obj (.text)
80000980 000000f4 main.obj (.text)
80000a74 000000a8 rts32earm9.lib : auto_init.obj (.text)
80000b1c 00000078 : exit.obj (.text)
80000b94 00000058 : cpy_tbl.obj (.text)
80000bec 00000044 boot.obj (.text)
80000c30 00000024 rts32earm9.lib : _lock.obj (.text)
80000c54 00000020 : args_main.obj (.text)
80000c74 00000020 : icall32.obj (.text)
其中boot.obj的开始地址与DEVICE_ARM_UBL_LOAD_ADDR相同。
那我是否可以这样理解:
arm部分是从boot.asm开始执行的。
dsp和arm的 代码需要分别编译, 而且先编译arm部分代码,得到其‘.map' 文件,然后通过查看‘.map' 文件, 得到arm的部分的入口地址,
然后在dsp部分代码中使用这一地址, 实现dsp启动arm。
Tony Tang:
是这样的。