在C(AVR编程)中有一种简单的方法可以选择是将变量存储在RAM还是ROM中并通过所有代码处理它?

时间:2017-02-17 17:36:36

标签: c arduino avr

我发现自己在很多情况下都应该在ROM而不是RAM中存储数组或一堆结构。然后我浏览所有代码并进行更改,例如添加PROGMEM,pgm_read_word(),pgm_read_byte()。在编写4000行代码之后,这是一项艰巨的任务。

有没有办法可以更容易地做到这一点?

1 个答案:

答案 0 :(得分:1)

您应该考虑使用GCC的named address spaces功能。在GCC 4.7中为AVR启用了此功能,因此您必须确保使用的是GCC 4.7或更高版本。这将允许您向编译器指定变量所在的内存空间,以及指针指向的内存空间。然后,您可以使用常规C语法访问变量,而不是使用pgm_read_byte等函数。

注意:从GCC 4.9.2开始,命名地址空间仅在GNU C编译器中支持,不是 Arduino IDE使用的C ++编译器。