Перейти к содержанию
    

Нужно сделать тестовый проект для самопроверки устройства на плис. нужно проверить всю периферию на борде. В том числе и озу (ддр2). Для проверки озу есть алгоритмы которые стирают/пишут/читают каждую ячейку озу. Можно тестовую программу разместить в он-чип и проверить внешнее озу. Но проверка всей остальной периферии не влезит в он-чип. Как тут быть? В голову приходит 2 мысли:

1) разбить программу на 2 части. проверку озу разместить в он-чип. ресет прерывания на он-чип. После ресета из epcs автоматом загрузится конфигурация и кусок программы в ончип. Стартует программа в ончипе. Проверится озу. если все в порядке, то нужно программно из епцс исполняемый код загрузить в озу и сделать jmp ADR_RAM; или что-то подобное. Такое реально сделать с ниосом/CIII/квартусом/IDE NIOS?

2) не делить программу а сразу всю её залить в внешнее озу и от туда стартовать. там же проверить все озу. только как? как-то же подобное делается в тестах типа memTest86. Как в подобных утилитах проверяется озу? Ведь сам исполняемый код находится в этом же озу. Или во время теста мемТест копирует исполняемый код из одного места в другое чтоб проверить всё озу полностью? кто нибудь знает как memTest86 работает?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотрите http://www.altera.com/literature/an/an458.pdf

вы можете сделать свой загрузчик из EPCS и встроить в него проверку SDRAM. после проверки SDRAM загрузчик должен скопировать туда код (включая проверку периферии) и передать управление

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробую свой загрузчик сделать по 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 флэшпрограмматором в епцс, борду выкл\вкл\ресет - не помогает, тоже не вижу хэлловорда. что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof. Вы заливаете в борду голое железо без ПО, собранное на 3-4 пункте.

 

И еще, 7-й пунк эклипс иногда делает автоматом (я наблюдал появление .hex файла при компиляции проекта с onchip).

 

И еще, уверены что Reset на борде относится именно к ниосу а не реконфегурирует всю плис например?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сумбур какой-то. чтобы после сброса выполнился код из он-чип, достаточно вектор сброса туда нацелить. после этого достаточно залить sof и программа сразу запустится. если надо кинуть во флешку - пользуйтесь jic или sof2flash+nios2-flash-programmer.

примеры загрузчиков смотрели:

http://www.altera.com/support/examples/nio...ot-methods.html ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Reset на борде относится именно к ниосу
именно к ниосу.

примеры загрузчиков смотрели:
с него и начал. an458-ой до дыр перечитал. примеры от туда скачал - не работают они.

 

нашел я как из ниоса делать 7-ой пункт.

 

Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof.
??? не понял, а когда hex в ончип попадает? я думал что достаточно залить sof, и во время этой заливки hex подхватится.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе (ну или полную компиляцию если не найдете) чтобы он подхватил .hex файл и встроил его в .sof. Вы заливаете в борду голое железо без ПО, собранное на 3-4 пункте.

Или можно поставить галку Use smart compilation и запустить компилятор.

Он должен обновить Hex файл конфигурации on-chip памяти.

 

 

И еще, уверены что Reset на борде относится именно к ниосу а не реконфегурирует всю плис например?

Мне тоже так показалось. По идее после прошивки sof файлом процессор автоматически сбрасывается и должен исполнять программу.

 

Если хотите, есть пример проекта со стандартным загрузчиком.

И даже перевод AN-458.

:santa2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее после прошивки sof файлом процессор автоматически сбрасывается и должен исполнять программу.
а в программе printf("hallo wrld") в jtag-uart. поэтому чтоб увидеть выхлоп нужно после заливки соф запустить терминал и нажать ресет.

 

у меня уже проблема не с загрузчиком. Я уже забыл про него. Проблема локализовалась. Проблема в том, что: есть простая программа, хелловорд (или загрузчик, или тестер или мигание диодом - это уже не важно, просто программа). необходимо чтоб ресет был на ончипе и после ресета процессора выполнялась эта программа сразу, без всяких загрузок из флеш, т.е. она должна создаться в плисине при загрузке конфигурации. Не получается.

 

Между 7-м и 8-м пунктом нужно выполнить ассемблер в квартусе
вот это я пропустил. Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в программе printf("hallo wrld") в jtag-uart. поэтому чтоб увидеть выхлоп нужно после заливки соф запустить терминал и нажать ресет.

 

у меня уже проблема не с загрузчиком. Я уже забыл про него. Проблема локализовалась. Проблема в том, что: есть простая программа, хелловорд (или загрузчик, или тестер или мигание диодом - это уже не важно, просто программа). необходимо чтоб ресет был на ончипе и после ресета процессора выполнялась эта программа сразу, без всяких загрузок из флеш, т.е. она должна создаться в плисине при загрузке конфигурации. Не получается.

 

вот это я пропустил. Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа.

Сейчас сделал - у меня всё запустилось.

 

Файл архива проекта почему то не могу прикрепить...

 

Вносим изменения в программу.

Конвертируем elf to hex.

Жмем smart compilation и вуаля!

:1111493779:

post-39551-1305280897_thumb.png

post-39551-1305281700_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но сделав компиляции всего проекта после создание хекс файла - непомогло. не запускается программа.

 

Тогда проверяйте что имя файла прописанное в свойствах ончип в сопц билдере (параметр memory initialization file) сопадает с именем того .hex файла который вы подсовываете квартусу после ниос иде.

В принципе если ничего не трогать то они автоматом совпадают, как у naliwator-а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда проверяйте что имя файла прописанное в свойствах ончип в сопц билдере (параметр 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"

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратно поставил галочку 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

тоже не понятно почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

переименовал ончип в 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

Собственно, почему на кошках не хотите потренироваться?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно, почему на кошках не хотите потренироваться?
Да на кошках наверно с полпинка заведется. У меня тяжелый проект, которому нужно сделать ончип загрузчик. Можно сделать кошку и в неё заново проект собирать, все пины переназначать..... Но с этим нужно разобраться.

 

В общем получилось. Как - не могу понять. В прицепе можно на этом остановиться и писать программу дальше. Но..... Сейчас в сопц ончип именуется 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? Где-то в записях какихто исходников очевидно есть ссылки на них. Но где? Как ими управлять этими ссылками/настройками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Удалил с диска файлы 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...