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

TMS320F28379D: 程序烧入片上FLASH后,运行结果不正确

Part Number:TMS320F28379DOther Parts Discussed in Thread:C2000WARE

现查出的问题有两个

1使用FFT库函数的CFFT_F32t函数时需要使用到lib库中定义的旋转因子(FPU32CFFTtwiddleFactors),库中定义它所在的SECTION为FPUfftTables,我将它分配在RAMGS0。DEBUG时,将程序直接下载进RAM时,运行结果正确,但是当把程序烧入FLASH后,FPU32CFFTtwiddleFactors所指向的数组内容全部为0,使得CFFT_F32t结果不正确。

2在程序中我利用SCI与上位机通信,启用了SCI的FIFO,定义了SCI的接收中断,在RXFIFO长度为2时中断应被触发。在DEBUG模式(包括RAM和FLASH)下,SCI可以接收,但是将程序烧写如FLASH并脱离DEBUG模式后,有时会出现SCI无法接收到上位机发送数据的情况。

程序使用的CMD文件为C2000Ware_DigitalPower_SDK_3_00_01_00\c2000ware\device_support\f2837xd\common\cmd下的2837xD_FLASH_lnk_cpu1.cmd。

Green Deng:

你好,请问你的工程是使用的TI例程还是还是自己编写的程序?

看你的问题描述可能是工程中少了一步将代码搬移到ram中运行的过程。你的工程中有添加memcpy或者memcopy函数吗?

,

Yang Jiao:

是自己的程序,但是涉及到模块初始化的部分都是使用或参照了官方例程编写的。

设备初始化直接调用的Device_init()函数,在该函数中有

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

除此之外我并未定义其它memcpy或者memcopy函数。

,

Yang Jiao:

我在CMD文件中将.TI.ramfunc : {}改写为.TI.ramfunc : {-l c28x_fpu_dsp_library_coff.lib}可以让旋转因子加载到内存,但是此时加载到的位置不是我预想的地址(我想要加载到RAMGS0但是这样做会加载到RAMLS0),请问有什么方式可以使旋转因子加载到正确位置?

关于memcpy函数,除了在程序开始时调用一次memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize)外,之后是否还需要调用?

关于SCI接收的问题,仍然有时能收到上位机的数据,有时不能。

,

Green Deng:

cmd文件中.TI.ramfunc部分的代码应该包含了搬移至ram的什么区域,类似

RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,

,

jh chen:

加载到RAM,只能在仿真状态下运行,需要将其加载到flash,然后运行时拷贝到ram。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28379D: 程序烧入片上FLASH后,运行结果不正确
分享到: 更多 (0)

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