在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
yulin li:
FLASH运行比较慢,RAM快。可以在FLASH上电,再搬运到RAM中运行。我记得TI有例程提供
在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
beidoubushixing:
delay延时程序定的时间本来就不准确啊
在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
Lich:
回复 beidoubushixing:
在RAM里运行的时候延时1秒钟大概还是差不多的,但是在FLASH里运行同样程序的时候速度只有之前的十分之一,差别太大了,在flash里运行时会慢一点,但是我总觉得不至于慢这么多,后者速度如果是前者的百分之七八十还是可以接受的
在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
rookiecalf:
回复 Lich:
使用delay的注意事项:
;// *IMPORTANT*;// IF RUNNING FROM FLASH, PLEASE COPY OVER THE SECTION "ramfuncs" FROM FLASH;// TO RAM PRIOR TO CALLING InitSysCtrl(). THIS PREVENTS THE MCU FROM THROWING AN EXCEPTION;// WHEN A CALL TO DELAY_US() IS MADE.
在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
Lich:
回复 rookiecalf:
嗯嗯,在FLASH中运行程序(无论是否是delay程序)是会有读写时间肯定是比RAM长,但是不知道像试验中那样读写时间大了一个数量级这样是否属于正常,但是不管怎样,现在还是准备找找资料看下怎么运行程序的时候把程序从FLASH中拷贝到RAM中来运行
在调试28335程序时发现,在FLASH里运行和在RAM里运行的速度是不一样的,发现之后做了一个小实验,使用一个delay程序对LED进行交替点亮熄灭,比如延时时间为1s,实验发现当程序下载到RAM运行时,延时时间正常,但是下载到FLASH空间运行程序时,程序延时时间变为了大约10s,差别挺大的。
想问一下大家,是因为FLASH的读写速度比RAM长很多造成的这个现象吗?如果是这个原因,就说明这样算是正常的是吗?如果不是这个原因,可能会是什么原因造成的这个现象?
Linda:
回复 Lich:
您好!
F28335在Flash里运行程序如果是最高系统时钟150MHz时需要5个等待周期,而在RAM中运行程序是零等待周期的。
这就是代码在Flash里和RAM里运行时间差异大的原因。