使用gcc 4.7.x的Avrstudio 4.19工具链

使用gcc 4.7.x的Avrstudio 4.19工具链,gcc,avr,atmel,atmega,avr-studio4,Gcc,Avr,Atmel,Atmega,Avr Studio4,我正在使用makefile风格编译我的ATMEGA项目。作为Arduino IDE的遗产,开发工具链主要针对gcc 4.3.2。Avrstudio 4.19+Jtagice MKII CN+gcc 4.3.2+以某种方式发挥作用。但我的问题是GCC4.3.2有很多缺陷。例如,我看到与非易失性变量优化相关的随机错误,寄存器缓存值不总是写回内存,错误警告也很烦人。因此,使用GCC4.7.0解决了这个问题,但我无法将任何这样的程序加载到Avrstudio 4.19中,Avrstudio在加载hex时总

我正在使用makefile风格编译我的ATMEGA项目。作为Arduino IDE的遗产,开发工具链主要针对gcc 4.3.2。Avrstudio 4.19+Jtagice MKII CN+gcc 4.3.2+以某种方式发挥作用。但我的问题是GCC4.3.2有很多缺陷。例如,我看到与非易失性变量优化相关的随机错误,寄存器缓存值不总是写回内存,错误警告也很烦人。因此,使用GCC4.7.0解决了这个问题,但我无法将任何这样的程序加载到Avrstudio 4.19中,Avrstudio在加载hex时总是崩溃。有人用这个工具链试过并成功过吗

注意:我不想使用更高的Avrstudio版本,因为大小会增加,可能会带来新的问题


谢谢

如果使用Atmel提供的最新的
avr gcc
工具链,那么avr Studio 4在尝试加载
.elf
文件时会崩溃。要修复此问题,请将调试标志从
avr gcc
更改为
-gdwarf-2-gstrict dwarf
。然后你就可以正常地在AVR Studio 4下加载和调试程序了。

答案可能适用于AVR gcc 4.7.x;但我在Atmel avr工具链最新版本提供的avr gcc 4.8.1中发现,AvrStudio4没有加载任何调试符号


我注意到avr gcc 4.8.1生成的ELF文件中缺少
.debug pubnames
部分,并且使用
-gdwarf-2-gstrict dwarf-gpubnames
调试选项恢复了缺少的部分,该部分随后允许AvrStudio4显示调试符号。

Hmm,但gdwarf标志根本没有帮助。执行启动调试时,AvrStudio会一直崩溃。可能与JTAG程序员有关(我使用的是中文克隆的JTAGICE mkII CN)?我无法证明这一点,因为当“断开连接”对话框出现时,我无法判断它在哪个特定阶段崩溃。我也不知道传递给JTAGICE的是什么数据。是的!此解决方案使用最新的avr gcc 6.1.x。