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

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

Отправлено Sfr 29 апреля 2006 г. 14:10
В ответ на: TMS320VC5509A отправлено Sfr 27 апреля 2006 г. 23:03

Сначала я выкинул текстовый линкер и сделал визуальный. В мастере визуального линкера все оставил по умолчанию. Все значения стеков, кучи. Разместил данные, стеки и код в DARAMе. И все стало нормально работать. Потом убил визуальный линкер и стал разбираться с текстовым.
Все-таки я не хочу упустить то, чего не понял.
1.Вот мой файл линкера.
MEMORY
{
PAGE 0:
/* On-chip DARAM */
MMR : origin = 0x00, length = 0xC0
SPRAM : origin = 0xC0, length = 0x40
VECS : origin = 0x100, length = 0x100
DARAM0 : origin = 0x200, length = 0x1E00
DARAM1 : origin = 0x2000, length = 0x2000
DARAM2 : origin = 0x4000, length = 0x2000
DARAM3 : origin = 0x6000, length = 0x2000
DARAM4 : origin = 0x8000, length = 0x2000
DARAM5 : origin = 0xA000, length = 0x2000
DARAM6 : origin = 0xC000, length = 0x2000
DARAM7 : origin = 0xE000, length = 0x2000

/* On-chip SARAM */
SARAM0 : origin = 0x10000, length = 0x2000
SARAM1 : origin = 0x12000, length = 0x2000
SARAM2 : origin = 0x14000, length = 0x2000
SARAM3 : origin = 0x16000, length = 0x2000
SARAM4 : origin = 0x18000, length = 0x2000
SARAM5 : origin = 0x1A000, length = 0x2000
SARAM6 : origin = 0x1C000, length = 0x2000
SARAM7 : origin = 0x1E000, length = 0x2000
SARAM8 : origin = 0x20000, length = 0x2000
SARAM9 : origin = 0x22000, length = 0x2000
SARAM10 : origin = 0x24000, length = 0x2000
SARAM11 : origin = 0x26000, length = 0x2000
SARAM12 : origin = 0x28000, length = 0x2000
SARAM13 : origin = 0x2A000, length = 0x2000
SARAM14 : origin = 0x2C000, length = 0x2000
SARAM15 : origin = 0x2E000, length = 0x2000
SARAM16 : origin = 0x30000, length = 0x2000
SARAM17 : origin = 0x32000, length = 0x2000
SARAM18 : origin = 0x34000, length = 0x2000
SARAM19 : origin = 0x36000, length = 0x2000
SARAM20 : origin = 0x38000, length = 0x2000
SARAM21 : origin = 0x3A000, length = 0x2000
SARAM22 : origin = 0x3C000, length = 0x2000
SARAM23 : origin = 0x3E000, length = 0x2000

/* On-chip External RAM */
EXTERNAL_CE0 : origin = 0x40000, length = 0x3C0000
EXTERNAL_CE1 : origin = 0x400000, length = 0x400000
EXTERNAL_CE2 : origin = 0x800000, length = 0x400000
EXTERNAL_CE3 : origin = 0xC00000, length = 0x3F0000

/* On-chip ROM */
PDROM : origin = 0xFF0000, length = 0xFF00
VECTORS : origin = 0xFFFF00, length = 0x100
}

SECTIONS
{
.init : {} > DARAM0 PAGE 0 /* Startup code */
.text : {} > DARAM0 PAGE 0 /* Executable code */
.vectors : {} > VECS PAGE 0 /* Interrupt vector table */
.stack : {} > SARAM0 PAGE 0 /* Primary stack */
.sysstack : {} > SARAM0 PAGE 0 /* Secondary system stack */
.sysmem : {} > SARAM1 PAGE 0
.data : {} > DARAM1 PAGE 0 /* Initialized data */
.const : {} > DARAM1 PAGE 0 /* Global and static const variables */
.bss : {} > DARAM1 PAGE 0 /* Global and static variables */
}
2.small model памяти
3.rts55.lib
4.размеры стеков и кучи устанавливаются в опциях компилятора (все три по 0х500)
5.компилятор выдает 3 предупреждения, что он игнорирует эти 3 размера.
И не корректно работает программа.

!!!В опциях компилятора(линкера) стояла "без авто-инициализации", я поставил "авто-инициализация при загрузке" и скомпилил. Компилятор выдал только одно предупреждение, про размер кучи. Я на него забил. И запрограммировал процессор. Все заработало корректно. И с глобальными
переменными и с локальными!!!
Но все-таки надо понять чего компилятор не устраивает куча, я же задал размер кучи и выделил под нее место (.sysmem : {} > SARAM1 PAGE 0 ).



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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

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

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

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


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru