314556154 发表于 2012-11-25 23:08:59

请教一下DSP加载、运行可执行文件的过程

大家好,请教几个问题:
1. .bss段.stack需要分配内存空间,这个内存分配是在什么时候进行的?是可执行文件已经包含了编译器生成的这段初始化的代码了吗?
2. 如果我想把程序放在外部flash上,而希望放在外部ram中执行,可以生成boot table,使用片上bootloader来搬代码,请问搬代码需要先配置外部flash和ram,这个怎样实现?
3. 使用2中的方式执行代码,CMD中的section的设置loader address和execute address应该是一样的都设为外部RAM吧?

感谢大家的热心解答!

314556154 发表于 2012-11-26 22:17:41

第2个问题已经找到答案:DSP的片上bootloader会默认使用最大的time delay, 也可以在生成boot table的时候也可以配置EMIF寄存器.
第1个和第3个问题有人帮忙回答吗?

xuancqu 发表于 2012-11-28 17:07:27

1.编译完成,链接的时候会链接CMD文件,如果没有CMD文件,链接的时候会报错。
生成.out文件时会生成一个.map文件,里面有各个函数,变量和段的相关信息。
但是out文件里有没有我也不清楚,应该也有吧。

314556154 发表于 2012-11-28 18:52:35

感谢楼上帮忙回答,可能我没表达清楚,这个map的过程我清楚,我想问的是比如我定义一个全局变量int array = {0},那array指向的这块内存会被初始化为0,这个初始化的过程是在什么时候?初始化的代码从哪里来的?还有c函数执行之前需要初始化stack段,这个过程是在什么时候?代码从哪里来的?
我猜想是编译器生成的代码加到了.out文件里,执行完这段代码后才会跳转到main函数,请问有人知道具体情况吗?

zchong 发表于 2012-11-28 19:19:59

是的,进main函数前编译器帮忙干了很多事
页: [1]
查看完整版本: 请教一下DSP加载、运行可执行文件的过程