Цитата(andrewlekar @ Feb 9 2011, 07:12)

Попробуйте-ка для вашего массива поставить атрибут __no_init или аналогичный для вашего компилятора.
Добавил атрибут
Код
uint16_t ExtDpyBuf[0x9600] __attribute__((at(0x64000000), zero_init));
не помогло, все по-прежнему.
Цитата(sergeeff @ Feb 9 2011, 10:10)

Почти уверен, что ошибка линкера. И, скорее всего, из-за того, что в проекте неверно указан размер внешней памяти с адреса 0х64000000.
Ошибка линковки, естественно. Но с размерами там все в порядке.
Start 0x64000000, Size 0x80000
Внутреннее ОЗУ я разбил на 2 части: 48KB под код, 16KB под данные. Попробую изменить пропорцию.
Цитата(sonycman @ Feb 9 2011, 09:50)

А почему бы не задать регион для внешней памяти и помещать массив в этот регион директивой section?
Пробовал через scatter файл, да что-то "ниасилил".
Что любопытно. Пишет
Цитата
Error: L6407E: Sections of aggregate size 0x1e60 bytes could not fit into .ANY selector(s).
А секция .ANY - это ж для кода (+RO). И что там делает агрегат? Не влазит что-то другое? Там перед этим много чего написано, что не влазит...
Передвинул беду на размер массива 0x3600 (этот линкуется, 0x4600 - уже нет), сдвинув пропорцию код/данные в отношение 0xD000/0x3000
Похоже, при объявлении массива во внешней памяти какой-то код все-таки создается. И чем больше массив, тем больше кода. Чудеса?