我发现自己在很多情况下都应该在ROM而不是RAM中存储数组或一堆结构。然后我浏览所有代码并进行更改,例如添加PROGMEM,pgm_read_word(),pgm_read_byte()。在编写4000行代码之后,这是一项艰巨的任务。
有没有办法可以更容易地做到这一点?
答案 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 ++编译器。