реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Запись в EPCS данных с ББ
Spinorog
сообщение Feb 16 2015, 12:31
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



День добрый, коллеги.

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

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

Благодарю!
Go to the top of the page
 
+Quote Post
goodsoul
сообщение Feb 16 2015, 13:02
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 3-09-09
Пользователь №: 52 178



Цитата(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
Go to the top of the page
 
+Quote Post
Spinorog
сообщение Feb 16 2015, 13:22
Сообщение #3





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



Цитата(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


Премного благодарен, очень выручили! Пойду пробовать.
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 16 2015, 13:40
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(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.
Go to the top of the page
 
+Quote Post
Spinorog
сообщение Feb 16 2015, 14:27
Сообщение #5





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



Цитата(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, там и отладить хочу. Но что значит "левые" даные подтягиваться не хотят? На этапе конвертирования они как-то анализируются Квартусом? Для каких данных тогда предусмотрена данная функция?

Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 16 2015, 14:47
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



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

Конвертит прошивку из/в разные форматы. А вот подтянуть к jic произвольные данные у меня не получилось.
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 17 2015, 05:45
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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 при сборке новой программы для процессора.

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

В общем, всё исправно размещается и работает. Успехов.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 17 2015, 06:35
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



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

А каким образом произвольные данные (файл N-байт) сконвертить в HEX, добавить длину (сколько байт должно быть данное поле), посчитать и добавить CRC32?
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 17 2015, 07:46
Сообщение #9


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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 и сохранения выходного). Остальные средства - стандартные для питона.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016