This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

InitFlash作用

从flash启动的时候,如果需要将部分或者全部代码copy到RAM中来运行。

一般都是初始化时钟等之后,再进行copy,然后InitFlash。这里有几个疑问:

1、初始化(时钟等)代码指令,是不是在flash里面执行的?

2、在InitFlash之前,有执行初始化指令,也有copy功能,不是已经可以对flash操作了吗?那么这里的InitFlash的作用是什么?

谢谢!

  • InitFlash不执行,代码也是可以运行的,在配置时钟以后,根据时钟再配置Flash,使其性能达到最佳,不执行InitFlash,速度老慢了...

  • zdc 说:

    1、初始化(时钟等)代码指令,是不是在flash里面执行的?

    是的。

    zdc 说:

    2、在InitFlash之前,有执行初始化指令,也有copy功能,不是已经可以对flash操作了吗?那么这里的InitFlash的作用是什么?

    不进行copy或不初始化flash程序也可以在flash上运行,只是默认的等待周期比较长,运行速度偏慢。

    仔细查看InitFlash函数的内容就可以发现,它其它只是设置了Flash和OTP的页等待和随即等待的值,基于数据手册对于不同运行速度的要求,比如F2803x的以下表格中的规格:

  • 谢谢大家的解答!

    我可以这样理解不:

    1、DSP上电之后,在跳转到main之前,其实已经可以对Flash操作了;

    2、初始化时钟之后,再来初始化Flash,只是匹配时钟,提高速度;

    3、InitFlash在完成时钟初始化之后就可以执行了,可以放在copy函数之前。

  • 前面两点理解没问题,第三点有点不对。

    放在copy函数之前,InitFlash函数就无法被copy到RAM上运行,实际上也就相当于不能执行,因为初始化自己的代码不能在本身运行,所以需要先执行copy函数,然后调用需要被copy到RAM上运行的函数。

  • InitFlash 执行后,对Flash 进行了一系列等待时间的配置;

    这样运行速度更快了,那这个快是不是体现在将Flash 里面的代码Copy 到RAM 的过程?

    那么:如果代码都已经Copy 在Ram 中了,是不是就跟这个配置没有什么关系了?

                反正代码都是在RAM 中运行,除非要访问一些放置在Flash 的变量;

  • 你只是复制的InitFlash()这一个函数,不是所有代码到RAM中。
  • 个人理解:
    1、 不进行copy或不初始化flash程序的时候,程序在flash中运行,但是速度最慢
    2、 进行copy或初始化flash程序之后,在flash中的程序,速度较之前提高,复制到ram中的程序速度最快。

    疑问:
    1、 是不是每个工程都要进行copy或初始化flash程序,至少保证在flash中的程序,速度最优?
    2、 MemCopy函数和memcpy函数,有什么区别?