Код
AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36)
Copyright (C) 1995-2009 ATMEL Corporation
Copyright (C) 1995-2009 ATMEL Corporation
В устройстве Xmega64A1 и внешняя SRAM с 0x3000 по 0xFFFF.
В файле обьявляю переменную в сегменте данных:
Код
.dseg
.org 0x7000
buf: .byte 1
.org 0x7000
buf: .byte 1
AVRASM ругается:
Код
warning: offset 0x7000 in .dseg is beyond end of memory at 0x2fff
...
ATxmega64A1 memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% Warn
--------------------------------------------------------------------
[.cseg] 0x000000 0x004000 2104 414 2518 69632 3.6%
[.dseg] 0x002000 0x007ff9 0 3971 3971 4096 96.9% OVER
[.eseg] 0x000000 0x000000 0 0 0 2048 0.0%
...
ATxmega64A1 memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% Warn
--------------------------------------------------------------------
[.cseg] 0x000000 0x004000 2104 414 2518 69632 3.6%
[.dseg] 0x002000 0x007ff9 0 3971 3971 4096 96.9% OVER
[.eseg] 0x000000 0x000000 0 0 0 2048 0.0%
Меняю в файле "ATxmega64A1def.inc" строку :
#pragma AVRPART MEMORY INT_SRAM SIZE 0x1000
на
#pragma AVRPART MEMORY INT_SRAM SIZE 0xE000
Теперь компилятор "думает" что у этой хмеги 56к внутренней памяти и warningа нет.
Проблема вроде как решена, но что-то мне нравится такое решение.
Можно ли как то информировать AVRASM о наличии и размере внешней SRAM ?
И еще один нюансик заметил:
В файле листинга напрочь отсутствует первая строка, как у компилируемого так и у всех including файлов!