TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6748: CCS8.2中,整个C代码的文件被优化掉

Part Number:TMS320C6748

如题:

CCS8.2

使用编译器版本为TI V8.2.4

我实现了一个类似linux驱动注册的机制,伪代码大概如下:

typedef int (*func_t)(void);
#define D_PRAGMA(x) _Pragma(#x)

int vfs_yaffs2_init()
{
    return 0;
}

func_t func_test = vfs_yaffs2_init;

D_PRAGMA( DATA_SECTION(func_test, ".env_reg") );
D_PRAGMA( RETAIN ( func_test ) );

我期望将vfs_yaffs2_init函数的指针,放到func_test 变量中,使用RETAIN 编译指令,将该变量强制放到".env_reg"数据段中。我只需从数据段中取出指针,就可以访问该函数。

但是,此代码会被编译器优化掉,在生成的map文件中,没有func_test 符号。

然后我在一个外部函数中,调用vfs_yaffs2_init函数,在生成的map文件中,有func_test 符号。

我怀疑,当函数没有被外部调用时,编译器发现在以上c文件中,没有任何符号被外部调用,就忽略了RETAIN 编译指令,直接优化掉了整个c文件。

目前我已经把优化等级全都关闭了,还是不行。

请问这个是否是编译器的bug,或者是需要特定的编译指令才能做到,我如何才能让编译器不优化掉这个c文件。将变量通过RETAIN 和DATA_SECTION编译指令放到指定的段中。

Nancy Wang:

请问您使用的编译器版本是什么?升级为最新的编译器版本试试。

www.ti.com/…/C6000-CGT

,

xu yang:

编译器版本如上所示。

目前项目使用的编译器版本需要一致,最好要在这个版本解决。有可能是哪个编译选项没有选对。可不可以指导一下。

,

Nancy Wang:

我帮您转给其它工程师看一下。

,

Nancy Wang:

您的问题建议升级到英文论坛咨询BU,可能会帮助您解决问题。

e2e.ti.com/…/processors-forum

,

xu yang:

可以麻烦你们帮忙转一下吗?现在英文论坛需要企业邮箱认证,我的账号无法登陆了。

,

Nancy Wang:

好的,我升级之后将链接给你。

,

Nancy Wang:

请关注:

e2e.ti.com/…/tms320c6748-retain-instruction

,

xu yang:

非常感谢,请问我如何才能恢复英文账号的提问权限?我还有一个其他的问题需要在英文网站上发布。你们可以为我开通一下权限吗?

,

Nancy Wang:

你有企业邮箱吗?使用企业邮箱注册之后几分钟会生效。

,

Nancy Wang:

请检查一下是否添加 linker option –unused_section_elimination=off 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: CCS8.2中,整个C代码的文件被优化掉
分享到: 更多 (0)