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

 
 
> Вопрос по сбросу Nios процессора?, Не хочет стартовать после сброса?
inco
сообщение Apr 18 2009, 08:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Собственно сам вопрос в заголовке темы.

Есть некоторая система на циклоне 3 с ниос процессором на борту. Конфигурация такая: загрузка идёт из epcs вектор старта программы прописан на внутреннее озу (другого нет). То есть по включению питания программа и конфигурация грузятся прямо в плис и всё стартует и работает нормально. Теперь если нажать на кнопку сброс процессора (она сделана как вход на внешнем пине плис) то система сбрасывается, видно по периферии, то-есть сброс проходит, но далее система висит в этом состоянии, программа не стартует и проект не работает. При этом если я из иде ниоса загружаю программу для отладки и запускаю ёё все стартует и работает далее, или если я по новой через jtag загружу конфигурацию тоже всё стартует и работает. Таким образом видно что не выполняется старт программы из внутреннего озу после сброса.

Вот и вопрос, что я где пропустил или не дочитал? Чего ему (проекту) не хватает?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sanjaaaa
сообщение Apr 24 2009, 06:47
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 5-06-08
Пользователь №: 38 073



"То что EPCS - простая MM это не правильно." - это я имел ввиду что epcs - нелинейная память. Её нельзя читать/писать вот так:

alt_u8* ptr;
prt = (alt_u8)EPCS_BASE;
*prt = 0x58;

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

По теме вопроса не понял как ты вообще зашиваешь прогу в EPCS, к .jic или .pof файлу её прикрепляешь или flash programmerom из NIOS IDE?
Go to the top of the page
 
+Quote Post
inco
сообщение Apr 24 2009, 16:09
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Цитата(sanjaaaa @ Apr 24 2009, 09:47) *
"То что EPCS - простая MM это не правильно." - это я имел ввиду что epcs - нелинейная память. Её нельзя читать/писать вот так:

alt_u8* ptr;
prt = (alt_u8)EPCS_BASE;
*prt = 0x58;

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

По теме вопроса не понял как ты вообще зашиваешь прогу в EPCS, к .jic или .pof файлу её прикрепляешь или flash programmerom из NIOS IDE?


"Её нельзя читать/писать вот так:" - ну это было понятно из документации, только через АПИ. Поэтому я и говорил что раз не пользуюсь АПИ для епцс то и не вижу возможности его испортить.

Сейчас я компилирую проект в ниосе, который создаёт хекс файл, который в свою очередь используется как инициализационный для внутренней памяти. Вот собственно и всё. После этого когда квартус генерит pof файл для епцс в него уже входит всё и собственно конфигурация плис и инициализация памяти. Затем после включения питания сразу грузится из епцс конфигурация и память и всё стартует!

И потом при отладке я просто из ниоса заливаю новую программу сразу в озу, не в епцс и тоже всё работает!
А вот если я нажму на кнопку сброс, то система сбрасывается и висит в этом состоянии пока я снова не залью прошивку(программу) из иде ниоса и не запущу её из иде.

Тут у меня возникла мысля. А не может это быть связано с тем что если происходит сброс, то стартовый адрес для программы сбрасывается в 0, где у меня епцс а не программа, хотя по идее система должна об этом знать что сбрасывать адрес программы надо не в 0, а в 0х1000 где у меня озу.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 26 2009, 03:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(inco @ Apr 24 2009, 23:09) *
"Её нельзя читать/писать вот так:" - ну это было понятно из документации, только через АПИ. Поэтому я и говорил что раз не пользуюсь АПИ для епцс то и не вижу возможности его испортить.

API-это просто обертка для доступа к управляющим регистрам. сама EPCS - не memory-mapped, а вот управляющие регистры - таки да. записав в эти регистры мусор(через IOWR, например), можно инициировать запись/стирание. но это с какой-то вероятностью. посмотрите код драйвера для EPCS, там все совершенно прозрачно. + сравните описание регистров EPCS и SPI контроллеров.

Цитата(inco @ Apr 24 2009, 23:09) *
Сейчас я компилирую проект в ниосе, который создаёт хекс файл, который в свою очередь используется как инициализационный для внутренней памяти. Вот собственно и всё. После этого когда квартус генерит pof файл для епцс в него уже входит всё и собственно конфигурация плис и инициализация памяти. Затем после включения питания сразу грузится из епцс конфигурация и память и всё стартует!

flash programmer -ом не пользуетесь? имхо, удобнее.
www.altera.com/literature/ug/ug_nios2_flash_programmer.pdf

Цитата(inco @ Apr 24 2009, 23:09) *
И потом при отладке я просто из ниоса заливаю новую программу сразу в озу, не в епцс и тоже всё работает!
А вот если я нажму на кнопку сброс, то система сбрасывается и висит в этом состоянии пока я снова не залью прошивку(программу) из иде ниоса и не запущу её из иде.

Тут у меня возникла мысля. А не может это быть связано с тем что если происходит сброс, то стартовый адрес для программы сбрасывается в 0, где у меня епцс а не программа, хотя по идее система должна об этом знать что сбрасывать адрес программы надо не в 0, а в 0х1000 где у меня озу.

а, вроде понятно. видимо, ресет подключен только к ниос? а вектор сброса указывает на внутреннее ОЗУ? тогда "это не баг, это - фича". сделайте вектор сброса на EPCS, пользуйтесь flash programmer-ом для обновления и будет вам счастье. загружать программу из ниос-иде во внутреннее ОЗУ и отлаживать в железе будет по-прежнему возможно. да, еще выложите картинку из SOPC-билдера и настройки линкера(в свойствах System Library в ниос иде)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- inco   Вопрос по сбросу Nios процессора?   Apr 18 2009, 08:33
- - Kuzmi4   А вы не модифицируете случаем код во время исполн...   Apr 18 2009, 10:14
|- - inco   Цитата(Kuzmi4 @ Apr 18 2009, 13:14) А вы ...   Apr 18 2009, 15:24
- - vadimuzzz   можно попробовать signaltap`ом старт отследить...   Apr 19 2009, 05:22
- - PeterD   Поставте вектор сброса на eps контроллер. А вектор...   Apr 19 2009, 07:00
|- - inco   Цитата(PeterD @ Apr 19 2009, 10:00) Поста...   Apr 19 2009, 09:59
|- - vadimuzzz   Цитата(inco @ Apr 19 2009, 16:59) У меня ...   Apr 21 2009, 11:14
|- - inco   Цитата(vadimuzzz @ Apr 21 2009, 14:14) эт...   Apr 21 2009, 16:21
|- - vadimuzzz   Цитата(inco @ Apr 21 2009, 23:21) У меня ...   Apr 21 2009, 22:36
- - sanjaaaa   Правильно тебе советуют - вектор сброса должен быт...   Apr 23 2009, 13:36
|- - inco   Цитата(sanjaaaa @ Apr 23 2009, 16:36) Пра...   Apr 23 2009, 17:01
|- - inco   Отчитываюсь! Со сбросом разобрался. Всё работа...   May 7 2009, 17:15
- - sanjaaaa   Цитатачто-то я не понял может-ли исполняться код и...   May 13 2009, 09:02


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

 


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


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