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

 
 
8 страниц V  « < 5 6 7 8 >  
Reply to this topicStart new topic
> NIOS II, программирование ниос2 на СИ
x66
сообщение Jan 28 2015, 14:02
Сообщение #91


Участник
*

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



Цитата(Golikov A. @ Jan 28 2015, 16:54) *
нет.
Надо просто линкеру указать что у него есть такая память.


Ну я все элементы добавил и указал адреса. Сделал несколько проектов в кусис.

Кстати, можно ли как-то внося изменения в кусисе применять их и в ниос2 эклипсе не создавая заново проект. А то не удобно каждый раз заново создавать проект
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 14:14
Сообщение #92


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

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



Цитата(x66 @ Jan 28 2015, 17:02) *
Кстати, можно ли как-то внося изменения в кусисе применять их и в ниос2 эклипсе не создавая заново проект. А то не удобно каждый раз заново создавать проект

Этого и не надо делать (заново создавать). Правой кнопкой на project_name_bsp->Nios II->Generate BSP/BSP Editor (если хотите настройки генерации BSP менять).
Go to the top of the page
 
+Quote Post
x66
сообщение Jan 28 2015, 14:22
Сообщение #93


Участник
*

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



Цитата(doom13 @ Jan 28 2015, 17:14) *
Этого и не надо делать (заново создавать). Правой кнопкой на project_name_bsp->Nios II->Generate BSP/BSP Editor (если хотите настройки генерации BSP менять).


А если я в кусисе переименовал проект, то как можно сделать?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 14:34
Сообщение #94


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

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



Цитата(Golikov A. @ Jan 28 2015, 16:39) *
а... 3.2 Гигабита...

Тут я просто обязан был спросить: Вы ошибались, да? wink.gif


Цитата(x66 @ Jan 28 2015, 17:22) *
А если я в кусисе переименовал проект, то как можно сделать?

Тогда есть варианты, но я бы сделал так:
progect_name_bsp->BSP Editor->вылазит окно Nios II BSP Editor
Далее в окне Nios II BSP Editor:
File->New BSP->Выбираете нужный (новый) SOPC Information File Name->снимаете галку Use default locations->Задаёте название progect_name_bsp->Generate

В эклипсе все названия сохранятся, а ссылаться будет на новое железо.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 14:34
Сообщение #95


Гуру
******

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



Получается что я ошибся... мне только не понятно чего вы хотите?

Если вам будет приятно потешить местечковое самолюбие вы разработчик конечно гораздо лучше чем я.
Одна идея что DMA контроллер, который работает через туже шину что проц и делит с ним эту шину, будет работать быстрее чем проц отдельного уже говорит о многом.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 14:52
Сообщение #96


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

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



Цитата(Golikov A. @ Jan 28 2015, 17:34) *
Если вам будет приятно потешить местечковое самолюбие вы разработчик конечно гораздо лучше чем я.

Не собирался тут с Вами ничем меряться, всего лишь указал на Ваше свойство уверенно давать ответы на вопросы в которых Вы некомпетентны. Извините, если это задело Вас.
Далее был просто стёб, жаль, что Вы не заценили crying.gif

Цитата(Golikov A. @ Jan 28 2015, 17:34) *
Одна идея что DMA контроллер, который работает через туже шину что проц и делит с ним эту шину, будет работать быстрее чем проц отдельного уже говорит о многом.

Я не говорил, что это будет быстрее (если читать/писать данные в одну и ту же память), а говорил, что это разгрузит проц и он сможет делать что-то там ещё во время пока DMA переливает данные.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 15:42
Сообщение #97


Гуру
******

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



Из полезного вот что надо сделать
надо ниосом в память записать кусок данных
считать кусок данных
и записать - считать кусок данных попеременно (то есть 4 байта записали, затем 4 байта считали). Этот режим лучше попробовать в нескольких вариантах (16 байт записали, 4 считали, 32 байта записали, 4 считали).
Писать и читать надо из разных адресов. Данные для записи надо брать из какой-то valotile переменной. А лучше из внешней периферии потому что надо еще через кеш альтеры пробиться, то есть чтобы компилятор поставил правильные команды.

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

