|
|
  |
Запись в EPCS данных с ББ |
|
|
|
Feb 16 2015, 12:31
|
Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436

|
День добрый, коллеги.
Поиск пользовал, документацию читал, ответа не нашёл ;(.
Нужно положить в EPCS64 помимо прошивки пачку данных с компьютера. Думал, что дожен быть вариант работы с mif и hex, но не нашёл.
Благодарю!
|
|
|
|
|
Feb 16 2015, 13:02
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Feb 16 2015, 13:22
|
Группа: Участник
Сообщений: 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Премного благодарен, очень выручили! Пойду пробовать.
|
|
|
|
|
Feb 16 2015, 13:40
|
Профессионал
    
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Feb 16 2015, 14:27
|
Группа: Участник
Сообщений: 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, там и отладить хочу. Но что значит "левые" даные подтягиваться не хотят? На этапе конвертирования они как-то анализируются Квартусом? Для каких данных тогда предусмотрена данная функция?
|
|
|
|
|
Feb 17 2015, 05:45
|

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 при сборке новой программы для процессора. Ясно, что можно туда класть любые данные, лишь бы хватало места. В общем, всё исправно размещается и работает. Успехов.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Feb 17 2015, 07:46
|

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 и сохранения выходного). Остальные средства - стандартные для питона.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|