реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Использование EPCS64, программа загружается из ПЗУ в ОЗУ, но не стартует
andrew89
сообщение Jan 15 2015, 07:10
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 15-01-15
Пользователь №: 84 601



Здравствуйте!
Помогите разобраться со следующей проблемой:
имеется отладочная плата Altera DE0-Nano c FPGA Cyclone IV EP4CE22 и конфигурационное ПЗУ EPCS64.
Требуется, чтобы по включению питания ПЛИС запускалась программа.
Преобразую (.sof) и (.elf) во (.flash) и загружаю в EPCS, всё согласно "User guide. Nios2 flash programmer".
После передергивания питания программа НЕ стартует сама. Если же запустить в консоли "nios2-terminal", программа запускается.
Запуск программы отслеживается по загоранию светодиода.

Вопрос: как сделать, чтобы программа стартовала сама, без запуска "nios2-terminal"?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 15 2015, 08:28
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



1. В системе должен присутствовать epсы_flash-controller.
2. Вектор сброса процессора должен указывать на него.
3. В bsp надо запретить исполнение кода приложения с адреса сброса.

Покажите Ваши настройки bsp.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 15 2015, 08:30
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Блокирующий printf мб где то ее подвешивает? Там вроде 2 варианта реализации printf в зависимости от настроек BSP, в одном случае требуется подключенная JTAG консоль - в другом нет. Вообще лучше из автономной программы printf убирать
Go to the top of the page
 
+Quote Post
andrew89
сообщение Jan 15 2015, 09:52
Сообщение #4





Группа: Новичок
Сообщений: 3
Регистрация: 15-01-15
Пользователь №: 84 601



Цитата(Stewart Little @ Jan 15 2015, 12:28) *
1. В системе должен присутствовать epсы_flash-controller.
2. Вектор сброса процессора должен указывать на него.
3. В bsp надо запретить исполнение кода приложения с адреса сброса.

Покажите Ваши настройки bsp.


1 и 2 пункты сделаны были.
а 3й пункт - галка убрана "allow code at reset" - вы это имели ввиду?

Цитата(serjj @ Jan 15 2015, 12:30) *
Блокирующий printf мб где то ее подвешивает? Там вроде 2 варианта реализации printf в зависимости от настроек BSP, в одном случае требуется подключенная JTAG консоль - в другом нет. Вообще лучше из автономной программы printf убирать

printf не использую
Go to the top of the page
 
+Quote Post
WitFed
сообщение Jan 16 2015, 12:34
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 271
Регистрация: 6-12-11
Из: Taganrog
Пользователь №: 68 701



Могу предложить "по-живому" подключиться к свежевключенной программе отладчиком и глянуть, где она ждёт чего-то вечно. Вдруг всё не в раскоряке. Дебужная информация же есть, имена функций будут видны в дизассемблере, стек...
Если совсем мусор наблюдается -- можно в main() поставить "while (1) ;" и подключиться, затем перейти к следующим строкам и дебажить по-человечески до проблемы.
Ну а если вообще не коннектится -- это загрузчик недоработал, программа не стартовала в принципе, отлаживать/просматривать надо загрузчик.
Выгружать содержимое всей памяти можно в хорошем (старт под отладчиком) и плохом случаях для сравнения -- код отличаться не должен, ну в данных что-то может тронуться...
Вообще, если пуск nios2-terminal-а "оживляет" старт уже включённого устройства, то там точно ожидается наличие хоста, которое в реале надо отрубить.
У меня похожее было в ARM-e на Cyclone V -- не доходя до main(), буквально на 7й asm-команде вызывается запрос системной библиотеки на семихостинг SVC -- открытие stdin или stdout, а отладчика нет, обработчика этого прерывания тоже -- и всё зацикливается навечно в дефолтном обработчике.
Go to the top of the page
 
+Quote Post
andrew89
сообщение Jan 19 2015, 05:13
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 15-01-15
Пользователь №: 84 601



Цитата(WitFed @ Jan 16 2015, 16:34) *
У меня похожее было в ARM-e на Cyclone V -- не доходя до main(), буквально на 7й asm-команде вызывается запрос системной библиотеки на семихостинг SVC -- открытие stdin или stdout, а отладчика нет, обработчика этого прерывания тоже -- и всё зацикливается навечно в дефолтном обработчике.

И каким способом вам удалось решить эту проблему?

P.S. Можно ли предположить, что Nios2 добавляет к рабочему коду нашей программы код отладчика, который запускает нашу программу по команде "nios2-terminal"? И задача состоит в отключении кода отладчика?
Go to the top of the page
 
+Quote Post
wpost
сообщение Feb 26 2015, 16:45
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



На циклоне 5 при использовании DDR2 озу для ниоса программа грузится из epcs в озу, но не стартует. проблема решается рукописным копировщиком на базе onchipmemory. Возможно тут что-то похожее.

попробуйте сделать аппаратный сброс системы (ниоса) по включению питания.
Попробуйте на ончип озу запуститься.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.02054 секунд с 7
ELECTRONIX ©2004-2016