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

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

Отправлено ВН 03 ноября 2003 г. 21:34
В ответ на: Опять вопрос к BH.... отправлено DmitryVB 03 ноября 2003 г. 20:20

Я то думал у живого проц. никак. А с CCS - я до недавних пор работал только с версией 1.20. Так вот у нее надо было прописать всю память, с которой будет работа, в .gel файле. И прицепить этот .gel в виде параметра к cc_app.exe. Это манипуляциями с иконкой композера делалось. В пропертях у нее, в строке Target, прописано что-то такое:
pathcc\cc_app.exe pathgel\xxxx.gel.
pathcc - путь где cc_app.exe
pathgel - где .gel
Ну вот - создаете свой .gel файл, правкой уже существующего (это я так обычно делаю, по аналогии, чтобы еще и с гелем не разбираться, а Вы можете и по другому) и прописываете его в вышеприведенном месте. А в самом геле есть строчки типа:
GEL_MapAdd(0x80u,0,0x7F80u,1,1);
Это как раз включение области памяти. Вообще нужно это для симулятора.
В параметрах этого GEL_MapAdd первое число - начальный адрес памяти, второе - страница, PAGE, 0 - память программ, 1 -данных, а больше 1 - хрен его знает, надо описание на гель читать, чего я сделать так и не удосужился. Третье число - длина области памяти в словах. Четвертое - хрен его мама знает, по вышеприведенной причине. 5-е тип памяти - RAM(1) или ROM(0), по крайней мере я его так понимаю.
Так что вышеприведенная запись означает, что с адреса 0x80 есть память, длиной 0x7F80 слов, что в этой памяти могут быть программы и что она RAM. Для 5416 этот кусок памяти есть DARAM0-3 при OVLY=1.
А поскольку в этой дараме похрен что размещать, хоть программу, хоть данные, то ничто не мешает в геле добавить еще одну строчку:
GEL_MapAdd(0x80u,1,0x7F80u,1,1);
А если к тому же работа предполагается с DROM=1, то строчку
GEL_MapAdd(0x80u,1,0x7F80u,1,1); можно сразу заменить на
GEL_MapAdd(0x80u,1,0xFF80u,1,1); тем самым включив и DARAM4-7 (чтобы лишнего не писать).
Соответственно можно и внешнюю память подключить, например кусок с адреса 0x7f8000 до адреса 0x7fffff, который при любом раскладе будет внешним, так же как и куски 0x48000-0x4ffff, 0x58000-0x5ffff,0x68000,0x6ffff,....:
GEL_MapAdd(0x7f8000u,0,0x7fffu,1,1);
Но это все для симулятора нужно. Живой проц. о гелях и прочих ухищрениях композитора нихрена не знает. И обратится туда, куда инструкция велит. Но адрес на ногах живого проца изменится на время цикла, как я Вам уже писал. Плюс к этому изменится он тогда, когда обращение к внешней памяти идет. При обращении к внутрикристальной он меняться не будет. Правда у проц. есть битик AVIS, но это особая статья.
Все вышеописанное (про гель) относится к композеру 1.20. У более поздних версий может есть отличия, пока не знаю.
В общем про гель почитайте, а в первую очередь про проц. Это важнее.


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru