1

我怀疑,在所有微控制器中,闪存都比 ram 多得多(例如:atmega16 它是 16k,但是 RAM 只有 1 Kb)。.

那么,该代码是如何执行的,CPU 是否直接从 Flash 本身执行,如果是,那么给定的小 RAM 的用途是什么。

4

3 回答 3

5

闪存用于存储您要执行的程序。他们很少改变,所以闪存是合适的。

RAM 用于程序执行期间所需的内存:堆栈(局部变量)、堆(malloc)等。

于 2014-03-19T14:54:55.180 回答
1

AVR 采用哈佛体系结构,将程序和数据存储器严格分开。与将程序加载到 RAM 以从 RAM 执行它的 PC 不同,代码直接从程序存储器执行,并且只有运行时数据存储在 RAM 中。

于 2014-03-20T11:56:49.583 回答
1

请注意,将变量设置为 const 不一定会创建变量并将其放入闪存中。尽管它在闪存中可能最好也可能不是最好的,但编译器不会自动执行此操作。

例如,请查看 avr-gcc 的以下链接。

http://www.nongnu.org/avr-libc/user-manual/pgmspace.html

于 2014-03-25T15:49:48.313 回答