Радиотехнический сайт RADIOTRACT

Радиотехника и электроника для разработчиков и радиолюбителей

Информация

 

 

Справочные данные на радиоэлектронные компоненты, приборы, средства связи и измерений. Радиотехническая литература.

Общая

Микроконтроллеры

ПЛИС

Измерения

Радиостанции

Библиотека

Справочники

Доска объявлений

Объявления о покупке и продаже радиокомпонентов. Спрос и предложение на различные радиодетали и приборы.

Куплю

Продам

Магазин

Программы

Полезные программы для радиолюбителей и разработчиков радиоэлектроники.

Радиотехника

Интернет

Калькуляторы

Другие

Мы в соцсетях

  

ПЛИС

ПЛИС\Удаленная прошивка ПЛИС\Формат данных

Формат данных

Сначала немного о структуре хранения данных. Как уже было отмечено выше, скомпилированная программа для NIOS изначально хранится в энергонезависимой памяти конфигуратора EPCS64. Однако, после инициализации конфигурации ПЛИС, процессор NIOS выполняет программный код загрузчика, который копирует программу процессора из конфигуратора во внутренний блок памяти MRAM ёмкостью 64 Кбайт. Далее осуществляется переход к стартовому адресу самой программы в памяти MRAM. Почему же нельзя было сразу хранить программу в памяти MRAM? Ответ кроется в особенностях структуры ПЛИС фирмы Altera. Говоря применительно к семейству Stratix II, только блоки памяти M512 и M4K могут быть проинициализированы дынными из конфигурации ПЛИС, а вот блоки памяти типа MRAM такой возможности не имеют. В них можно записать данные только через интерфейс JTAG или непосредственно своей внутренней логикой.

Учитывая, что как конфигурация ПЛИС, так и программа для процессора NIOS хранятся в памяти конфигуратора, удобнее всего для их записи использовать Flash Programmer из Nios II Software Build Tools for Eclipse. Flash Programmer записывает в конфигуратор конфигурационные данные ПЛИС, затем программу NIOS посредством самого процессора NIOS через интерфейс JTAG. То есть, чтобы воспользоваться этим, в ПЛИС уже должна находиться конфигурация с тем же самым процессором, которую предварительно на первом этапе можно "залить" программатором USB-Blaster из оболочки самой программы Quartus II. Сам Flash Programmer для записи в конфигуратор использует файлы формата S-record (SREC-формат). Поэтому он предварительно в этот формат преобразовывает файл конфигурации ПЛИС (файл SOF) и файл с программой NIOS (файл ELF). Конечные преобразованные файлы формата S-record имеют расширение .flash и расплагаются как правило в папке flash основной директории проекта NIOS.

Для того, чтобы упростить саму программу NIOS можно исключить внутреннее преобразование данных из формата S-record в бинарный вид, который непосредственно записывается процессором в конфигуратор в область хранения новой рабочей прошивки. Для этого нужно ещё до обновления встроенного ПО объединить полученные 2 файла .flash в один и преобразовать данные из формата S-record в бинарный формат. На просторах интернета была найдена интересная программка srec2bin, которая как раз для этого и предназначена. Это небольшое консольное приложение, работающее в операционной системе Windows и позволяющее из командной строки произвести объединение нескольких файлов формата S-record в один файл бинарного формата (.bin). Для упрощения работы с данной программой можно создать командный файл с расширением .cmd со следующим содержанием:
srec2bin.exe file_out.bin -K 2176 -d 255 -s file_fpga.flash file_nios.flash
Необходимо только изменить имена файлов на необходимые в конкретном случае:
file_fpga.flash - исходный файл конфигурации ПЛИС в формате S-record (преобразован из файла .sof);
file_nios.flash - исходный файл программы NIOS в формате S-record (преобразован из файла .elf);
file_out.bin - результирующий файл встроенного ПО в бинарном формате.
Полученный бинарный файл file_out.bin можно уже передавать по интерфейсу RS-485 в электронное изделие и записать его непосредственно в память конфигуратора EPCS64 без дополнительных преобразований.

Впрочем, можно упростить себе задачу и для получения параметров командной строки воспользоваться удобным калькулятором для расчёта длины результирующего файла S-record и параметров запуска программы srec2bin.

Исходный код программы srec2bin на C.


Комментарии

comments powered by Disqus