реклама на сайте
подробности

 
 
> Не лезет массив во внешнюю память
ViKo
сообщение Feb 8 2011, 09:25
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В тестовом проекте Keil создаю массив во внешней памяти
Код
uint16_t ExtDpyBuf[0x9600] __attribute__((at(0x64000000)));

и больше ничего не требуется - ни scatter файл править, ни свойства в визарде менять. Код генерируется. Хотя нигде даже не упоминается про этот регион.
В рабочем проекте задаю тот же массив, меняю свойства, и - никак! Выдает
Цитата
... Error: L6407E: Sections of aggregate size 0x6128 bytes could not fit into .ANY selector(s).

Уменьшаю массив до 0x2600 - пожалуйста! Все влазит.
Что делать? Кто съел мою память?

upd. Еще добавлю - если атрибут уберу, компилируется. Потому что не используется.
upd2. Еще. Имею 2 Project Targets - ROM и RAM. Во втором разделил ОЗУ на две части для кода и данных. Вот именно в нем и не работает. А в ROM - влазит. Как будто для инициализации массива используется память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Feb 9 2011, 05:12
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Попробуйте-ка для вашего массива поставить атрибут __no_init или аналогичный для вашего компилятора.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 9 2011, 08:47
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(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
Похоже, при объявлении массива во внешней памяти какой-то код все-таки создается. И чем больше массив, тем больше кода. Чудеса?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Не лезет массив во внешнюю память   Feb 8 2011, 09:25
- - ViKo   Буду смотреть, что творится с массивом во внешней ...   Feb 8 2011, 18:45
- - sergeeff   Уважаемый ViKo! Вы нам так все рассказываете,...   Feb 8 2011, 19:07
|- - ViKo   Цитата(sergeeff @ Feb 8 2011, 21:07) Что ...   Feb 8 2011, 20:01
- - sergeeff   Цитата(ViKo @ Feb 8 2011, 13:25) В тестов...   Feb 9 2011, 06:56
- - sonycman   А почему бы не задать регион для внешней памяти и ...   Feb 9 2011, 07:50
- - sergeeff   Почти уверен, что ошибка линкера. И, скорее всего,...   Feb 9 2011, 08:10
- - sonycman   Приведите скаттер файл, каким образом у вас регион...   Feb 9 2011, 10:09
|- - ViKo   Цитата(sonycman @ Feb 9 2011, 12:09) Прив...   Feb 9 2011, 10:28
|- - ar__systems   Цитата(ViKo @ Feb 9 2011, 05:28) Располаг...   Feb 9 2011, 13:48
|- - ViKo   Цитата(ar__systems @ Feb 9 2011, 15:48) А...   Feb 9 2011, 14:26
- - ViKo   В тестовом примере путем урезания памяти КодLR_IRO...   Feb 9 2011, 12:08
- - ViKo   Попытался в тестовом проекте найти, обращается ли ...   Feb 9 2011, 16:51
- - ViKo   Нужно понять, инициализируется ли массив - глобаль...   Feb 10 2011, 09:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 14:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016