我有Atmel的ATXMega16a4u mcu并尝试使用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)?
由于 长
答案 0 :(得分:2)
ATxmega16A4U是not supported by AVR-libc。您的未定义符号存在由C编译器抛出的错误。粗略阅读Atmel的网站显示,两个微控制器ATxmega16A4U和ATxmega16A4是不同的设备,最显着的区别是前者的USB接口。因此,avr/io.h
给出的包含文件中的一些寄存器描述对于ATxmega16A4U来说不会很容易获得。该问题的解决方案是创建一个新的头文件,其中包含该微控制器的必要定义。这照顾了libc方面。对于编译器/链接器端,您可能必须修补gcc以采用正确的-mmcu
选项并定义avr/io.h
期望的符号。也可能需要链接器脚本,尽管粗略阅读Atmel的网站表明两个微控制器的内存布局相同,因此最后一步可能没有必要。