Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись в EPCS данных с ББ
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Spinorog
День добрый, коллеги.

Поиск пользовал, документацию читал, ответа не нашёл ;(.

Нужно положить в EPCS64 помимо прошивки пачку данных с компьютера. Думал, что дожен быть вариант работы с mif и hex, но не нашёл.

Благодарю!
goodsoul
Цитата(Spinorog @ Feb 16 2015, 15:31) *
День добрый, коллеги.

Поиск пользовал, документацию читал, ответа не нашёл ;(.

Нужно положить в EPCS64 помимо прошивки пачку данных с компьютера. Думал, что дожен быть вариант работы с mif и hex, но не нашёл.

Благодарю!


Полагаю, что следует сгенерировать jic файл и и подцепить hex файл в соответствующем диалоговом окне.
Можно почитать здесь: http://www.alterawiki.com/wiki/Booting_Nio...lash_Controller
Там решается аналогичная задача - в EPCS укладывается программа (hex файл) для NIOS II.

А вообще, для работы с Serial Flash в User Mode можно использовать специальную мегафункцию: http://www.altera.com/literature/an/an370.pdf
Spinorog
Цитата(goodsoul @ Feb 16 2015, 17:02) *
Полагаю, что следует сгенерировать jic файл и и подцепить hex файл в соответствующем диалоговом окне.
Можно почитать здесь: http://www.alterawiki.com/wiki/Booting_Nio...lash_Controller
Там решается аналогичная задача - в EPCS укладывается программа (hex файл) для NIOS II.

А вообще, для работы с Serial Flash в User Mode можно использовать специальную мегафункцию: http://www.altera.com/literature/an/an370.pdf


Премного благодарен, очень выручили! Пойду пробовать.
doom13
Цитата(Spinorog @ Feb 16 2015, 16:22) *
Пойду пробовать.

Если заливать конфигурацию планируется программатором, то, почти уверен, придётся ручками править нужные байты (по нужным адресам) в jic-файле (пару байт можно, но 100-1000 и т.д. - сложновато будет). Можно ещё что-то своё написать для правки jic-файла. В утилите конверсии файлов "левые" данные подтягиваться не хотят.
А так необходим EPCS/EPCQx1 Flash Controller для Nios либо ядро ASMI для железа, они оба умеют работать с EPCS.


Цитата(goodsoul @ Feb 16 2015, 16:02) *
А вообще, для работы с Serial Flash в User Mode можно использовать специальную мегафункцию: http://www.altera.com/literature/an/an370.pdf

Это ядро - для прошивки EPCS через JTAG, главной проблемой будет сконвертить нужный jic-файл. Вообще не понятно, для чего оно необходимо, если Quartus Programmer по JTAG способен заливать Factory default SFL image и прошивать EPCS.
Spinorog
Цитата(doom13 @ Feb 16 2015, 17:40) *
Если заливать конфигурацию планируется программатором, то, почти уверен, придётся ручками править нужные байты (по нужным адресам) в jic-файле (пару байт можно, но 100-1000 и т.д. - сложновато будет). Можно ещё что-то своё написать для правки jic-файла. В утилите конверсии файлов "левые" данные подтягиваться не хотят.
А так необходим EPCS/EPCQx1 Flash Controller для Nios либо ядро ASMI для железа, они оба умеют работать с EPCS.



Это ядро - для прошивки EPCS через JTAG, главной проблемой будет сконвертить нужный jic-файл. Вообще не понятно, для чего оно необходимо, если Quartus Programmer по JTAG способен заливать Factory default SFL image и прошивать EPCS.

Заливать через USB Blaster по JTAG'у планирую.

Из опций "Convert Programming files..." сделал вывод, что hex будет добавлен в EPCS после информации о прошивке и собственно на выходе будет jic файл содержащий прошивку+данные. Пока не пробовал, пишу модуль, который будет из EPCS вытягивать в SRAM, там и отладить хочу. Но что значит "левые" даные подтягиваться не хотят? На этапе конвертирования они как-то анализируются Квартусом? Для каких данных тогда предусмотрена данная функция?

doom13
Цитата(Spinorog @ Feb 16 2015, 17:27) *
Но что значит "левые" даные подтягиваться не хотят? На этапе конвертирования они как-то анализируются Квартусом? Для каких данных тогда предусмотрена данная функция?

Конвертит прошивку из/в разные форматы. А вот подтянуть к jic произвольные данные у меня не получилось.
dxp
QUOTE (Spinorog @ Feb 16 2015, 20:27) *
Заливать через USB Blaster по JTAG'у планирую.

Из опций "Convert Programming files..." сделал вывод, что hex будет добавлен в EPCS после информации о прошивке и собственно на выходе будет jic файл содержащий прошивку+данные.

У нас есть схема, в который ПЛИС загружает программу в процессор, прошивка для процессора помещается в конфигуратор ПЛИС. Кладём в прошивку ПЛИС (jic файл) загузочный образ для процессора (Blackfin). ПЛИС после старта грузит процессор этими данными через SPI. Процесс подготовки выглядит так:

* собирается программа для проца, транслируется в hex, к нему добавляется заголовок (длина образа) и трейлер (CRC32), чтобы ПЛИС при загрузке могла правильно загрузить и проверить целостность данных. Подготовленный файл копируется в то же место, где лежит sof (конкретно у нас директория /output).

* с помощью Convert Programming files делаться подготовка jic файла из sof и загрузочного образа в hex формате. Конфиг для для этой операции, файл jic.cof (имя файла, ессно, любое):

CODE
<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
<cof>
    <eprom_name>EPCS64</eprom_name>
    <flash_loader_device>EP4CE55</flash_loader_device>
    <output_filename>output/lwir.jic</output_filename>
    <n_pages>1</n_pages>
    <width>1</width>
    <mode>7</mode>
    <hex_block>
        <hex_filename>output/lwir.hex</hex_filename>
        <hex_addressing>relative</hex_addressing>
        <hex_offset>4194304</hex_offset>
    </hex_block>
    <sof_data>
        <start_address>00000000</start_address>
        <user_name>Page_0</user_name>
        <page_flags>1</page_flags>
        <bit0>
            <sof_filename>output/lwir.sof</sof_filename>
        </bit0>
    </sof_data>
    <version>5</version>
    <create_cvp_file>0</create_cvp_file>
    <options>
        <map_file>1</map_file>
    </options>
</cof>


Конфиг, ессно, писался не руками, а сгенерён с помощью этой же утилиты. Его можно открыть ею и посмотреть настройки. Из них видно, что процессорный образ размещён по адресу 0x400000.

* прошивается конфигуратор. Тут две операции:

quartus_cpf -c settings/jic.cof - подготавливаем jic
quartus_pgm settings/prgjic.cdf - собсно прошивка.

Обе операции можно объединить в один пакетный файл (именно так и делается), дабы не забыть перегенерить jic при сборке новой программы для процессора.

Ясно, что можно туда класть любые данные, лишь бы хватало места.

В общем, всё исправно размещается и работает. Успехов.
doom13
Цитата(dxp @ Feb 17 2015, 08:45) *
* собирается программа для проца, транслируется в hex, к нему добавляется заголовок (длина образа) и трейлер (CRC32), чтобы ПЛИС при загрузке могла правильно загрузить и проверить целостность данных.

А каким образом произвольные данные (файл N-байт) сконвертить в HEX, добавить длину (сколько байт должно быть данное поле), посчитать и добавить CRC32?
dxp
QUOTE (doom13 @ Feb 17 2015, 12:35) *
А каким образом произвольные данные (файл N-байт) сконвертить в HEX, добавить длину (сколько байт должно быть данное поле), посчитать и добавить CRC32?

Да это хоть руками (с помощью соответствующего редактора и прочих утилит). Мы делаем с помощью скрипта на питоне (всё делается автоматом при сборке выходного файла SCons'ом):

CODE
    #-------------------------------------------------------------
    #
    #    Prepare image with header (image size) and trailer (CRC32)
    #
    im = IntelHex(name_full)

    data_str  = im.tobinstr()
    im_size   = len(data_str)
    size_str  = struct.pack('I', im_size)
    crc32_str = struct.pack( 'I', binascii.crc32(data_str) & 0xffffffff )

    oim = IntelHex()
    oim.puts( 0, size_str )
    oim.puts( len(size_str), data_str )
    oim.puts( len(size_str) + len(data_str), crc32_str )
    outfile = os.path.abspath(os.path.join('../../fpga/prj/syn/output', name + '.hex') )

    oim.tofile(outfile, format='hex')


для этого ещё нужна либа IntelHex, написанная Александром Бельченко (aka bialix, когда-то участвовал в этом форуме), которая легко находится в интернетах (собственно, она выполняет функции чтения исходного hex и сохранения выходного). Остальные средства - стандартные для питона.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.