写了个程序,用28035_RAM_lnk.cmd调试,编译报错貌似存储区不够,所以把PAGE 1中的RAML3,移到PAGE 0中,将.text指向RAML3中运行,这样不报错了,程序也可以正常运行了,但是用F2808.cmd下载到FLASH中区后,程序无法运行,停留在一个 SB汇编指令的地方,无法继续。
请问这是什么原因?
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.
写了个程序,用28035_RAM_lnk.cmd调试,编译报错貌似存储区不够,所以把PAGE 1中的RAML3,移到PAGE 0中,将.text指向RAML3中运行,这样不报错了,程序也可以正常运行了,但是用F2808.cmd下载到FLASH中区后,程序无法运行,停留在一个 SB汇编指令的地方,无法继续。
请问这是什么原因?
1、在RAM中调试时,错误显示为
Program will not fit into available memory.placement with alignment/block fails for section'.text' size oxd75 page 0.avalable memory range:RAML0L1
错误定位到28035_RAM_lnk.cmd的.text段, 我理解的是使用IQ库后,代码存储区不够用,于是我将28035_RAM_lnk.cmd的Page1中的RAML3移动到PAGE0中,将.text段定位到RAML3。
2、设置之后,用28035_RAM_CLA_lnk.cmd在RAM中调试,一切运行正常。
3、在利用F28035.CMD下载到FLASH中去时,编译无错误,在单步调试运行到InitAdc()函数后,再点击下一步,就会跳转到disassembly 窗口下,始终停留下以下代码处:
3ff8cd 6f00 SB 0,UNC
再点击下一步,程序还是停留在该处。
Lzh,
1. 这里确实是程序段.text代码size很大,RAML0L1装不下,只要设计一个段够大,能够放下.text就可以。
2. 建议你去看一下这个例程C:\ti\controlSUITE\device_support\f2803x\v127\DSP2803x_examples_ccsv5\flash_f28035, 这是程序跑在flash上的一个标准例程。
像出现你这样的问题,程序应该是跑飞了。你检查main中是否有memcopy函数,复制上来,以及有没有复制一些函数在RAM中运行?
在调用那些RAM中运行的函数之前,一定要确保函数已经复制到位。
Eric