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