32bit_me (32bit_me) wrote,
32bit_me
32bit_me

Прошиваем FPGA в run-time

Originally published at 32 bit.me. You can comment here or there.

В общем, ничего сложного.
Для того, чтобы заливать прошивку в FPGA из процессорного ядра, нужно сделать следующее:
1. Подготовить файл rbf, это и есть файл прошивки. Он делается из файла sof с помощью утилиты Quartus:

quartus_cpf -c output_files/sockit_test.sof output_files/sockit_test.rbf

Положить этот файл в основной раздел SD-карты, например, в корень.

2. После загрузки linux, отключить мосты между FPGA и HPS (HPS — это процессорное ядро):

echo 0 > /sys/class/fpga-bridge/fpga2hps/enable
echo 0 > /sys/class/fpga-bridge/hps2fpga/enable
echo 0 > /sys/class/fpga-bridge/lwhps2fpga/enable

И заливаем файл в FPGA:

dd if=/sockit_test.rbf of=/dev/fpga0 bs=1M

Собственно, всё. Мосты можно включить обратно, если нужно:

echo 1 > /sys/class/fpga-bridge/fpga2hps/enable
echo 1 > /sys/class/fpga-bridge/hps2fpga/enable
echo 1 > /sys/class/fpga-bridge/lwhps2fpga/enable

Разумеется, всё это можно делать скриптом.
Пишем файл gsrd_init.sh:

1
2
3
4
5
6
7
8
9
#!/bin/sh
 
echo 0 > /sys/class/fpga-bridge/fpga2hps/enable
echo 0 > /sys/class/fpga-bridge/hps2fpga/enable
echo 0 > /sys/class/fpga-bridge/lwhps2fpga/enable
dd if=/sockit_test.rbf of=/dev/fpga0 bs=1M
echo 1 > /sys/class/fpga-bridge/fpga2hps/enable
echo 1 > /sys/class/fpga-bridge/hps2fpga/enable
echo 1 > /sys/class/fpga-bridge/lwhps2fpga/enable

Кладём его в /etc/init.d. Теперь после загрузки Linux прошивка FPGA будет загружаться автоматически.

Tags: fpga, linux, плис
Subscribe

  • RIP

  • Поздравляю

    Поздравляю всех, кто понимает, о чём я.

  • Дивный новый мир

    Если вы считаете, что для работы в софтверной компании нужны знания каких-то там алгоритмов, или, не приведи господь, языков, вы глубоко…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments