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

TMS320F28388D: 关于__attribute__((ramfunc))的疑问

Part Number:TMS320F28388DOther Parts Discussed in Thread:DAC81416

CCS版本  Version: 11.1.0.00011 

编译器版本 ti-cgt-c2000_21.6.0.LTS

参照编译器文档139页的说明,我将希望在RAM中执行的函数添加了ramfunc属性说明

在没有切换到flash模式时,函数中的关键字是正常显示的,如下图所示:

但是切换到flash模式后,原本正常显示的关键字都不显示了,如下图所示:

而且在函数名上用快捷键F3只能将函数定位到其声明处,如下图所示:

不过编译时没问题的,看.map文件的编译结果也是没问题,请问这是为什么呢?

user78960159:

还有一个相关的问题请教下大家,如果在定义某个函数的时候,使用了ramfunc属性,或者使用原来的#pragma声明一下,对应的函数就会加载到flash,最终搬移到ram中运行

不过,该函数中如果调用了其他函数,这些其他的函数并没有一起搬移到ram中运行,如下图所示:

从.map文件中看,TIMER0_ISR是搬移到ram了,但是TIMER0_ISR中断函数中调用的函数,DAC81416_SPI_Write,如下图所示

其地址为

 ,可以看到,DAC81416_SPI_Write并没有随着TIMER0_ISR一起搬移到ram中,请问大家一般怎么处理这个问题呢?

是要搬移到ram中执行的中断函数中要用语句逐条写要实现的功能,不用函数封装吗?

再有就是如我其中调用了宏函数,如我这里使用的RC_MACRO,编译器会怎么处理呢?

,

Cherry Zhou:

您好,您的问题我们需要升级到英文论坛看下,有答复尽快给您。

,

Cherry Zhou:

您好,

user78960159 说:但是切换到flash模式后,原本正常显示的关键字都不显示了,如下图所示:

工程师这边使用最新版本的 CCS 可以重现此问题。 将属性关键字应用于函数似乎会导致索引器出现问题。 可以看到解析器日志中针对该行指示了一些语法错误。 

user78960159 说:不过编译时没问题的,看.map文件的编译结果也是没问题,请问这是为什么呢?

索引器和编译器是不相关的。 索引器是 Eclipse 随附的解析器工具,可扫描工程的所有源代码并构建编辑器所用的缓存(索引),用于语法突出显示、代码完成、只用于声明等。与编译无关。 分度器是一个已知的小bug。

我们会注意这个问题。 但请注意,由于 CCS 只是利用 Eclipse CDT 分度器,因此我们并没有该分度器。 因此如果索引器本身需要修复,那么可能是我们无法自行解决的问题。 另请注意,CCS Eclipse 环境逐渐被弃用,而不是我们的新 CCS Theia 环境。  

user78960159 说:

是要搬移到ram中执行的中断函数中要用语句逐条写要实现的功能,不用函数封装吗?

再有就是如我其中调用了宏函数,如我这里使用的RC_MACRO,编译器会怎么处理呢?

ramfunc 属性一次只适用于一个函数。 它不会自动传播到由具有 ramfunc 属性的函数调用的函数。 

有一个编译器选项–ramfunc=on。 之前并没有用户在构建整个项目时使用它。 

相反, file specific options feature of CCS是用来一次将其应用于一个文件。 在这种情况下,该文件中的所有函数都构建为使用 ramfunc 属性的形式。 

,

user78960159:

了解 感谢帮助

,

user78960159:

我目前想到的解决办法 是将中断函数集中到一个用户创建的C文件中,然后在其编译tag中增加 –ramfunc=on选项

原本我的编码习惯是使用默认的F2837xD_DefaultISR.c文件,在这个文件中定义的对应的中断函数中增加自己的代码

这样看来这个习惯是不是要改一下。因为F2837xD_DefaultISR文件定了所有的中断函数,将其ramfunc=on后,会占用太多的ram空间

,

Cherry Zhou:

我们向工程师确认下。

,

Cherry Zhou:

您好,我们的工程师只能解释编译器的 ramfunc 功能。 如何将这些功能应用于您的特定环境取决于您。 不过您以上的解决方案似乎是合理的。 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28388D: 关于__attribute__((ramfunc))的疑问
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1