【发布时间】:2014-10-26 04:49:09
【问题描述】:
在PSoC 中,可以在内存空间mapped to flash 中声明变量。由于闪存读取比 RAM 读取慢,因此程序将受益于编译器优化 - 允许将值存储在寄存器中或以其他方式缓存。除非修改闪光灯的值。这可以是即时的done,程序员知道发生的确切时刻。这也很少进行(以保护闪存免受写入磨损)并且需要相对较长的时间。在这种写入的情况下,最好让变量从底层内存中恢复其值(表现得像 volatile),然后像往常一样继续进行所有优化,直到下一次写入。
因此,从本质上讲,一些通过使用底层存储单元来强制刷新变量的机制是有用的;无论是时间限制(写入后不久)还是代码的某些部分(写入操作后跳转到“刷新”功能)。 C中是否有这样的机制,或者特别是在GCC中?
(此外,考虑到内存限制(2-4KB RAM),如果将 RAM/寄存器的分配留给优化器是可取的 - 将每个变量镜像到两个持久版本中的简单方法:易失性(在闪存中)和非-volatile(在 RAM 中),在刷新期间将 volatile 重写为 non-volatile,然后从那时起在任何地方都使用 non-volatile。)
【问题讨论】:
标签: c gcc optimization volatile