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

 
 
43 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> NIOS для начинающих
Reanimator++
сообщение Oct 27 2009, 11:28
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763



AlexBel
Леш, я запустил ниос пройдя "Nios II Hardware Development Tutorial" - http://www.altera.com/literature/tt/tt_nio...re_tutorial.pdf
Просто по порядку делай что там написано и все )

у меня кита нет, потому запускал на своей макетке под EP2C8. все получается, правда пришлось поиграться с оптимизирующими галочками, поскольку пример без модификаций расчитан на EP2C20, а у С8 меньше onchip RAM.

использовал программатор Игоря - http://www.speccyland.net/forum/viewtopic.php?f=13&t=9
Nios II IDE нормально с ним работает, включая пошаговую отладку программы в железе.
Go to the top of the page
 
+Quote Post
Full41
сообщение Nov 17 2009, 13:28
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 309
Регистрация: 31-03-08
Из: САНКТ-ПЕТЕРБУРГ
Пользователь №: 36 375



Хотел узнать, можно ли использовать переферийные устройства из SOPC Builde (rs232, USB и тд), без использования самого процессора!?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 17 2009, 13:50
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Full41 - можно, только вам тогда нужно будет написать своего мастера, который ими дирижировать будет laughing.gif
Go to the top of the page
 
+Quote Post
Full41
сообщение Nov 17 2009, 13:58
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 309
Регистрация: 31-03-08
Из: САНКТ-ПЕТЕРБУРГ
Пользователь №: 36 375



Цитата(Kuzmi4 @ Nov 17 2009, 16:50) *
2 Full41 - можно, только вам тогда нужно будет написать своего мастера, который ими дирижировать будет laughing.gif


То есть самому написать мастер шину!!?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 17 2009, 14:06
Сообщение #20


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

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



Цитата(Full41 @ Nov 17 2009, 16:58) *
То есть самому написать мастер шину!!?

Не "мастер шину", а "мастер на шину". Шина - она стандартная (Авалон), на ней бывают мастеры и слейвы.
Мастер - это тот, кто может инициировать транзакцию (т.е. передачу данных). Стандартные мастеры - это, к примеру, ядро NiosII, или блок DMA.
Слейв - тот, кто поддерживает транзакцию (т.е. принимает или передает даные в соответствии с поступившим ему запросом).
Ваши rs232, USB и тд. - это слейвы. К ним должен кто-то обращаться (во-первых - для того, чтобы сконфигурировать, или задать режим; во-вторых - записать или считать информацию). Этот "кто-то" и есть мастер.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Full41
сообщение Nov 17 2009, 14:13
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 309
Регистрация: 31-03-08
Из: САНКТ-ПЕТЕРБУРГ
Пользователь №: 36 375



Все понял!! Буду пробовать!! Спасибо!!
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Dec 9 2009, 17:21
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Уважаемые гуру, подскажите - как "объяснить" NIOS IDE 9.1, что после компиляции проекта мне нужно обновлять onchip_memory.hex? А то отчитывается об успешной компиляции, пишет- сколько байт ушло на код, генерит .elf, .objdump и на этом всё.
В SOPC-builder'е кроме onchip_memory никакой другой памяти нет, векторы Reset, Exception и Break настроены на onchip_memory.
При тех же самых действиях NIOS IDE 7.2 генерировал .hex без вопросов, а здесь сходу не получилось.
Ну и заодно - сходу не нашёл привычной вкладки настроек "program never exits", "small C library" и т.п.. Где искать?


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
inco
сообщение Dec 9 2009, 19:59
Сообщение #23


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

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



Евгений Николаев
В 9.1 в этом плане сильно всё поменялось!
Теперь для генерации файлов инициализации памяти надо правой кнопкой клацнуть по названию проекта в project explorer в выпавшем окне Make targets->Build.. появится окно Make Targets в котором должен быть пункт mem_init_install. Стать на этот пункт и нажать в этом же окне кнопку Build. После этого ниос сгенерит новые файлы образов памяти. Если этого пункта нет, то нажать кнопку Add и в появившемся окне Create a new Make terget создать такой пункт. В поле Target Name ввести mem_init_install, в поле Make Target тоже mem_init_install остальное по умолчанию. После этого можно будет генерить образы.
Редактировать параметры компиляции надо в BSP Editor.
Чтобы его вызвать в project explorer правой кнопкой клацнуть по названию проекта системной библиотеки и в выпавшем окне Nios II->BSP Editor...
Причина редактирования: Излишнее цитирование
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Dec 10 2009, 04:37
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



inco, спасибо!
Сегодня попробую. Честно говоря, считал, что перейду с 7.2 на 9.1 за один день, но 9-ый, в отличие от 7-го, не интуитивно понятен.
---
Работает! a14.gif
Кстати, переход начал поэтапно - сначала поставил 9-ый квартус, но пользовался 7-ым NIOS IDE - на первый взгляд всё нормально, с портов читает, выводит, но почему-то перестали работать прерывания от внутреннего обработчика.
Сейчас с 9-ым всё заработало. Видимо, альтеровцы частично что-то сменили внутри (кривые руки разработчика - тоже не исключаются, конечно smile.gif ).


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
AlexBel
сообщение Dec 12 2009, 18:05
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 12-10-09
Пользователь №: 52 894



Reanimator++
Рома, спасибо, извини, что не отреагировал сразу, но причину знаешь sad.gif
Обязательно это попробую, как закончу проект...
Причина редактирования: Излишнее цитирование
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 20 2009, 02:30
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Подскажите. Есть система, картинка во вложении. MemoryWraper - это мой собственный контроллер DDR. Он включает в себя собственно контроллер доступа к DDR памяти, контроллер LCD (800*480) и что-то типа слабенького акселератора для видео (может отрисовывать точки, линии, заполненные прямоугольные области и символы с возможностью их масштабирования), ну и конечно арбитраж для совместного доступа. Соответственно, видеопамять и память, доступная для nios вся расположена в DDR, только в разных областях. Работает это все на 100МГц, а nios на 50.
Теперь собственно сама проблема. Собираю NIOS без кэша данных и с минимальным кэшем инструкций 512байт. В IDE для в свойствах системной библиотеки указываю для всего использовать только MemoryWraper. Программа (freertos с двумя примитивными task) не работает, причем по дебугеру сбоит в разных местах. Если выставить в настройках для .text и .rodata использовать MemoryWraper, а для всего остального onchip память tigtly_data - работает. Подскажите в каком направлении копать. То ли мой контроллер памяти тупит, но тогда, по идее он должен сбоить и на инструкциях (ведь при маленьком кэше инструкций выборки из памяти обязаны быть), либо что-то еще.
P.S. Если добавить кэш данных 1к и кэш инструкций довожу до 4к, при этом в кэш данных выставляю line size 32 байта, то работает при любом размещении. Если 4 байта line size - не работает, сбоит.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 20 2009, 03:23
Сообщение #27


Гуру
******

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



Цитата(barabek @ Dec 20 2009, 08:30) *
Если выставить в настройках для .text и .rodata использовать MemoryWraper, а для всего остального onchip память tigtly_data - работает. Подскажите в каком направлении копать. То ли мой контроллер памяти тупит, но тогда, по идее он должен сбоить и на инструкциях (ведь при маленьком кэше инструкций выборки из памяти обязаны быть), либо что-то еще.

похоже, сбоит запись в память(MemoryWraper), тогда понятно, почему не сбоит на инструкциях(там только чтение).
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 20 2009, 03:38
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(vadimuzzz @ Dec 20 2009, 14:23) *
похоже, сбоит запись в память(MemoryWraper), тогда понятно, почему не сбоит на инструкциях(там только чтение).

Попробую это выяснить. Смущает то что при старте программа из флеша бутлоадером записывается в DDR. А есть ли какие-нибудь хитрые тесты памяти? Дело в том, что я писал прогу из 3 циклов, в первом цикле писала в DDR,во втором считывала, модифицировала и обратно записывала. В третьем проверялось содержимое. Затем опять на первый цикл. Работает без сбоев. Кэш обходил командами IOWR_32DIRECT и IORD_32DIRECT. Может нужны какие-то более жесткие тесты?
PS. Сейчас опять добавил подобный тест в одну из task. Каждую секунду выполняется один из выше описанных циклов. В конце 3-й секунды проверяется содержимое.
Код
void FirstFill(unsigned char fl)
{
    unsigned char i;
    if(fl){for(i=0;i<64;i++)IOWR_32DIRECT(CPU2EXTMEM_BASE+0x10000, i*4, i);}
    else {for(i=0;i<64;i++)IOWR_32DIRECT(CPU2EXTMEM_BASE+0x10000, i*4, 50000000-i);}
}  
void  SecondTune(void)
{
    unsigned char i;
    int tmp;
    for(i=0;i<64;i++)
    {
        tmp=IORD_32DIRECT(CPU2EXTMEM_BASE+0x10000, i*4);
        tmp*=10;
        IOWR_32DIRECT(CPU2EXTMEM_BASE+0x10000, i*4, tmp);
    }
}
unsigned char CheckMem(unsigned char fl)
{
    unsigned char i,res=0;
    int tmp;
    for(i=0;i<64;i++)
    {
        tmp=IORD_32DIRECT(CPU2EXTMEM_BASE+0x10000, i*4);
        if(tmp!=((fl?i:(50000000-i))*10))res=1;
    }
    return res;
}

В таске делаю это:

            switch(state)
            {
                case 0: FirstFill(fl);break;
                case 1: SecondTune();break;
                case 2: if(CheckMem(fl))
                    {
                        LCDSetPrintPoint(120,70);LCDPutChar(ch+'B');
                        LCDSetPrintPoint(132,70);LCDPutChar(ch+'A');
                        LCDSetPrintPoint(144,70);LCDPutChar(ch+'D');
                        LCDSetPrintPoint(156,70);LCDPutChar(ch+'!');
                        LCDSetPrintPoint(168,70);LCDPutChar(ch+'!');
                    }else
                    {
                        LCDSetPrintPoint(120,120);LCDPutChar(ch+'O');
                        LCDSetPrintPoint(132,120);LCDPutChar(ch+'K');
                        LCDSetPrintPoint(144,120);LCDPutChar(ch+'!');
                        LCDSetPrintPoint(156,120);LCDPutChar(ch+'!');
                        LCDSetPrintPoint(168,120);LCDPutChar(ch+'!');
                    }
                    
                    break;
                    
            }
            state++;
            if(state==3){state=0;fl=!fl;}


Сбоев нет! Хоть бы знать, куда копать. При этом у меня сейчас все сегменты установлены на MemoryWraper и есть дата кэш, описанный выше.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 20 2009, 06:42
Сообщение #29


Гуру
******

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



можно погонять контроллер на тестах, что генерит мегавизард (файл _top.vhd или _top.v). еще такая дока есть www.altera.com/literature/an/an380.pdf. хуже, если где-то времянки перекосило.
Go to the top of the page
 
+Quote Post
barabek
сообщение Dec 20 2009, 11:28
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(vadimuzzz @ Dec 20 2009, 16:42) *
можно погонять контроллер на тестах, что генерит мегавизард (файл _top.vhd или _top.v). еще такая дока есть www.altera.com/literature/an/an380.pdf. хуже, если где-то времянки перекосило.

Насчёт времянок - это врядли. Так как считавание и запись от акселератора идет нормально. На экране изображение чистое. А внутри не может быть, ругался бы timequest. А за тесты спасибо за наводку. Завтра на работе посмотрю. А то я сам писал testbench, мог что-нибудь не учесть. Даже мой приведенный тест мне самому теперь не нравится- запись производится в последовательные ячейки.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 20:32
Рейтинг@Mail.ru


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