|
|
  |
не получается выделить память в SDRAM_BANKx для BF537 |
|
|
|
Sep 24 2007, 10:09
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159

|
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 не выполняется , загрузчик нормально выполняется . В чем проблема может быть?
--------------------
Serj
|
|
|
|
|
Sep 25 2007, 15:37
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159

|
Цитата(WEST128 @ Sep 25 2007, 07:58)  Сперва вам следует проверить, куда линкер поместил вашу переменную. Для вашего кода загрузчик должен записать выделенный объем памяти нулями, может он где-то и ошибается. Попробуйте сделать вашу переменную неинициализируемой, чтобы снять с загрузчика задачу записи этого объема нулями, если поможет - проблема в нем. . -В ExpertLinker я указал куда положить этот массив, он в нужном банке. -Т.е. мне в загрузчике нужно написать заполнение нулями? У меня этого нет(там только настраиваются регистры для работы SDRAM). Или имеете ввиду в Startup ?
--------------------
Serj
|
|
|
|
|
Oct 3 2007, 13:08
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159

|
Цитата(WEST128 @ Sep 26 2007, 09:33)  Собственно, да. Все переменные, которые вы используете, по умолчанию должны быть инициализированы - соответственно, ваш массив тоже, и инициализиция происходит нулями. Что приводит к появлению в загрузочном файле нескольких блоков, в которых написано, какую область следует заполнять нулями. Это задача именно загрузчика. Рекомендую дописать загрузчик. Думается проблема в другом совсем. В первой строчке statUP вставил дергать ногой. Не исполняется startUP!!! когда убрал выделение памяти - все нормально. Шаманил с ревизией камня и размером выделяемого блока - в 2 совпадениях заработало. То ли линковщик чего то не туда рассовывает, то ли одно из двух. (в самой проге, когда нормально запускается, последовательный тест SDRAM по адресам 0x4 - 64MB без ошибок) куда копать
--------------------
Serj
|
|
|
|
|
Oct 5 2007, 07:20
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159

|
Цитата(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 подсоединяется к проекту)
--------------------
Serj
|
|
|
|
|
Oct 22 2007, 07:06
|

Участник

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159

|
Может кто, имеющий ADSP-BF537 EZ-KIT Lite, проверит мою прогу на плате? Нужно всего *.ldr загрузить по com порту и посмотреть что в терминалке покажет.
--------------------
Serj
|
|
|
|
|
Oct 22 2007, 08:26
|

Частый гость
 
Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831

|
А так ? Код #pragma section("sdram0_bank1",NO_INIT) u8 my_table[0xfffff];
|
|
|
|
|
Feb 21 2008, 11:06
|
Участник

Группа: Свой
Сообщений: 60
Регистрация: 4-04-06
Пользователь №: 15 797

|
Цитата(sse @ Oct 5 2007, 10:20)  Эффекта не обнаружилось. Я говорю, там StartUP даже не стартует. Я там в первой строке вставил дерганье ногой. Выполняется только INI_CODE (который отдельным DXE подсоединяется к проекту)  Ну дык усё верно. И не будет ваш черный фин запускаться-)! Вы же пытаетесь иницианализировать массив в SDRAM, т.е. писать туда данные (!!), на этапе загрузки BF!!, ДО того как у вас будет настроен контроллер SDRAM!. Потому проц и виснет на стартапе.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|