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.

28377D中代码在RAM和FLASH中执行时,效率差多远

您好!

    在28377的初始化代码中看到有将定义在内存中的数据段从flash拷贝到ram中的操作,那么具体在程序设计时,需要将哪些程序和数据定义在RAM中,在读取的速度上,内部RAM和Flash具体差多少。

  • 在论坛上看到说要将执行效率要求高的代码放在RAM中,当然数据属性要是可写的也要放RAM中。

  • 一般我们建议将实时性要求比较高的代码,和FLASH初始化相关的代码,比如中断程序,放在RAM上运行。

    在F2837xD/37xS/07x系列芯片里,它们使用的Flash是最新的65nm工艺(相比之前的是180nm),其Flash运算速度和执行效率已经大幅提高,等待周期也可以减少,因此会非常接近RAM上的速度,根据不同的代码,你可以参考下面的相关数据(请注意,Flash wait states是根据工艺强制要求的,比如F28335运行150MHz主频时,必须至少要5个,而F2837x则只需要2个 ):

    Devices

    Code Running

    From

    FLASH Wait States

    Device

    MHz

    Floating-Point Math Code

    (near linear code with little branching, most instructions 32-bits)

    Control Code

    (lot’s of branching, mixture of 16-bit and 32-bit instructions, most instructions 16-bits)

    All Devices

    RAM

    -

    -

    100% efficient (reference)

    100% efficient (reference)

    F2812/F28335

    FLASH (180nm)

    64-bit wide pre-fetch

    5-wait

    150

    ~58MHz equivalent performance from Flash

    ~87MHz equivalent performance from Flash

    F2837x/F2807x

    FLASH (65nm)

    144-bit wide pre-fetch

    2-wait

    150

    ~143MHz  equivalent performance from Flash

    ~135MHz  equivalent performance from Flash

    F2837x/F2807x

    FLASH (65nm)

    144-bit wide pre-fetch

    3-wait

    200

    ~184MHz  equivalent performance from Flash

    ~174MHz  equivalent performance from Flash