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

 
 
8 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> NIOS II, программирование ниос2 на СИ
doom13
сообщение Jan 20 2015, 12:24
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 20 2015, 14:58) *

С Вашим примером всё понятно, но тут всё немного не так. Альтеровский макрос гарантирует, что запись идёт мимо кэша, т.е. помимо записи по указателю должно быть что-то ещё.
Макрос максимум могу посмотреть до __builtin_stwio(void *, unsigned int), а это ни есть запись по указателю.

Цитата(krux @ Jan 20 2015, 14:00) *
http://www.altera.com/literature/hb/nios2/n2sw_nii52007.pdf
для данных есть такой метод как Bit-31 Cache Bypass для Nios II/f

To Golikov A.
вот это правильный документ, можете просмотреть, там есть описание того, что использование макросов из BSP позволяет обойти кэш о чём и шла речь. Т.е. это не равнозначно обращению к регистру через указатель.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 20 2015, 12:28
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну пипец ваша альтераsm.gif....

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

а вот явно указано

Цитата
Declaring a C pointer volatile does not make pointer accesses bypass the data cache.
The volatile keyword merely prevents the compiler from optimizing out accesses
using the pointer. This volatile behavior is different from the methodology for the
first-generation Nios processor.

что срали они на понятие изменяемый%) и просто оптимизацию отключают и рады)
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 20 2015, 12:30
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 20 2015, 15:27) *
ну пипец ваша альтераsm.gif....

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

т.е. вся дискуссия была для того, чтобы Вы сказали, что Альтера == дураки? смелое заявление
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 20 2015, 12:30
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Вот перевод http://www.naliwator.narod.ru/N2swHb9.pdf
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 20 2015, 13:12
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
т.е. вся дискуссия была для того, чтобы Вы сказали, что Альтера == дураки? смелое заявление

я сказал пипец ваша альтера, дураки ли они не знаю...

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

А вам не знаю...
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 20 2015, 13:41
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 20 2015, 16:12) *
я сказал пипец ваша альтера, дураки ли они не знаю...

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

А вам не знаю...

Хороший подход. Не зная, как оно устроено, Вы утверждали обратное, советовали не вводить человека в заблуждение,
потом сказали - "узнал много нового" lol.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 20 2015, 16:28
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



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

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

Ну в целом это не важно хихикайте дальшеwink.gif
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 23 2015, 07:47
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Возник еще такой вопрос: во время переключения DDR2 с чтения на запись и наоборот имеются тайминги, и как их учесть программно, т.е. у меня есть постоянно приходящие данные, которые записываются в DDR2, в нужные моменты времени эти данные считываются из DDR2, и хочу узнать можно ли программно отследить данные в этот маленький момент времени между переключениями ОЗУ.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 23 2015, 08:39
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 23 2015, 10:47) *
Возник еще такой вопрос: во время переключения DDR2 с чтения на запись и наоборот имеются тайминги, и как их учесть программно, т.е. у меня есть постоянно приходящие данные, которые записываются в DDR2, в нужные моменты времени эти данные считываются из DDR2, и хочу узнать можно ли программно отследить данные в этот маленький момент времени между переключениями ОЗУ.

Для программы Nios у Вас будет что-то типа memcpy() или цикл, "никаких маленьких моментов времени тут нет". Если хотите разгрузить процессор на время записи/чтения данных - используйте одно из ядер DMA/SgDMA/mSgDMA.
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 23 2015, 08:50
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 23 2015, 11:39) *
Для программы Nios у Вас будет что-то типа memcpy() или цикл, "никаких маленьких моментов времени тут нет". Если хотите разгрузить процессор на время записи/чтения данных - используйте одно из ядер DMA/SgDMA/mSgDMA.

я планировал на время чтения из DDR2 производить запись входных данных в on-chip memory. Как я понял программно отследить данные на время таймингов переключения не получится
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 23 2015, 08:54
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 23 2015, 11:50) *
я планировал на время чтения из DDR2 производить запись входных данных в on-chip memory. Как я понял программно отследить данные на время таймингов переключения не получится

Смотрите в направленни описанных ядер, поможет одновременно читать/писать данные и использовать процессор.
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 23 2015, 09:02
Сообщение #42


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(doom13 @ Jan 23 2015, 11:54) *
Смотрите в направленни описанных ядер, поможет одновременно читать/писать данные и использовать процессор.


Проблема DDR2 памяти в том, что она работает либо на чтение либо на запись. Данные приходят постоянно, а чтение происходит по запросу пользователя, т.е. может быть и раз в минуту, час. Объем данных для чтения 1.2 Мбайт. Поэтому сразу если выводить данные, то накопятся входные данные, а их терять нельзя. Решил использовать два on-chip memory и по кусочкам выводить эти 1.2Мбайта данных. Может есть какой то другой способ реализации?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 23 2015, 11:16
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(x66 @ Jan 23 2015, 12:02) *
Проблема DDR2 памяти в том, что она работает либо на чтение либо на запись. Данные приходят постоянно, а чтение происходит по запросу пользователя, т.е. может быть и раз в минуту, час. Объем данных для чтения 1.2 Мбайт. Поэтому сразу если выводить данные, то накопятся входные данные, а их терять нельзя. Решил использовать два on-chip memory и по кусочкам выводить эти 1.2Мбайта данных. Может есть какой то другой способ реализации?

Тут ещё про шину avalon почитайте, если два устройства будут стучаться к DDR, она должна будет разрулить время доступа для каждого из устройств.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 23 2015, 11:59
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Вам FIFO надо.

Данные поступают в FIFO а оттуда в DDR, через какой либо DMA контроллер.

Если данные нужны кому-то еще вы их читаете из ДДР, это приостанавливает DMA контроллер, и данные на время задержек падают в FIFO.

Ничего руками разруливать не надо, потому что проц не долбиться в шину постоянно (хотя может НИОС опять по чудному сделан, но надеюсь что нет). Вот и пока проц делает что-то еще, ДМА сам займет шину и успеет положить еще кусочек. Систему надо строить именно на таком принципе. Кстати ДДР контроллер разьве изначально не 2 портовый?

Вам надо перейти на следующий уровень абстракции, надо забыть про то какая у вас память, это забота контроллера, вы же не собираетесь еще сами следить за тем вовремя ли он подает ревреши, я надеюсь%)... Так же забота контроллера обеспечивать доступ к памяти по нескольким портам, во всяком случае у ксалинкс контроллер точно несколько портовый с арбитражем, наверяка у вас тоже, если это не так, то надо делать свой контроллер - арбитр, но не лезть к памяти напрямую, это дело контроллера памяти.

Обратите внимание что контроллер памяти ДДР - это не что-то собранное из вентилей ПЛИС, а отдельная область, готовый блок, слишком там все по таймингам не просто.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 23 2015, 12:03
Сообщение #45


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Golikov A. @ Jan 23 2015, 14:59) *
Обратите внимание что контроллер памяти ДДР - это не что-то собранное из вентилей ПЛИС, а отдельная область, готовый блок, слишком там все по таймингам не просто.

Это уже от ПЛИС зависит, может быть и на логике собран.
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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