Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Mega128 + внешнее озу
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
no_d@t@
Цепляю к Mega128 внешнее озу 64К, что я должен указать в настройках IAR в разделе External memory configuration в полях Base address и Memory size?
Спасибо.
meister
Цитата(no_d@t@ @ Aug 28 2008, 11:37) *
Цепляю к Mega128 внешнее озу 64К, что я должен указать в настройках IAR в разделе External memory configuration в полях Base address и Memory size?
Спасибо.


Я не знаю, как в Mega128, но вот для LPC2xxx (ARM7) нужно посмотреть, куда мапится Ваше озу (в настройках контроллера внешней памяти) и для этих адресов создать сегмент в xcl файле (для линковщика)

Код
-Z(DATA)EXTRAM=адрес певого байта-адрес последнего байта


например, так:

Код
-Z(DATA)FRAM=40010000-40017FFF
IgorKossak
Внешняя память мапится на то же пространство данных, что и внутренняя SRAM. Если подключать внешнюю память к шине данных без хитростей, то доступно будет меньше на размер внутренней памяти плюс область регистров внутренней периферии. Если поизощряться, то больше на 4 с лишним килобайта, но стоит ли оно того.
В командном файле линкера эта область уже есть (в пространстве DATA сегменты NEAR), надо её просто расширить до FFFF (если уже не расширена smile.gif ).
Если же хочется указать свои сегменты, то не возбраняется, только в программе придётся вручную размещать там обьекты и при этом никакого автоматического обнуления или инициализации.
Что же касается настроек в среде пятой версии, то попробуйте поэкспериментировать (установить базовый адрес на конец внутренней SRAM + 1 и размер с учётом этого) и посмотреть map файл что получится. По моему не сложно.
no_d@t@
Цитата(IgorKossak @ Aug 28 2008, 20:30) *
Внешняя память мапится на то же пространство данных, что и внутренняя SRAM. Если подключать внешнюю память к шине данных без хитростей, то доступно будет меньше на размер внутренней памяти плюс область регистров внутренней периферии.
Что же касается настроек в среде пятой версии, то попробуйте поэкспериментировать (установить базовый адрес на конец внутренней SRAM + 1 и размер с учётом этого) и посмотреть map файл что получится. По моему не сложно.


Т.е. базовый адрес нужно ставить на начало внутренней SRAM?
У меня версия 4.20А, установил базовый адрес на конец внутренней SRAM + 1 и размер с учётом этого, все вылетает с переполнением стека. Начал последовательно уменьшать базовый адрес, на значении 0х900 компилятор ругаться перестал. Базовый адрес = 0х900, размер = 0хFFFF - 0х900 = 0хF6FF. Вот и думаю - почему так?
cstack = 0x400, rstack = 0x50.
IgorKossak
Я задал для меги128 базу 0x1100 (следующий адрес после конца внутренней SRAM) и размер 0xEF00.
Всё нормально собирается (версия 4.30). Смотрите у себя в программе.
У Вас часом memory model не tiny установлена? Надо small.
no_d@t@
Цитата(IgorKossak @ Aug 29 2008, 13:57) *
У Вас часом memory model не tiny установлена? Надо small.


Спасибо за ответы.
memory model установлена small, база 0x1100 и размер 0xEF00 не проходят, при попытке запустить отладку под jtag ice вылетает сообщение, что стеки заполнены на 100%, стеки я размещаю как раз во внешнем озу.
IgorKossak
Цитата(no_d@t@ @ Aug 29 2008, 14:39) *
... при попытке запустить отладку под jtag ice вылетает сообщение, что стеки заполнены на 100%, стеки я размещаю как раз во внешнем озу.

1. Напишите как размещаете. Сами правите cstartup или только командный файл линкера?
2. Отключите плагин отладчика Stack.
sensor_ua
Цитата
попытке запустить отладку под jtag ice вылетает сообщение

Часом в чипе не включена совместимость с мегой103?
no_d@t@
Цитата(sensor_ua @ Aug 30 2008, 10:33) *
Часом в чипе не включена совместимость с мегой103?

Не включена.

Я вообще-то начинающий пользователь IAR, все размещаю пользуясь диалоговыми окнами среды, в частности, General options - System - Place in external memory.
MALLOY2
Цитата(no_d@t@ @ Sep 1 2008, 10:08) *
Не включена.

Я вообще-то начинающий пользователь IAR, все размещаю пользуясь диалоговыми окнами среды, в частности, General options - System - Place in external memory.


Cовместимость с мегой103 к IAR никакого отношения не имеет, это это специальный бит, который надо запрограммировать через программатор, как бит защиты. По умолчанию совместимость с мего103 ВКЛЮЧЕНА!!!

Вот тут описание:
http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/19.htm
no_d@t@
Цитата(MALLOY2 @ Sep 1 2008, 12:39) *
Cовместимость с мегой103 к IAR никакого отношения не имеет, это это специальный бит, который надо запрограммировать через программатор, как бит защиты. По умолчанию совместимость с мего103 ВКЛЮЧЕНА!!!


Спасибо за подсказку, но про специальный бит совместимости с мегой 103 я знаю, конечно заранее отключил совместимость в программаторе.
alux
Катастрофически не хватает ОЗУ для проекта. Поэтому рассматриваю вариант подключения внешнего ОЗУ к ATmega1281. Но проблема еще и в том, что из свободных выводов есть только порт А + три вывода WR, RD, LE для управлением регистром-защелкой. На сколько я понял из даташита в разделе подключения внешнего ОЗУ, при подключении внешней памяти менее 64к, например 32к, доступ к внешнему ОЗУ осуществляется по адресам 0x1100…0x90FF (32к). А сколько будет доступной внешней памяти, если порт С (старший байт адреса) занят?

PS. По всей видимости остается два варианта: либо освобождать порт С под шину старшего адреса, либо использовать Atmega1280 в корпусе (TQFP100)
RA3WUM
Цитата(alux @ Aug 25 2009, 11:44) *
По всей видимости остается два варианта: либо освобождать порт С под шину старшего адреса, либо использовать Atmega1280 в корпусе (TQFP100)

Именно так, включение внешнего озу стандартное для avr и вариантов тут не предусмотрено.
D1ma
если подклбчил стандартно то настройки делай так:
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.