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

Xilinx. Программа работает по jtag, но не работает из flash.

Использую XILINX Kintex-7. VIVADO 2016.2. Режим конфигурации JTAG и SPI FLASH.

Если загружаю прошивку по JTAG, работает нормально. Но если записываю эту же прошивку во flash и включаю питание, то программа некоторое время работает, а потом переходит в непонятное состояние, но точно некорректное. Я проверял правильность записи во flash, проверка CRC вклюена.

При этом если дождаться окончания конфигурации из Flash и подключиться к ПЛИС по JTAG, даже не выполняя конфигурации, а только считать состояние, то и в этом случае программа работает нормально. В чем может быть причина такого поведения?

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


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

Здравствуйте!

 

Проверьте сигнал сброса. Когда-то мучился с похожей проблемой и встречал тут на форуме не один раз подобное поведение ПЛИС с памятью.

 

UPD. Проверьте вообще начальную инициализацию регистров. Должен быть синхронизатор сброса.

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


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

Судя по ранним темам, что-то у вас с JTAG не то. Похоже ПЛИС ловит по JTAG какую-то муть после конфигурации. Есть документ "Command Line Tools User Guide" там было описано как выключить JTAG после конфигурации, если это конечно возможно для Kintex 7.

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


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

Как уже сказали, проверить состояния регистров при старте, т.е. правильность инициализации.

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


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

Здравствуйте!

 

Проверьте сигнал сброса. Когда-то мучился с похожей проблемой и встречал тут на форуме не один раз подобное поведение ПЛИС с памятью.

 

UPD. Проверьте вообще начальную инициализацию регистров. Должен быть синхронизатор сброса.

У меня Block Design на Microblaze. Сброс там сделан стандартно через блок "Processor System Reset". Я сделал в доп. к основному проекту 1 простой счетчик, которые считает и при переполнении мигает светодиодом. Этот счетчик не зависает. Работает нормально, то есть проблема где-то внутри Block Design. Проверить насколько правильно она проинициализирован наверное, невозможно.

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


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

Этот счетчик не зависает. Работает нормально, то есть проблема где-то внутри Block Design. Проверить насколько правильно она проинициализирован наверное, невозможно.

Не очень понятно, как Вы проверяете светодиодом и почему счетчик должен зависать.

 

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

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


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

Не очень понятно, как Вы проверяете светодиодом и почему счетчик должен зависать.

 

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

У меня проект на Microblaze системе. И вот эта система зависает. Я написал простую программу, которая мигает светодиодом. Если записать ее по JTAG - все работает. Если затем создать прошивку ПЛИС и прошить ее во flash, то ПЛИС запускается поработает минуту и зависает. Но если успеть подключиться к ПЛИС по JTAG и сделать Read Device Status - работает нормально.

Я в дополнение к Microblaze системе сделал простой счетчик, который мигает другим светодиодом. С этим светодиодом все ОК, он не зависает никогда.

Если подключиться отладчиком после того, как она зависла, то либо пишет что процессор в Sleep и подключение невозможно, либо что он пошел выполняет код из недопустимой памяти(то есть по адресам, которые у меня в проекте не определены).

Изменено пользователем Олег Гаврильченко

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


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

Что с кешами проца, используете или нет? не забыли их инвалидейтнуть после включения если пользуетесь?

Есть ли внешняя память?

Сошлись ли времянки? Пробовали шины проца сделать с промежуточными регистрами?

 

Предположение:

проц греет плис, расползается времянка, разваливается шина, он хватает левую команду и повисает. Когда вы подключаетесь жетагом, жетаг его держит или снижает частоту работы...

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


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

Использую XILINX Kintex-7. VIVADO 2016.2. Режим конфигурации JTAG и SPI FLASH.

Если загружаю прошивку по JTAG, работает нормально. Но если записываю эту же прошивку во flash и включаю питание, то программа некоторое время работает, а потом переходит в непонятное состояние, но точно некорректное. Я проверял правильность записи во flash, проверка CRC вклюена.

При этом если дождаться окончания конфигурации из Flash и подключиться к ПЛИС по JTAG, даже не выполняя конфигурации, а только считать состояние, то и в этом случае программа работает нормально. В чем может быть причина такого поведения?

 

Подключая кабель вы соединяетесь с землёй компьютера, поэтому проверьте нули и питание.

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


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

Что с кешами проца, используете или нет? не забыли их инвалидейтнуть после включения если пользуетесь?

Есть ли внешняя память?

Сошлись ли времянки? Пробовали шины проца сделать с промежуточными регистрами?

 

Предположение:

проц греет плис, расползается времянка, разваливается шина, он хватает левую команду и повисает. Когда вы подключаетесь жетагом, жетаг его держит или снижает частоту работы...

Временные ограничения удовлетворяются. Кэш не использую. Внешней памяти нет. Промежуточные регистры не пробовал, я не знаю, зачем они нужны и нужны ли они мне здесь?

Изменено пользователем Олег Гаврильченко

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


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

со сходящимися времянками без кешей и внешней памяти, скорее всего не нужны.

Прерывания какие-то есть, контроллер прерываний?

 

 

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


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

со сходящимися времянками без кешей и внешней памяти, скорее всего не нужны.

Прерывания какие-то есть, контроллер прерываний?

Контроллера прерываний нет. Есть только Microblaze, MDM и GPIO.

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


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

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

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

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

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

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

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

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

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

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