x66 0 January 28, 2015 Posted January 28, 2015 · Report post нет. Надо просто линкеру указать что у него есть такая память. Ну я все элементы добавил и указал адреса. Сделал несколько проектов в кусис. Кстати, можно ли как-то внося изменения в кусисе применять их и в ниос2 эклипсе не создавая заново проект. А то не удобно каждый раз заново создавать проект Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 January 28, 2015 Posted January 28, 2015 · Report post Кстати, можно ли как-то внося изменения в кусисе применять их и в ниос2 эклипсе не создавая заново проект. А то не удобно каждый раз заново создавать проект Этого и не надо делать (заново создавать). Правой кнопкой на project_name_bsp->Nios II->Generate BSP/BSP Editor (если хотите настройки генерации BSP менять). Quote Share this post Link to post Share on other sites More sharing options...
x66 0 January 28, 2015 Posted January 28, 2015 · Report post Этого и не надо делать (заново создавать). Правой кнопкой на project_name_bsp->Nios II->Generate BSP/BSP Editor (если хотите настройки генерации BSP менять). А если я в кусисе переименовал проект, то как можно сделать? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 January 28, 2015 Posted January 28, 2015 · Report post а... 3.2 Гигабита... Тут я просто обязан был спросить: Вы ошибались, да? ;) А если я в кусисе переименовал проект, то как можно сделать? Тогда есть варианты, но я бы сделал так: 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 В эклипсе все названия сохранятся, а ссылаться будет на новое железо. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 January 28, 2015 Posted January 28, 2015 · Report post Получается что я ошибся... мне только не понятно чего вы хотите? Если вам будет приятно потешить местечковое самолюбие вы разработчик конечно гораздо лучше чем я. Одна идея что DMA контроллер, который работает через туже шину что проц и делит с ним эту шину, будет работать быстрее чем проц отдельного уже говорит о многом. Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 January 28, 2015 Posted January 28, 2015 · Report post Если вам будет приятно потешить местечковое самолюбие вы разработчик конечно гораздо лучше чем я. Не собирался тут с Вами ничем меряться, всего лишь указал на Ваше свойство уверенно давать ответы на вопросы в которых Вы некомпетентны. Извините, если это задело Вас. Далее был просто стёб, жаль, что Вы не заценили :crying: Одна идея что DMA контроллер, который работает через туже шину что проц и делит с ним эту шину, будет работать быстрее чем проц отдельного уже говорит о многом. Я не говорил, что это будет быстрее (если читать/писать данные в одну и ту же память), а говорил, что это разгрузит проц и он сможет делать что-то там ещё во время пока DMA переливает данные. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 January 28, 2015 Posted January 28, 2015 · Report post Из полезного вот что надо сделать надо ниосом в память записать кусок данных считать кусок данных и записать - считать кусок данных попеременно (то есть 4 байта записали, затем 4 байта считали). Этот режим лучше попробовать в нескольких вариантах (16 байт записали, 4 считали, 32 байта записали, 4 считали). Писать и читать надо из разных адресов. Данные для записи надо брать из какой-то valotile переменной. А лучше из внешней периферии потому что надо еще через кеш альтеры пробиться, то есть чтобы компилятор поставил правильные команды. Для всего этого померить время выполнения, чтобы определить реальную пропускную способность. при скорости 15 МСлов в секунду и проце 100 МГц, у вас на каждую операцию есть 6 тактов, что-то мне говорит что проц не успеет. Кстати сколько микросхем памяти у проца? то есть реально какой длинны слово оно может записать за такт? П.С. фраза "что-то мне говорит" означает что я не уверен, но мне так кажется Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 January 28, 2015 Posted January 28, 2015 · Report post Кстати сколько микросхем памяти у проца? то есть реально какой длинны слово оно может записать за такт? Микросхема памяти там одна, это можно посмотреть в доке на плату (название платы ТС приводил выше). Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 January 28, 2015 Posted January 28, 2015 · Report post А сколько тактов доступ к данным по шине Avalon? На чтение, на запись, и в бёрсте? И сколько частота шины в вашем проце? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 January 28, 2015 Posted January 28, 2015 · Report post А сколько тактов доступ к данным по шине Avalon? На чтение, на запись, и в бёрсте? И сколько частота шины в вашем проце? Частота шины будет равна частоте процессора (100 МГц). Это и будет максимально возможная скорость записи/чтения, если контроллер DDR2 не будет тупить и выставлять waitrequest, и если данные будут записываться потоком. Спецификацию на Avalon MM, если интересно, можете посмотреть тут. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 January 28, 2015 Posted January 28, 2015 · Report post это если писать слово за словом, а первое обращение по адресу? неужто 1 такт? Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 January 29, 2015 Posted January 29, 2015 · Report post по ходу ДМА все таки придется ставить... Quote Share this post Link to post Share on other sites More sharing options...
x66 0 February 6, 2015 Posted February 6, 2015 · Report post нет потому что нужно адрес не 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 Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 February 6, 2015 Posted February 6, 2015 · Report post букварь по С надо почитать. в чем отличие int A; от int *A; ? забавно что в вашем примере непонимание еще даже глубже:) вам надо еще узнать разницу между 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; - задание значения переменной на которую ссылается указатель Quote Share this post Link to post Share on other sites More sharing options...
StewartLittle 89 February 6, 2015 Posted February 6, 2015 · Report post то есть получается что адрес 4008800 - под кешем, а если поставить старшую единичку, то будет обращение в те же адреса, только без кеша? так надо это понимать? Да, у NiosII gen1 именно так. "Буквать по ... надо почитать" (с) Ваше. У NiosII gen2, кстати, кэширование делается уже по-другому. Quote Share this post Link to post Share on other sites More sharing options...