Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не получается выделить память в SDRAM_BANKx для BF537
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
sse
hi
есть кит ADSP-BF537 STAMP Board, VisualDSP_4.5 Update June 2007, гружусь по COM-portу
.
В загрузчике:
-инициализ-ся SDRAM
-по адресу в 3 банке SDRAM пишется число(чтоб в основной проверить что нормально всё)
-одну ножку в output перевожу(чтоб видно было что загрузчик выполнился)
.
В main
-Проверяю что загрузчик записал в 3 банк SDRAM (правильно)
-Пишу во всю SDRAM и потом проверяю, непосредстенно по адресам с 0x4 - fffffe u32 слов(правильно)
-вся статистика по COM-порту в комп шлется (пишу прямо в регистры)
.
Это все работает. Но когда в глобальных пишу:
section ("sdram0_bank1") u8 my_table[0xfffff];
main не выполняется , загрузчик нормально выполняется
.
В чем проблема может быть?
WEST128
Сперва вам следует проверить, куда линкер поместил вашу переменную. Для вашего кода загрузчик должен записать выделенный объем памяти нулями, может он где-то и ошибается. Попробуйте сделать вашу переменную неинициализируемой, чтобы снять с загрузчика задачу записи этого объема нулями, если поможет - проблема в нем.
sse
Цитата(WEST128 @ Sep 25 2007, 07:58) *
Сперва вам следует проверить, куда линкер поместил вашу переменную. Для вашего кода загрузчик должен записать выделенный объем памяти нулями, может он где-то и ошибается. Попробуйте сделать вашу переменную неинициализируемой, чтобы снять с загрузчика задачу записи этого объема нулями, если поможет - проблема в нем.

.
-В ExpertLinker я указал куда положить этот массив, он в нужном банке.
-Т.е. мне в загрузчике нужно написать заполнение нулями? У меня этого нет(там только настраиваются регистры для работы SDRAM). Или имеете ввиду в Startup ?
WEST128
Собственно, да. Все переменные, которые вы используете, по умолчанию должны быть инициализированы - соответственно, ваш массив тоже, и инициализиция происходит нулями. Что приводит к появлению в загрузочном файле нескольких блоков, в которых написано, какую область следует заполнять нулями. Это задача именно загрузчика. Рекомендую дописать загрузчик.
sse
Цитата(WEST128 @ Sep 26 2007, 09:33) *
Собственно, да. Все переменные, которые вы используете, по умолчанию должны быть инициализированы - соответственно, ваш массив тоже, и инициализиция происходит нулями. Что приводит к появлению в загрузочном файле нескольких блоков, в которых написано, какую область следует заполнять нулями. Это задача именно загрузчика. Рекомендую дописать загрузчик.


Думается проблема в другом совсем. В первой строчке statUP вставил дергать ногой. Не исполняется startUP!!!
когда убрал выделение памяти - все нормально. Шаманил с ревизией камня и размером выделяемого блока - в 2 совпадениях заработало. То ли линковщик чего то не туда рассовывает, то ли одно из двух.
(в самой проге, когда нормально запускается, последовательный тест SDRAM по адресам 0x4 - 64MB без ошибок)

куда копать help.gif
Itch
Была похожая хрень на BF531: поместил system heap в L3 SDRAM, задал в опциях проекта minimum size=256K. В итоге malloc работал абы как, а calloc вообще зависал. Оказалось, что если minimum size сделать поменьше, 2К например, то все нормально, видимо там где-то 16 битовая переменная, которая при 256К переполняется.
sse
Цитата(Itch @ Oct 4 2007, 12:12) *
Была похожая хрень на BF531: поместил system heap в L3 SDRAM, задал в опциях проекта minimum size=256K. В итоге malloc работал абы как, а calloc вообще зависал. Оказалось, что если minimum size сделать поменьше, 2К например, то все нормально, видимо там где-то 16 битовая переменная, которая при 256К переполняется.



Эффекта не обнаружилось.
Я говорю, там StartUP даже не стартует. Я там в первой строке вставил дерганье ногой.
Выполняется только INI_CODE (который отдельным DXE подсоединяется к проекту)
wacko.gif
sse
Может кто, имеющий ADSP-BF537 EZ-KIT Lite, проверит мою прогу на плате?
Нужно всего *.ldr загрузить по com порту и посмотреть что в терминалке покажет.
bmf
А так ?

Код
#pragma section("sdram0_bank1",NO_INIT)
u8 my_table[0xfffff];
ATname
Цитата(sse @ Oct 5 2007, 10:20) *
Эффекта не обнаружилось.
Я говорю, там StartUP даже не стартует. Я там в первой строке вставил дерганье ногой.
Выполняется только INI_CODE (который отдельным DXE подсоединяется к проекту)
wacko.gif

Ну дык усё верно. И не будет ваш черный фин запускаться-)! Вы же пытаетесь иницианализировать массив в SDRAM, т.е. писать туда данные (!!), на этапе загрузки BF!!, ДО того как у вас будет настроен контроллер SDRAM!. Потому проц и виснет на стартапе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.