This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28035: 程序编译后sections错误

Part Number: TMS320F28035

我的程序编译后报错,由于CCS显示不完全,错误描述那块是黑的,就是酱紫:

然后我双击错误描述,就自动跳转到28035_RAM_lnk.cmd文件了,就是酱紫:

我不知道为什么会有这个报错,也不知道跳转到的这一行是什么意思,估计是跟RAM有关吧,也不知道怎么解决这个问题。请求官方人员解疑答惑,谢谢。

  • 当程序代码太多时会导致cmd文件中的text端超过范围而导致编译错误,需要扩充RAML0L1段的大小。

    注意扩充后需做到各段  空间衔接连贯且不重复。

  • 麻烦问一下RAML0L1具体是怎么扩充呢。

    我找到了PAGE0的MEMORY定义:

    是要修改origin还是length,origin是代表什么意思,length是长度,length后三位字母是什么意思,具体要怎么修改呢,谢谢。

  • 点击memory allocation视图看下你的内存分配情况。

  • length后面就是长度,就是这一个区域有0xD00的长度,换算成十进制就是有3K大小。28035的PAGE0的L0L1加起来就这么大,你看一下view菜单下的memory allocation,里面有程序占用情况。

  • Failed Allocation是红色的,其余都是绿色的

  • 截图发到回复里了,Failed Allocation是红色的,其余都是绿色,请问要怎么改。

  • 你是在RAM下调试吧,所以程序都放到RAM里了,这样代码多了就放不下了。改成flash运行吧,换成F28035.cmd的配置文件

  • 换成28035.cmd文件后,真的好了,不报错了。所以用28035_ram_lnk文件就是用ram调试,用28035.cmd就是用flash调试吗,总而言之问题解决了,谢谢!

  • cmd文件就是分配你的代码编译后的数据的,用28035_ram_lnk只会把代码放在RAM里,28035.cmd是分配整个存储空间。flash里面运行的代码比RAM要慢,对时间有要求的代码在程序初始化的时候拷贝到RAM里运行就好了

  • 程序初始化是什么时候,怎么拷贝到ram呢,另外我在论坛里查找资料的时候看到有人说delay函数只能在ram里运行,,是这样的吗?因为我的程序里有很多关于delay函数的警告,但是由于问题描述显示不全,我也不知道警告的全部内容,截图如下:

  • 你可以导入一个flash的例程看看,Example_2803xFlash,拷贝到RAM的语句是memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);延时函数是DELAY_US,这个是TI在汇编里面写好的,调用就行了

x 出现错误。请重试或与管理员联系。