Перейти к содержанию
    

Отзовитесь знатоки SHARC.

Единственная причина по которой данные не появляются в памяти - они туда не записаны. Дело в том, что в LDF надо прописать секцию данных иначе не хрена ты в памяти не увидишь и это правильно.

На счет ошибки с размером памяти SDRAM может быть только 32-х битным, документацию читайте по лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

<Единственная причина по которой данные не появляются в памяти - они туда не записаны. Дело в том, что в LDF надо прописать секцию данных иначе не хрена ты в памяти не увидишь и это правильно.

На счет ошибки с размером памяти SDRAM может быть только 32-х битным, документацию читайте по лучше. >

К чему такая категоричность.

Секция у меня прописана, иначе линкер меня бы к SDRAM на расстояние пушечного выстрела не подпустил.

Насчет линковщика, в том примере что я использую (ошибся с версией VDSP в которой он был создан, не 2.0 а 1.0) в LDF файле для PM сегмента SDRAM указана ширина 48. Соответственно в первой версии этого ублюдства все компилилось нормально, теперь вышеописаный матек. Вы сами в SDRAM распологаете финкции, можете привести пример LDF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MEMORY

{

seg_external { TYPE(PM RAM) START(0x00020000) END(0x0002ffff) WIDTH(32) }

}

SECTIONS

{

seg_extrnal

{

PACKING(6 B0 B0 B5 B6 B0 B0 B1 B2 B3 B4 B0 B0)

INPUT_SECTIONS( $OBJECTS(seg_pmco) $LIBRARIES(seg_pmco))

} >seg_external

 

Ну и соответственно OBJECTS все, что надо прописать туда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за пример.

Вобщем какие-то чудеса у меня творятся.

Во первых как не крутил, инициализировать начальные значения переменных не получилось. С функциями в SDRAM вообще фокусы.

Создаю функцию которая возвращает инкрементированную внутренноо статическию переменную, все ОК. Инициализирую начально значение этой переменной, пререзагружаю проц - !!! Процессор работает со старой программой (сколько не перезагружай) !!! Выключаю питание, включаю, все приходит в норму. Создаю в теле не статическую переменную, и в теле присваиваю ей значение. Далее складываю обе переменные и присваиваю ее статической, опять тот же фокус с работой процессора, приходится включать/выключать питание. Я думаю ноги у моей трабл растут там где пременные перестают инициализироваться. Прикрепляю свой пример.

TestSDRAM.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пример гляну. Не обещаю что скоро получится, но обязательно гляну. Может два дня, а может и сегодня получтся (работы до матери!!!).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ради интереса, что значит перезагружаю проц. Дело в том, что могут быть особенности. Я вообще работаю на платах, так скажем своего производства. И знаю особенности процессора от и до. Если перегружаешь проц программно данные могут некуда не дется. Плюс ко всему какой режим загрузки используется - это тоже важно. Я использую из ПЗУ(ФЛЭШ).

Плюс ко всему, если еще используешь VDSP 2.0 совет юзать VDSP 3.1 (с 3.5 я таких глюков насмотрелся, что плохо иногда становится). Еще по личному опыту могу сказать, что есть проблемы с SDRAM так как его инитить правильно надо.

На будущее, чтобы не было таких кусков

R4 = 0xA84A9000; DM(0x2E) = R4;

делай asm("#include <def21065l.h>") - сдецел понятней получается.

На первый взгляд я естественно не чего не уловил правда пристально еще не смотрел.

Как бы так сказать я вообще больше С++ использую только для навороченных алгоритмов, а вообще на asm начинал. Поэтому немного другой подход к созданию и размещению модулей в памяти (какой лучше не знаю, но свой как говорится роднее). Правда в твоей конструкции на первый взгля вроде все тоже нормально.

Принципиально если есть желание можно будет потом по телефону перетрещать (если есть?). Я не обещаю, что сходу решу проблему, но вообщем-то лично мне кажется, что проблем с этим процом у меня просто больше нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все работает инитится и прыгает (в симуляторе). В эмуляторе не пробовал, но могу сказать,скорее всего, тоже работает. Я использую похожие конструкции постоянно.

Единственное, что хочется действитнельно понять процесс перезагрузки. Например, короткий RESET и не фига не сбрасывается. Или RESET вообще не поступает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лирическое отступление.

Есть в одном из блоков нашей фирмы так называемый модуль электронной карты. Содержит два Spartan2-200, два ADSP21065L (подсигара импортных тоже два ;)) ну и соответственно обвязка для DSP: 64мБ SDRAM, boot Flash 512k. В качестве видеопамяти используется скоростная синхронная статика. Я делал железо, наш программер писал для ADSP, далее это уезжало заказчику и тамашние программеры в постоянной перезвонке с нашим рисовали на телеке эелектронную карту. С год назад наш программер ушел, естественно тут все стало потихоньку накрываться медным тазом. Самому засесть за переписание всей проги я думаю с полгода потеряю (наш пришел студентом, года полтора делал, сначала чтоб под QNX просто в видеопамяти рисовалось, затем в ADSP переносил). Да и задолбают потом. Предложил такой вариант, слабаю я из этой платки крайне оптимизированную штуру для рисования карты пообъектно, тем более что еще год назад запеткал я туда четыре PicoBlazer-а в качестве аппаратных построителей линий которые сейчас простаивают, да мало-ли чего еще в плису затолкаю. Ранее в мои задачи входило только написание тестов того что есть в модуле, поступал я естественно так: просил у программера пример попроще вырезал остаток добавлял свои несколько десятков строк и тестировал. Сейчас надо с чувством с толком вылизать каждую детальку.

 

Теперь по существу.

Под "перезагрузкой" понимается следующее, программирование бутовой флешки с последующим сбросом процессора.

VDSP у мена 3.0.

А то что пример больше на франкинштейна похож, дак это от того что я его получал из разных тестов склеил.

До тщательных разборок с настройками SDRAM пока не добрался (подозреваю что корень зла именно там окапался), просто взял их из исходного проекта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Принципиально проблема ясна. Дело в том, что я примерно занимаюсь тем же вылизываю аппаратуру, а потом пишу под нее проги, если заказчик этого не делает. Принципиально я могу конечно по настройкам сказать какой SDRAM используется, но лучше конечно микросхему самому поюзать надо.

Аналогичные проблемы я встречал на заре своего знакомства с 65, но сейчас вроде нет таких проблем.

Я могу пронать прогу на нашем железе, но особого понта я в этом не вижу.

А.... я понял у тебя загрузчик (LDR) паченный, дело в том, что если это не так хрен ты нормально чего в SDRAM прогрузишь. там надо инит памяти проставлять, а не в проге (хотя если это визуальный пример(прога), то проблема в другом).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы.

Сейчас надо статистику глюков собирать и репу часать ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да принципиально не за что, если хочешь могу тебе LDR сделать с твоим инитом SDRAM'а, потом просто пропишешь его и пользуй на здоровье.

Если будут вопросы пиши, чем смогу тем помогу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...