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

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

Отправлено _Dark 31 мая 2004 г. 23:49

Процессор – 5510, симулятор
Переменные объявлены следущим образом:

.bss _high_re_freq_buf_cnt, 1
.bss _high_im_freq_buf_cnt, 1
.bss _low_re_freq_buf_cnt, 1
.bss _low_im_freq_buf_cnt, 1

.bss _high_re_sum, 2
.bss _high_im_sum, 2
.bss _low_re_sum, 2
.bss _low_im_sum, 2

далее код инициализации переменных:
*(#( low_im_freq_buf_cnt)) = #6
dbl(*(#(high_re_sum))) = #10
dbl(*(#(low_im_sum))) = #20

Суть проблемы в том, что если в начало секции .data добавить смещение в одно слово вроде .bss tmp, 1 – все ползет таким вот образом после выполнения этого кода (информация из Watch Window)

*(int*)low_im_freq_buf_cnt = 10
*(long*)high_re_sum = 10
*(long*)low_im_sum = 0

Такое впечатление, что 32-битные переменные надо выравнивать по двусловной границе (автоматом у меня это не делается). При всем том директива .align 2 положения дел не меняет - и в map-файле я вижу, что адреса остаются нечетными. Почему такое может происходить?

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru