Reanimatorr 0 27 октября, 2009 Опубликовано 27 октября, 2009 · Жалоба 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 нормально с ним работает, включая пошаговую отладку программы в железе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба Хотел узнать, можно ли использовать переферийные устройства из SOPC Builde (rs232, USB и тд), без использования самого процессора!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба 2 Full41 - можно, только вам тогда нужно будет написать своего мастера, который ими дирижировать будет :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба 2 Full41 - можно, только вам тогда нужно будет написать своего мастера, который ими дирижировать будет :laughing: То есть самому написать мастер шину!!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба То есть самому написать мастер шину!!? Не "мастер шину", а "мастер на шину". Шина - она стандартная (Авалон), на ней бывают мастеры и слейвы. Мастер - это тот, кто может инициировать транзакцию (т.е. передачу данных). Стандартные мастеры - это, к примеру, ядро NiosII, или блок DMA. Слейв - тот, кто поддерживает транзакцию (т.е. принимает или передает даные в соответствии с поступившим ему запросом). Ваши rs232, USB и тд. - это слейвы. К ним должен кто-то обращаться (во-первых - для того, чтобы сконфигурировать, или задать режим; во-вторых - записать или считать информацию). Этот "кто-то" и есть мастер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба Все понял!! Буду пробовать!! Спасибо!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EvgenyNik 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Уважаемые гуру, подскажите - как "объяснить" 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" и т.п.. Где искать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inco 1 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Евгений Николаев В 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... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EvgenyNik 0 10 декабря, 2009 Опубликовано 10 декабря, 2009 · Жалоба inco, спасибо! Сегодня попробую. Честно говоря, считал, что перейду с 7.2 на 9.1 за один день, но 9-ый, в отличие от 7-го, не интуитивно понятен. --- Работает! :a14: Кстати, переход начал поэтапно - сначала поставил 9-ый квартус, но пользовался 7-ым NIOS IDE - на первый взгляд всё нормально, с портов читает, выводит, но почему-то перестали работать прерывания от внутреннего обработчика. Сейчас с 9-ым всё заработало. Видимо, альтеровцы частично что-то сменили внутри (кривые руки разработчика - тоже не исключаются, конечно :) ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexBel 6 12 декабря, 2009 Опубликовано 12 декабря, 2009 · Жалоба Reanimator++ Рома, спасибо, извини, что не отреагировал сразу, но причину знаешь :( Обязательно это попробую, как закончу проект... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 20 декабря, 2009 Опубликовано 20 декабря, 2009 · Жалоба Подскажите. Есть система, картинка во вложении. 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 - не работает, сбоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 20 декабря, 2009 Опубликовано 20 декабря, 2009 · Жалоба Если выставить в настройках для .text и .rodata использовать MemoryWraper, а для всего остального onchip память tigtly_data - работает. Подскажите в каком направлении копать. То ли мой контроллер памяти тупит, но тогда, по идее он должен сбоить и на инструкциях (ведь при маленьком кэше инструкций выборки из памяти обязаны быть), либо что-то еще. похоже, сбоит запись в память(MemoryWraper), тогда понятно, почему не сбоит на инструкциях(там только чтение). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 20 декабря, 2009 Опубликовано 20 декабря, 2009 · Жалоба похоже, сбоит запись в память(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 и есть дата кэш, описанный выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 20 декабря, 2009 Опубликовано 20 декабря, 2009 · Жалоба можно погонять контроллер на тестах, что генерит мегавизард (файл _top.vhd или _top.v). еще такая дока есть www.altera.com/literature/an/an380.pdf. хуже, если где-то времянки перекосило. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 20 декабря, 2009 Опубликовано 20 декабря, 2009 · Жалоба можно погонять контроллер на тестах, что генерит мегавизард (файл _top.vhd или _top.v). еще такая дока есть www.altera.com/literature/an/an380.pdf. хуже, если где-то времянки перекосило. Насчёт времянок - это врядли. Так как считавание и запись от акселератора идет нормально. На экране изображение чистое. А внутри не может быть, ругался бы timequest. А за тесты спасибо за наводку. Завтра на работе посмотрю. А то я сам писал testbench, мог что-нибудь не учесть. Даже мой приведенный тест мне самому теперь не нравится- запись производится в последовательные ячейки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться