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

    

Прошу помощи с Blackfin и SDRAM

cplb_miss_without_replacement - откуда ноги уэто йоштбки растут, кто-нибудь сталкивался?

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


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

Ноги у неё растут из нечитанных даташитов. ;)

 

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

Но Вы можете избежать всех этих непонятных проблем, запустив на плате OS.

Например uClinux. Если проект обьёмный, то вам рано или поздно придётся это сделать.

 

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


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

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

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


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

>> никакого чужого кода

Эх печалька вам тогда...

 

А что возвестили вам даташиты по поводу кода ошибки?

Цифру огласите.

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


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

Эх печалька вам тогда...

 

А что возвестили вам даташиты по поводу кода ошибки?

Цифру огласите.

 

Ну пичальки никакой не вижу, а код ошибки - Instruction fetch CPLB miss 0x2C E CPLB miss on an instruction fetch. Не пойму, что не так с сгенерированой таблицей. Может не в таблице дело?

 

Приведу и таблицу.

 

#pragma section("cplb_data")

cplb_entry icplbs_table[] = {



/*$VDSG<customizable-instr-cplb-table>                          */
/* This code is preserved if the CPLB tables are re-generated.  */


   // L1 Code
   {0xFFA00000, (PAGE_SIZE_1MB | CPLB_I_PAGE_MGMT)}, 

   // Async Memory Bank 2 (Secnd)
   // Async Memory Bank 1 (Prim B)
   // Async Memory Bank 0 (Prim A)
   //{0x20200000, (PAGE_SIZE_1MB | CPLB_INOCACHE)}, 
  // {0x20100000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)}, 
  // {0x20000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)}, 

   // 128 MB (Maximum) SDRAM memory space (32/64 MB populated on Ez-kit)
   
   // CPLBs covering 16MB
   {0x00000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00100000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00200000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00300000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00400000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00500000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00600000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00700000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00800000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00900000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00a00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00b00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00c00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00d00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00e00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},
   {0x00f00000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)},

   // Async Memory Bank 3 
  // {0x20300000, (PAGE_SIZE_1MB | CPLB_INOCACHE)}, 

   // 32kB Boot ROM
   {0xEF000000, (PAGE_SIZE_1MB | CPLB_IDOCACHE)}, 

   // end of section - termination
   {0xffffffff, 0}, 
/*$VDSG<customizable-instr-cplb-table>                          */


}; /* icplbs_table */

Что странно - адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв".

В мимуляторе отработало все как надо... но ему доверять...

Изменено пользователем novlev

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


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

Замечательно, завтра посмотрю, сегодня всё,

 

Хотя можно и по быстрому:

if (var_EXCAUSE==0x27)

{

sprintf(s_debug,"Промах в CPLB при выборке команды");

fprintf(stderr, "%s\n", s_debug);

}

 

 

Теперь откройте супермега даташит и посмотрите, почему эта неприятность вдруг случилась.

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


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

Запустил код на демоборде - все работает. Оказывается она норм инициализирует озу. А если пристегнуть кастом борд xml к моей железяке - значения в регистры попадают, но в сд стате висит ошибка, т е озу фигово инициализировалась. Вопрос - в чем может быть причина такого поведения?

Изменено пользователем novlev

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


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

Вы же сами написали почему:

>>адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв".

Читайте раздел: "Интерфейс внешней шины".

 

А про ОЗУ мне ничего не известно, вчера Вы утверждали, что многократно его успешно оттестили.

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


Ссылка на сообщение
Поделиться на другие сайты
Вы же сами написали почему:

>>адрес вылета - 0100002E, он вроде как для моего процессора находится в области "резерв".

Читайте раздел: "Интерфейс внешней шины".

 

А про ОЗУ мне ничего не известно, вчера Вы утверждали, что многократно его успешно оттестили.

 

Этот адрес вылета не имеет значения, это плод криво залитого кода из-за фиговой инициализации айсом озухи, на реальной железяке инит код норм все делает, - телевизор же работал без сбоев. Сейчас картина уже другая, вылет по реальному адресу, 0х208 - это буду смотреть, что именно не нравится (на демо борде работал и на этом адресе).

 

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


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

Дорогой друг.

Вы уж определитесь как-то более основательно.

Я не телепат, и подсказать вам смогу предметно, если симптомы будут более конкретные.

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


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

Вы уж определитесь как-то более основательно.

Я не телепат, и подсказать вам смогу предметно, если симптомы будут более конкретные.

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

 

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


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

Проблема была в железе :) Гигагерцовый осмыслограф все показал и рассказал. Пара дорожек звенели, терминаторы были далеко от абонента.

Вывод - надо внимательнее проверять шину на предмет отраженных сигналов.

Напишу подробнее: в мурзилке на MT48LC8M16A2 есть строки "VDDQ Supply DQ power: Isolated DQ power on the die for improved noise immunity. VSSQ Supply DQ ground: Isolated DQ ground on the die for improved noise immunity." - вот в этом месте земля была через дроссель к основной подключена. В этом и была причина, убрав дроссель получили норм фронты.

Изменено пользователем novlev

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация