我怀疑,在所有微控制器中,闪存更多是ram(例如:atmega16它是16k,但RAM只有1 Kb)。 。
那么,如何执行该代码,CPU是否直接从Flash本身执行,如果是,那么是否使用了那个小RAM。
答案 0 :(得分:5)
闪存用于存储您要执行的程序。它们很少改变,因此闪存是合适的。
RAM用于程序执行期间所需的内存:堆栈(局部变量),堆(malloc)等。
答案 1 :(得分:1)
使用哈佛架构的AVR严格区分程序和数据存储器。 与首先将RAM从RAM中执行到RAM的PC不同,代码直接从程序存储器执行,只有运行时数据存储在RAM中。
答案 2 :(得分:1)
请注意,将变量设置为const不一定会创建变量并将其置于flash中。虽然它在闪存中可能是最好的,但编译器不会自动执行此操作。
有关示例,请查看以下avr-gcc链接。