при скорости 15 МСлов в секунду и проце 100 МГц, у вас на каждую операцию есть 6 тактов, что-то мне говорит что проц не успеет. Кстати сколько микросхем памяти у проца? то есть реально какой длинны слово оно может записать за такт?

П.С. фраза "что-то мне говорит" означает что я не уверен, но мне так кажется
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 16:55
Сообщение #98


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

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



Цитата(Golikov A. @ Jan 28 2015, 18:42) *
Кстати сколько микросхем памяти у проца? то есть реально какой длинны слово оно может записать за такт?

Микросхема памяти там одна, это можно посмотреть в доке на плату (название платы ТС приводил выше).
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 17:20
Сообщение #99


Гуру
******

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



А сколько тактов доступ к данным по шине Avalon? На чтение, на запись, и в бёрсте? И сколько частота шины в вашем проце?
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2015, 18:25
Сообщение #100


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

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



Цитата(Golikov A. @ Jan 28 2015, 20:20) *
А сколько тактов доступ к данным по шине Avalon? На чтение, на запись, и в бёрсте? И сколько частота шины в вашем проце?

Частота шины будет равна частоте процессора (100 МГц). Это и будет максимально возможная скорость записи/чтения, если контроллер DDR2 не будет тупить и выставлять waitrequest, и если данные будут записываться потоком. Спецификацию на Avalon MM, если интересно, можете посмотреть тут.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 28 2015, 18:47
Сообщение #101


Гуру
******

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



это если писать слово за словом, а первое обращение по адресу? неужто 1 такт?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jan 29 2015, 09:14
Сообщение #102


Гуру
******

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



по ходу ДМА все таки придется ставить...
Go to the top of the page
 
+Quote Post
x66
сообщение Feb 6 2015, 09:33
Сообщение #103


Участник
*

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



Цитата(Golikov A. @ Jan 20 2015, 12:24) *
нет
потому что нужно адрес не
int addr_on_chip=0x4008000

а
int *addr_on_chip = (int *)0x4008000;

записать туда *addr_on_chip = 10;
считать оттуда
int Temp = *addr_on_chip;


при условии что 0x4008000 - это адрес в ДДР


смотрел код из документа an398.pdf там написано

unsigned int *led_address;
unsigned long *DDR_address; //long is 32 bits.
int led_value;
int addr;
int datar;
int ddr_data_out;
char packet[32];
DDR_address = (unsigned long *)0x80000000; //make non-cache
led_address = (unsigned int *)0x84008800; //make non-cache

В чем отличие *addr_on_chip = (int *)0x4008000 от addr_on_chip = (int *)0x4008000
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 6 2015, 10:16
Сообщение #104


Гуру
******

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



букварь по С надо почитать.
в чем отличие
int A;
от
int *A;
?

забавно что в вашем примере непонимание еще даже глубжеsm.gif

вам надо еще узнать разницу между

int *A;

и
*A просто, при условии что объявлено как int *A;


естественно в приведенном примере сделано правильно
переменная объявлена как указатель и адресу присвоено значение


меня вот комментарии интересуют
0x84008800; //make non-cache
то есть получается что адрес 4008800 - под кешем, а если поставить старшую единичку, то будет обращение в те же адреса, только без кеша?
так надо это понимать? То есть у ниоса тоже есть не кешируемое пространство, и в целом можно обращаться к портам через указатель, просто написав макрос добавления старшей единички? Или там как-то хитро ММУ настроен, что обращение в эти адреса порождает вызов спец команд?

---upd
перечитал некрасиво без ответа

int *A; - объявление указателя на int
int *A = (int *)ADDR; - объявление указателя на int и сразу задание указателю значения ADDR (ссылается на адрес ADDR)
A = (int *)ADDR; - задание значение указателю ADDR (ссылается на адрес ADDR)
*A = VALUE; - задание значения переменной на которую ссылается указатель
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 6 2015, 10:20
Сообщение #105


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

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



Цитата(Golikov A. @ Feb 6 2015, 13:16) *
то есть получается что адрес 4008800 - под кешем, а если поставить старшую единичку, то будет обращение в те же адреса, только без кеша?
так надо это понимать?

Да, у NiosII gen1 именно так. "Буквать по ... надо почитать" (с) Ваше.

У NiosII gen2, кстати, кэширование делается уже по-другому.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post

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

 


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


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