|
|
  |
Xilinx. Программа работает по jtag, но не работает из flash. |
|
|
|
Jan 30 2017, 15:34
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(x736C @ Jan 29 2017, 01:33)  Здравствуйте!
Проверьте сигнал сброса. Когда-то мучился с похожей проблемой и встречал тут на форуме не один раз подобное поведение ПЛИС с памятью.
UPD. Проверьте вообще начальную инициализацию регистров. Должен быть синхронизатор сброса. У меня Block Design на Microblaze. Сброс там сделан стандартно через блок "Processor System Reset". Я сделал в доп. к основному проекту 1 простой счетчик, которые считает и при переполнении мигает светодиодом. Этот счетчик не зависает. Работает нормально, то есть проблема где-то внутри Block Design. Проверить насколько правильно она проинициализирован наверное, невозможно.
|
|
|
|
|
Jan 30 2017, 16:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(Олег Гаврильченко @ Jan 30 2017, 18:34)  Этот счетчик не зависает. Работает нормально, то есть проблема где-то внутри Block Design. Проверить насколько правильно она проинициализирован наверное, невозможно. Не очень понятно, как Вы проверяете светодиодом и почему счетчик должен зависать. Надо проверить счетчик, в который по сбросу что-то должно быть загружено, отличное от того, что в нем оказывается при подаче питания в отсутствие сигнала сброса. Возможно, Вы так и сделали, только я не понял.
|
|
|
|
|
Jan 30 2017, 16:30
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(x736C @ Jan 30 2017, 19:11)  Не очень понятно, как Вы проверяете светодиодом и почему счетчик должен зависать.
Надо проверить счетчик, в который по сбросу что-то должно быть загружено, отличное от того, что в нем оказывается при подаче питания в отсутствие сигнала сброса. Возможно, Вы так и сделали, только я не понял. У меня проект на Microblaze системе. И вот эта система зависает. Я написал простую программу, которая мигает светодиодом. Если записать ее по JTAG - все работает. Если затем создать прошивку ПЛИС и прошить ее во flash, то ПЛИС запускается поработает минуту и зависает. Но если успеть подключиться к ПЛИС по JTAG и сделать Read Device Status - работает нормально. Я в дополнение к Microblaze системе сделал простой счетчик, который мигает другим светодиодом. С этим светодиодом все ОК, он не зависает никогда. Если подключиться отладчиком после того, как она зависла, то либо пишет что процессор в Sleep и подключение невозможно, либо что он пошел выполняет код из недопустимой памяти(то есть по адресам, которые у меня в проекте не определены).
Сообщение отредактировал Олег Гаврильченко - Jan 30 2017, 16:35
|
|
|
|
|
Jan 31 2017, 18:14
|
Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 31-07-06
Пользователь №: 19 224

|
Цитата(Олег Гаврильченко @ Jan 29 2017, 00:25)  Использую XILINX Kintex-7. VIVADO 2016.2. Режим конфигурации JTAG и SPI FLASH. Если загружаю прошивку по JTAG, работает нормально. Но если записываю эту же прошивку во flash и включаю питание, то программа некоторое время работает, а потом переходит в непонятное состояние, но точно некорректное. Я проверял правильность записи во flash, проверка CRC вклюена. При этом если дождаться окончания конфигурации из Flash и подключиться к ПЛИС по JTAG, даже не выполняя конфигурации, а только считать состояние, то и в этом случае программа работает нормально. В чем может быть причина такого поведения? Подключая кабель вы соединяетесь с землёй компьютера, поэтому проверьте нули и питание.
|
|
|
|
|
Feb 2 2017, 10:30
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Golikov A. @ Jan 31 2017, 18:05)  Что с кешами проца, используете или нет? не забыли их инвалидейтнуть после включения если пользуетесь? Есть ли внешняя память? Сошлись ли времянки? Пробовали шины проца сделать с промежуточными регистрами?
Предположение: проц греет плис, расползается времянка, разваливается шина, он хватает левую команду и повисает. Когда вы подключаетесь жетагом, жетаг его держит или снижает частоту работы... Временные ограничения удовлетворяются. Кэш не использую. Внешней памяти нет. Промежуточные регистры не пробовал, я не знаю, зачем они нужны и нужны ли они мне здесь?
Сообщение отредактировал Олег Гаврильченко - Feb 2 2017, 17:07
|
|
|
|
|
Feb 6 2017, 09:32
|

Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 10-02-15
Пользователь №: 85 052

|
Цитата(Golikov A. @ Feb 3 2017, 15:34)  со сходящимися времянками без кешей и внешней памяти, скорее всего не нужны. Прерывания какие-то есть, контроллер прерываний? Контроллера прерываний нет. Есть только Microblaze, MDM и GPIO.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|