juvf 17 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба Нужно сделать тестовый проект для самопроверки устройства на плис. нужно проверить всю периферию на борде. В том числе и озу (ддр2). Для проверки озу есть алгоритмы которые стирают/пишут/читают каждую ячейку озу. Можно тестовую программу разместить в он-чип и проверить внешнее озу. Но проверка всей остальной периферии не влезит в он-чип. Как тут быть? В голову приходит 2 мысли: 1) разбить программу на 2 части. проверку озу разместить в он-чип. ресет прерывания на он-чип. После ресета из epcs автоматом загрузится конфигурация и кусок программы в ончип. Стартует программа в ончипе. Проверится озу. если все в порядке, то нужно программно из епцс исполняемый код загрузить в озу и сделать jmp ADR_RAM; или что-то подобное. Такое реально сделать с ниосом/CIII/квартусом/IDE NIOS? 2) не делить программу а сразу всю её залить в внешнее озу и от туда стартовать. там же проверить все озу. только как? как-то же подобное делается в тестах типа memTest86. Как в подобных утилитах проверяется озу? Ведь сам исполняемый код находится в этом же озу. Или во время теста мемТест копирует исполняемый код из одного места в другое чтоб проверить всё озу полностью? кто нибудь знает как memTest86 работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 10 мая, 2011 Опубликовано 10 мая, 2011 · Жалоба посмотрите http://www.altera.com/literature/an/an458.pdf вы можете сделать свой загрузчик из EPCS и встроить в него проверку SDRAM. после проверки SDRAM загрузчик должен скопировать туда код (включая проверку периферии) и передать управление Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба Пробую свой загрузчик сделать по an458.pdf. Вроде все элементы танца сделал, всё залил - в итоге при включении борды моя прога не работает. Решил постепенно понять что к чему. Создал простой проект хелловорд. разместил все секции в ончип. ресет ниоса на epcs контроллер (на загрузчик по умолчанию). вектор прерыванию на ончип. все собрал, залил в борду. Работает, т.е. при включении в консоль выхлапывает халоворд. Теперь нужно чтоб этот халоворд был аппаратно вшит в ончип. Т.е. делаю следующее 1 в SOPC билдере вектор ресета на ончип 2 указываю ончип инициализировать файлом boot_rom.hex 3 собираю ниос 4 компилирую проект квартуса 5 генерирую в эклипсе bsp 6 собираю программу халловорд для этого проекта и получаю elf 7 в консоли выполняю "elf2hex name.elf --base=0x1810000 --end=0x181c9f --width=32 --create-lanes=0 boot_rom.hex" и получаю хекс файл. 8 из квартуса заливаю sof в плис 9 запускаю терминал 10 жму кнопку ресет на борде ожидаю увидеть Hallo World! в терминале после 10 по идее ресетится проц, а ресет прерывания на он чип. в ончипе программа хелловрд. но она почему-то не выполняется. прожег этот sof флэшпрограмматором в епцс, борду выкл\вкл\ресет - не помогает, тоже не вижу хэлловорда. что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Reanimatorr 1 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof. Вы заливаете в борду голое железо без ПО, собранное на 3-4 пункте. И еще, 7-й пунк эклипс иногда делает автоматом (я наблюдал появление .hex файла при компиляции проекта с onchip). И еще, уверены что Reset на борде относится именно к ниосу а не реконфегурирует всю плис например? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба сумбур какой-то. чтобы после сброса выполнился код из он-чип, достаточно вектор сброса туда нацелить. после этого достаточно залить sof и программа сразу запустится. если надо кинуть во флешку - пользуйтесь jic или sof2flash+nios2-flash-programmer. примеры загрузчиков смотрели: http://www.altera.com/support/examples/nio...ot-methods.html ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба Reset на борде относится именно к ниосу именно к ниосу. примеры загрузчиков смотрели:с него и начал. an458-ой до дыр перечитал. примеры от туда скачал - не работают они. нашел я как из ниоса делать 7-ой пункт. Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof.??? не понял, а когда hex в ончип попадает? я думал что достаточно залить sof, и во время этой заливки hex подхватится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
naliwator 0 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof. Вы заливаете в борду голое железо без ПО, собранное на 3-4 пункте. Или можно поставить галку Use smart compilation и запустить компилятор. Он должен обновить Hex файл конфигурации on-chip памяти. И еще, уверены что Reset на борде относится именно к ниосу а не реконфегурирует всю плис например? Мне тоже так показалось. По идее после прошивки sof файлом процессор автоматически сбрасывается и должен исполнять программу. Если хотите, есть пример проекта со стандартным загрузчиком. И даже перевод AN-458. :santa2: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба По идее после прошивки sof файлом процессор автоматически сбрасывается и должен исполнять программу. а в программе printf("hallo wrld") в jtag-uart. поэтому чтоб увидеть выхлоп нужно после заливки соф запустить терминал и нажать ресет. у меня уже проблема не с загрузчиком. Я уже забыл про него. Проблема локализовалась. Проблема в том, что: есть простая программа, хелловорд (или загрузчик, или тестер или мигание диодом - это уже не важно, просто программа). необходимо чтоб ресет был на ончипе и после ресета процессора выполнялась эта программа сразу, без всяких загрузок из флеш, т.е. она должна создаться в плисине при загрузке конфигурации. Не получается. Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусевот это я пропустил. Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
naliwator 0 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба а в программе printf("hallo wrld") в jtag-uart. поэтому чтоб увидеть выхлоп нужно после заливки соф запустить терминал и нажать ресет. у меня уже проблема не с загрузчиком. Я уже забыл про него. Проблема локализовалась. Проблема в том, что: есть простая программа, хелловорд (или загрузчик, или тестер или мигание диодом - это уже не важно, просто программа). необходимо чтоб ресет был на ончипе и после ресета процессора выполнялась эта программа сразу, без всяких загрузок из флеш, т.е. она должна создаться в плисине при загрузке конфигурации. Не получается. вот это я пропустил. Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа. Сейчас сделал - у меня всё запустилось. Файл архива проекта почему то не могу прикрепить... Вносим изменения в программу. Конвертируем elf to hex. Жмем smart compilation и вуаля! :1111493779: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Reanimatorr 1 14 мая, 2011 Опубликовано 14 мая, 2011 · Жалоба Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа. Тогда проверяйте что имя файла прописанное в свойствах ончип в сопц билдере (параметр memory initialization file) сопадает с именем того .hex файла который вы подсовываете квартусу после ниос иде. В принципе если ничего не трогать то они автоматом совпадают, как у naliwator-а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 16 мая, 2011 Опубликовано 16 мая, 2011 (изменено) · Жалоба Тогда проверяйте что имя файла прописанное в свойствах ончип в сопц билдере (параметр memory initialization file) сопадает с именем того .hex файла который вы подсовываете квартусу после ниос иде. В принципе если ничего не трогать то они автоматом совпадают, как у naliwator-а. Это я обнаружил. В общем по умолчанию для ончип-а sopc билдер дал имя onchip_memory2_0. Начал урок по своему загрузчику из an458.pdf - переименовал ончип в boot_rom. Потом в квартусе при компиляции среди over 9000 ворнингов не сразу заметил что квартус пытается подцепить onchip_memory2_0.hex. Ни как не мог ему объяснить что теперь нужен boot_rom.hex. Стояла галка Use smart compilation. Снял её и квартус сразу понял что теперь нужен boot_rom.hex. Ну ещё был ворнинг что найден boot_rom.v в разработке, но этот файл не является файлом проекта. Ручками удалил из проекта onchip_memory2_0.v и добавил boot_rom.v. Ворнингов стало на пару меньше, но пока при ресете он чип не инится моим хексом(или хекс кривой). Хотя в инфо вроде все красиво: Info: Instantiated megafunction "cpuNew:inst3|boot_rom:the_boot_rom|altsyncram:the_altsyncram" with the following parameter: Info: Parameter "byte_size" = "8" Info: Parameter "init_file" = "boot_rom.hex" Info: Parameter "lpm_type" = "altsyncram" Info: Parameter "maximum_depth" = "9000" Info: Parameter "numwords_a" = "9000" Info: Parameter "operation_mode" = "SINGLE_PORT" Info: Parameter "outdata_reg_a" = "UNREGISTERED" Info: Parameter "ram_block_type" = "AUTO" Info: Parameter "read_during_write_mode_mixed_ports" = "DONT_CARE" Info: Parameter "width_a" = "32" Info: Parameter "width_byteena_a" = "4" Info: Parameter "widthad_a" = "14" Изменено 16 мая, 2011 пользователем juvf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба Обратно поставил галочку Use smart compilation - при компиляции снова получаю ворнинги Warning: Can't find design file epcs_flash_controller_boot_rom.hex Warning: Can't find design file onchip_memory2_0.hex Warning: Can't find design file epcs_flash_controller_boot_rom.hex Warning: Can't find design file onchip_memory2_0.hex Warning: Can't find design file epcs_flash_controller_boot_rom.hex Warning: Can't find design file onchip_memory2_0.hex Info: ******************************************************************* Info: Running Quartus II Analysis & Synthesis Info: Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version Info: Processing started: Mon May 16 10:13:05 2011 Info: Command: quartus_map --read_settings_files=on --write_settings_files=off TestFrontEnd -c topLevel Info: Parallel compilation is enabled and will use 4 of the 4 processors detected Info: Found 1 design units, including 1 entities, in source file boot_rom.v Info: Found entity 1: boot_rom Info: Found 2 design units, including 2 entities, in source file sdram.v Info: Found entity 1: sdram_input_efifo_module Info: Found entity 2: sdram Info: Found 1 design units, including 1 entities, in source file pllsdram.v Info: Found entity 1: pllSdram Info: Found 2 design units, including 2 entities, in source file epcs_flash_controller_0.v Info: Found entity 1: epcs_flash_controller_0_sub Info: Found entity 2: epcs_flash_controller_0 Info: Found 1 design units, including 1 entities, in source file cpu_0_test_bench.v Info: Found entity 1: cpu_0_test_bench Info: Found 7 design units, including 7 entities, in source file uart_0.v Info: Found entity 1: uart_0_log_module Info: Found entity 2: uart_0_tx Info: Found entity 3: uart_0_rx_stimulus_source_character_source_rom_module Info: Found entity 4: uart_0_rx_stimulus_source Info: Found entity 5: uart_0_rx Info: Found entity 6: uart_0_regs Info: Found entity 7: uart_0 От куда этот onchip_memory2_0.hex? Почему квартус его хочет? в sopc билдере ончип раньше именовался onchip_memory2_0, но сейчас именуется boot_rom и инициализируется файлом по умолчанию boot_rom.hex. И при компиляции всегда компиляется весь проект. Поечему? Скомпилял проект, тут же нажал компилять - опять все по новой. А должен вроде смарт понять что не было изменений и не компилять ни чего. naliwator в моем выхлопе нет таких пунктов как у тебя Running Quartus II MIF/HEX Update тоже не понятно почему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
naliwator 0 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба переименовал ончип в boot_rom. Ну ещё был ворнинг что найден boot_rom.v в разработке, но этот файл не является файлом проекта. Ручками удалил из проекта onchip_memory2_0.v и добавил boot_rom.v. Вы поменяли исходные файлы проекта, поэтому Info: Running Quartus II Analysis & Synthesis Info: Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version Info: Processing started: Mon May 16 10:13:05 2011 и вы не можете видеть Running Quartus II MIF/HEX Update Собственно, почему на кошках не хотите потренироваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба Собственно, почему на кошках не хотите потренироваться?Да на кошках наверно с полпинка заведется. У меня тяжелый проект, которому нужно сделать ончип загрузчик. Можно сделать кошку и в неё заново проект собирать, все пины переназначать..... Но с этим нужно разобраться. В общем получилось. Как - не могу понять. В прицепе можно на этом остановиться и писать программу дальше. Но..... Сейчас в сопц ончип именуется onchip_memory2_0. Соответственно в проекте есть файл onchip_memory2_0.v и ниос иде делает onchip_memory2_0.hex который скармливаю в sof файл. удалил из проекта файлы boot_rom.v. Удалил с диска файлы boot_rom.v и boot_rom.hex. Но теперь другие ворнинги: Warning: Can't find design file boot_rom.v Warning: Can't find design file boot_rom.hex Не могу понять как в квартусе управлять проектом? Почему квартус ищет файлы boot_rom? Где-то в записях какихто исходников очевидно есть ссылки на них. Но где? Как ими управлять этими ссылками/настройками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
naliwator 0 16 мая, 2011 Опубликовано 16 мая, 2011 · Жалоба Удалил с диска файлы boot_rom.v и boot_rom.hex. Но теперь другие ворнинги: Warning: Can't find design file boot_rom.v Warning: Can't find design file boot_rom.hex Не могу понять как в квартусе управлять проектом? Почему квартус ищет файлы boot_rom? Где-то в записях какихто исходников очевидно есть ссылки на них. Но где? Как ими управлять этими ссылками/настройками? Assignments -> Settings -> Files Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться