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

не получается выделить память в SDRAM_BANKx для BF537

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 не выполняется , загрузчик нормально выполняется

.

В чем проблема может быть?

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


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

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

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


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

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

.

-В ExpertLinker я указал куда положить этот массив, он в нужном банке.

-Т.е. мне в загрузчике нужно написать заполнение нулями? У меня этого нет(там только настраиваются регистры для работы SDRAM). Или имеете ввиду в Startup ?

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


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

Собственно, да. Все переменные, которые вы используете, по умолчанию должны быть инициализированы - соответственно, ваш массив тоже, и инициализиция происходит нулями. Что приводит к появлению в загрузочном файле нескольких блоков, в которых написано, какую область следует заполнять нулями. Это задача именно загрузчика. Рекомендую дописать загрузчик.

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


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

Собственно, да. Все переменные, которые вы используете, по умолчанию должны быть инициализированы - соответственно, ваш массив тоже, и инициализиция происходит нулями. Что приводит к появлению в загрузочном файле нескольких блоков, в которых написано, какую область следует заполнять нулями. Это задача именно загрузчика. Рекомендую дописать загрузчик.

 

Думается проблема в другом совсем. В первой строчке statUP вставил дергать ногой. Не исполняется startUP!!!

когда убрал выделение памяти - все нормально. Шаманил с ревизией камня и размером выделяемого блока - в 2 совпадениях заработало. То ли линковщик чего то не туда рассовывает, то ли одно из двух.

(в самой проге, когда нормально запускается, последовательный тест SDRAM по адресам 0x4 - 64MB без ошибок)

 

куда копать :help:

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


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

Была похожая хрень на BF531: поместил system heap в L3 SDRAM, задал в опциях проекта minimum size=256K. В итоге malloc работал абы как, а calloc вообще зависал. Оказалось, что если minimum size сделать поменьше, 2К например, то все нормально, видимо там где-то 16 битовая переменная, которая при 256К переполняется.

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


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

Была похожая хрень на BF531: поместил system heap в L3 SDRAM, задал в опциях проекта minimum size=256K. В итоге malloc работал абы как, а calloc вообще зависал. Оказалось, что если minimum size сделать поменьше, 2К например, то все нормально, видимо там где-то 16 битовая переменная, которая при 256К переполняется.

 

 

Эффекта не обнаружилось.

Я говорю, там StartUP даже не стартует. Я там в первой строке вставил дерганье ногой.

Выполняется только INI_CODE (который отдельным DXE подсоединяется к проекту)

:wacko:

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


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

Может кто, имеющий ADSP-BF537 EZ-KIT Lite, проверит мою прогу на плате?

Нужно всего *.ldr загрузить по com порту и посмотреть что в терминалке покажет.

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


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

Эффекта не обнаружилось.

Я говорю, там StartUP даже не стартует. Я там в первой строке вставил дерганье ногой.

Выполняется только INI_CODE (который отдельным DXE подсоединяется к проекту)

:wacko:

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

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


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

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

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

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

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

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

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

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

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

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