求助,dsp程序在2812ram里面运行SCI通讯正常,而烧写到flash里面运行就不正常了

求助,dsp程序在2812ram里面运行SCI通讯正常,而烧写到flash里面运行就不正常了,第1张

这很正常,以前我第一次烧写的时候也发现了许多问题。

dsp的flash烧写比较麻烦,有时候光换cmd文件并不能保证程序在flash中正确运行。而且就算能正确运行,程序在flash中运行的速度比ram中要慢很多。这对实时性和通讯影响都非常大。一般都要编写启动代码,让烧写在flash中的程序,在启动的时候搬到ram中运行。这样速度会提高很多。我这里直接将启动代码和相关的flash中给你附上。你要做的就是:

1将库文件换成我给你的库文件

2启动代码用汇编编的,将启动代码添加的你的工程中。

3将原来的flash文件替换为我给你的这两个flash

最后你的工程应该是这样的,这里以ccs55为例:

所有选中的文件都要添加。

ps:有什么问题欢迎继续追问,当年我为了烧写这个都快郁闷死了,都将dsp锁死过。所以还是比较有经验的。

最近在用2812编程,遇到一个问题,想请教各位高手,我先说一下自己的一点理解请教高手指点。 PIE一般用到的中断组是INT1-INT12。我们知道他们的优先级顺序是INT1>INT2>INT3…INT11>INT12。在开所有中断使能的前提下,如果不同组(如INT1组的TINT0和INT2组的T1CINT)的中断同时向PIE发出中断请求,

那么PIE会放中断优先级较高(INT1TINT0)的中断过去。同样的在如果是同组的中断请求同时到达的话(如INT2组的),那么也同样按照PIE中断向量表查看同组优先级,CPU响应优先级较高的中断。

我的理解是,

(1)不同组之间的中断可以实现中断嵌套。如INT1组的TINT0和INT2组的T1CINT。当CPU正在响应INT2组的T1CINT中断服务程序这时如果产生了INT1组的TINT0中断的话那么CPU便会产生中断嵌套,先停下T1CINT转而去执行TINT0,

当TINT0中断服务程序执行完之后再去执行剩余没有执行网的INT1中断服务程序。

(2)同组之间的中断不可以实现中断嵌套。如果同样是INT1组的两个中断比如ADCINT和TINT0。当CPU正在响应INT1的中断服务程序时,这时如果产生了ADCINT,尽管ADCINT在INT1组中的优先级比TINT0的优先级高,还是不会产生中断嵌套。

因为同组的中断在向CPU发出中断请求之前先要经过PIE中的应答位PIEACK验证,如果PIEACK为1说明此时正有改组的中断正在响应,PIE不会放响应该发出中断请求的中断源通过,只有等到正在响应的中断服务程序执行完才会去响应刚刚

发出中断请求的中断服务程序。这也就是为什么,我们在中断服务程序的后面都要加上一句PieCtrlPIEACKbitACKx=1;就是为了让应答位清零,可以响应同组的其他中断。

以上两点是我对2812中断嵌套的一点理解,尤其是提到的第(2)点,万望高手不吝指导。

LOAD_START(_RamfuncsLoadStart) 指ramfuncs这段代码的加载开始地址

LOAD_END(_RamfuncsLoadEnd),指ramfuncs这段代码的加载结束地址

意思是ramfuncs存储在哪,一般是FLASH

RUN_START(_RamfuncsRunStart),指ramfuncs这段代码的运行开始地址

意思是运行把ramfuncs拷到哪里执行~~~一般是RAM

r

以上就是关于求助,dsp程序在2812ram里面运行SCI通讯正常,而烧写到flash里面运行就不正常了全部的内容,包括:求助,dsp程序在2812ram里面运行SCI通讯正常,而烧写到flash里面运行就不正常了、tms320f2812外设spi产生接收中断请求,需具备哪些条件才能得到cpu的响应、2812程序从flash搬到sram里的cmd文件什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10076354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存