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

TMS320F280049: 程序下载到Flash和debug的运行结果不一致

Part Number:TMS320F280049

上图程序一直循环执行,DEBUG下串口会连续输出ADC的采样结果并换行,

但是程序下载到Flash后运行,串口一直输出0000并换行;

sprintf赋值好像没起作用?请问这是什么问题

sprintf是C标准库中将数字变为字符的,用来串口发送(网上找的)

Green Deng:

你好,这个问题我能联想到的就是芯片在flash下和ram下执行速度不同导致的。

工程里面有使用memcpy函数吗?

,

lujun Ren:

有的,Device_init()初始化函数里有这段代码,我在工程属性里pre_define了_FLASH;

上图是我加了验证,让GPIO翻转,有信号说明ADC有工作,另外串口收到有换行,但好像就是sprintf那行没执行;

为什么是执行速度不同,我有点不明白

还有这段代码不是把所有的程序从FLASH中迁移到RAM里么,为什么还会涉及到两者的执行速度

,

Green Deng:

执行速度不同是因为存储器介质不同,ram肯定比rom快。而我提到执行速度问题,主要是因为一般ram能运行flash不能运行,大多是因为运行速度不同引起的,也就是需要对某些程序添加memcpy将程序从flash搬运到ram运行

你看看Device_init()里面的memcpy函数是否有被启用。如果启用了还是有这个问题,那我可能要去联系一下其他工程师,看看是否跟sprintf函数有关

,

lujun Ren:

启用了,我认为应该是sprinf 函数的问题

,

Green Deng:

你好,这边工程师回复:

1、有没有试过用更长的msg?比如定义为“char msg [100]”。为了查看 sprintf 代码是否溢出了 char 数组。

2、可以尝试不使用sprintf 发送,看看是否运行正常?判断一下到底sprintf 是否真的是问题所在。

,

lujun Ren:

这样真的可以,应该也不是sprintf的问题,我按照你的提示把那个指针定义变成数组定义就可以了,这应该涉及到一些语法的问题

感谢了

,

Green Deng:

客气了,感谢反馈。

,

NickTI:

请问右边的电平图是怎么设置出来的?

,

lujun Ren:

逻辑分析仪测的,不是设置的

,

NickTI:

这样,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049: 程序下载到Flash和debug的运行结果不一致
分享到: 更多 (0)