win avr gcc - 长度的非常量表达式

问题描述

几天来一直在尝试构建这个引导加载程序。

https://github.com/ahtn/kp_boot_32u4

Windows pc,安装了mingG、WINavr和Python。

我一直在创建 elf 文件...

Linking: build/default-atmega32u4/kp_boot_32u4-1024-default-atmega32u4.elf
avr-gcc -mmcu=atmega32u4 -I. -Isrc -Wno-error=unused-function -DBOOT_SIZE=BOOT_SIZE_10 -DCHIP_ID=CHIP_ID_ATmega32U4 -g -DUSB_VID=0x1209 -DUSB_PID=0xBB05 -DF_cpu=16000000UL -DF_USB=UL -DBOARD=BOARD_default -DARCH=ARCH_AVR8 -D ____ -Os -fno-strict-aliasing -Wstrict-prototypes -Wa,-adhlns=build/default-atmega32u4/kp_boot_32u4-1024-default-atmega32u4.elf  -std=gnu99  -Wall -Werror -MMD -MP -MF build/default-atmega32u4/obj/.dep/kp_boot_32u4-1024-default-atmega32u4.elf.d build/default-atmega32u4/obj/usb/device_descriptors.o build/default-atmega32u4/obj/main.o build/default-atmega32u4/obj/usb.o build/default-atmega32u4/obj/spm.o --output build/default-atmega32u4/kp_boot_32u4-1024-default-atmega32u4.elf -T ./ld_scripts/avr5.xn -Wl,--section-start=.text=0x7c00 -Wl,--section-start=.boot_extra=0x7ff0 -Wl,--undefined=.boot_extra -Wl,-Map=build/default-atmega32u4/kp_boot_32u4-1024-default-atmega32u4.map,--cref -Wl,--gc-sections -flto
./ld_scripts/avr5.xn:18: nonconstant expression for length
make: *** [avr-makefile/avr.mk:253: build/default-atmega32u4/kp_boot_32u4-1024-default-atmega32u4.elf] Error 1

上传一个 palou elf 到 build 文件夹,make 过程完成了。经过一些研究,我看到很多其他人都收到了错误,但想知道是否有另一个版本的 avr-gcc 可以使用?老实说,我对这一切都很陌生,所以可能咬得比我能咀嚼的多(锁定思维活动)

......

**__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : 0xffa0;**

.....

并导致内存部分出错...

MEMORY
{
  text   (rx)   : ORIGIN = 0,LENGTH = __TEXT_REGION_LENGTH__
  data   (rw!x) : ORIGIN = 0x800060,LENGTH = __DATA_REGION_LENGTH__

谢谢 米

解决方法

avr5.xn 中的这些 ** 不是有效的链接描述文件语法。解决这个问题。