[an error occurred while processing this directive]
Так
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 23 сентября 2004 г. 18:32
В ответ на: вопрос о размещении больших массивов в отдельных секциях для 5509 отправлено Andersen 23 сентября 2004 г. 17:38

Ваши инициализационные данные надо же где-то хранить. Наверняка же run-time autoinit используется. Они, данные инициализационные то есть, в .cinit лежат. При запуске программы вначале стартап C-шный работает, который, кроме прочего, переписывает эти инициал. данные из .cinit в положенное им место, в array то есть. Это по .cinit. Увеличится его размер. Вы из-за инициализации под свой массив по сути 2 раза место выделили. Да еще и приличного размера массив.
Совет для подобных ситуаций. Т.е. когда массив почему-то не хочется инициализировать программно, написав что-то типа for(i=0....) array[i]=.
Создайте ассемблерный файл такого сорта:
.sect .array_section1
.global _array
_array:
.word 10
.word 21
.word 5
...
Не вручную, конечно набивать все это. PC-шную программу за полчаса набросать. Создаст она Вам этот файл. Прилинкуйте его к проекту.
По крайней мере .cinit не трогается.
А по .bss - возможно Ваша .array_section1 расположена там же, в смысле в том же блоке памяти, где и .bss. Кому-то места и не хватило. Или вообще памяти не хватило.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru