Firman 发表于 2022-8-16 09:40:43

记录一下,在新版ICC AVR必须设置才能把数组编译到ROM里

有个项目是2010年做的,当时用ICC AVR 6.31版,但是这个版本不能装在win10上。
现在要重新修改,只好在win10上装新的ICC AVR 7.22版。
结果旧程序编译出来LCD19264显示乱码,各种找原因,包括找一台XP重装6.31版再编译,这样确定是版本的问。
没办法,XP是回不去了。只能各种偿试,看能否通过重写LCD显示来解决,结果一路删代码,只留下LCD显示部分,还是解决不了。
然后对着编译器上的设置逐个试,终于发现了,要勾上“String in Flash only",旧版本没有这项设置。

kinoko 发表于 2022-8-16 10:48:16

{:titter:}感谢踩坑,因为一个小勾勾忙了半天

t3486784401 发表于 2022-8-17 02:01:15

如果用过 ICCAVR 的数学库 math.h,定会生不如死。之前就发过贴:
https://www.amobbs.com/forum.php?mod=viewthread&tid=5640626&highlight=ICCAVR

又测了一遍,用 MEGA8 输出 1-BYTE 的正弦函数数值,相角范围 -8pi ~ +8pi,确认这个函数只在 ±4pi 范围内有效:

1a2b3c 发表于 2022-8-17 12:29:10

这个string是指真的字符还是随便的二进制值?
要是前者的话,后者怎么办

wurst 发表于 2022-8-17 19:25:44

虚拟机不好吗

liang16888 发表于 2023-3-2 14:47:55

是否有 arm gcc 版 设定成rom 选项?

t3486784401 发表于 2023-3-2 14:58:50

liang16888 发表于 2023-3-2 14:47
是否有 arm gcc 版 设定成rom 选项?
(引用自6楼)

GCC AVR 用的是 PROGMEM 关键字,就定位在 rom 里边了;

GCC ARM 就没有 rom 的说法了,因为是 rom/ram/外设 统一编址,特定地址范围就是 rom
页: [1]
查看完整版本: 记录一下,在新版ICC AVR必须设置才能把数组编译到ROM里