0

我有一个 Atmel 的 ATXMega16a4u 单片机,并尝试使用 avr-gcc 4.7.2 (Fedora 4.7.2-1.fc17) 编译代码。我收到了这个错误:

选项“-mmcu=atxmega16a4u”中无法识别的参数

所以我尝试用 -mmcu=atxmega16a4 编译代码(最后没有'u')。并得到一些“未声明”的错误:

错误:“ADC_CH_GAIN_DIV2_gc”未声明(在此函数中首次使用)

avr-gcc 还不支持我的微控制器吗?有没有可能让它在 Fedora 上工作,避免使用 avr studio(和 windows)?

谢谢长

4

1 回答 1

2

AVR-libc 不支持ATxmega16A4U 。您的未定义符号有 C 编译器抛出的错误。粗略阅读 Atmel 的网站可以发现,这两个微控制器 ATxmega16A4U 和 ATxmega16A4 是不同的设备,最显着的区别是前者的 USB 接口。因此,avr/io.h对于 ATxmega16A4U,在给出的包含文件中找到的一些寄存器描述将不容易获得。这个问题的解决方案是创建一个新的头文件,其中包含该微控制器的必要定义。这会照顾 libc 方面。对于编译器/链接器端,您可能必须修补 gcc 以采用正确的-mmcu选项并定义预期的符号avr/io.h一般来说。链接器脚本也可能是必需的,尽管粗略阅读 Atmel 的网站表明两个微控制器的内存布局相同,因此最后一步可能没有必要。

于 2013-07-20T17:15:51.947 回答