打印

str912:在flash中运行程序有问题!

[复制链接]
2526|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
foodeyun|  楼主 | 2007-8-26 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相同的程序在ram和flash 中的运行结果不一样!

程序的功能是:
    对6个通道轮流采样,每个通道采样的频率是10k.总的数据量为:2*6*10KByte/s = 120KByte/s。
    各通道满512字节用10M以太网(UDP)发送出去。
    上位机实时显示波形。

在ram 中运行,数据传送正常,显示波形正常。
在flash 中运行,数据有丢失的情况,显示波形失真。
不到1Mbps,数据量并不大啊!
请问,这是什么原因?

如果要对进来的数据进行FFT和小波变换,以及使用SPI将某些数据存入SD,str912还能正常工作吗?我现在很怀疑str912的性能。
沙发
浪淘沙| | 2007-8-26 21:11 | 只看该作者

程序在STR912的Flash中运行比在RAM中快

你的程序在RAM中运行正常但在Flash中有问题,估计是你的程序中的时序没有调好。请不要用指令延迟的方式实现敏感时序的操作。

使用特权

评论回复
板凳
li_mu| | 2007-8-26 21:36 | 只看该作者

程序在STR912的Flash中运行比在RAM中快?

flash比RAM快?

使用特权

评论回复
地板
浪淘沙| | 2007-8-26 22:29 | 只看该作者

“程序在STR912的Flash中运行比在RAM中快”≠“Flash比RAM快”

STR912使用的是哈佛结构,即程序空间和数据空间分别有单独的数据通路;STR912中RAM是处于数据空间,使用数据存储器的传输通道;Flash是连接到处于程序空间,使用程序存储器的传输通道。关于这一点的详细说明,请参考ARM的ARM966核心相关的资料。

如果把程序放到数据存储器,STR912的核心就要通过AHB才能访问到RAM,自然比直接从处于程序空间的Flash取指令要慢。另一方面STR912有Flash的缓冲可以达到加速Flash的访问;更加重要的是STR912的Pre-Fetch Queue和Branch cache是处于程序存储器的传输通道上,把程序放到RAM中时,就享受不到Pre-Fetch Queue和Branch cache的加速效果了。

在ST的网站上有一个DSP的函数库,这是它的文档《STR91x DSP library (DSPLIB)》,在这篇文档中有一节讨论FFT运算速度的,那里给出了实际的运算时间比较,摘录如下:
Radix-4
Complex FFT
Operation ModeCycle CountMicroseconds
64 PointProgram in Flash & Data in SRAM270128.135
64 PointProgram & Data in SRAM343235.75
64 PointProgram & Data in Flash370538.594
256 PointProgram in Flash & Data in SRAM13740143.125
256 PointProgram & Data in SRAM18079188.323
256 PointProgram & Data in Flash19908207.375

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

147

帖子

0

粉丝