Кто-нибудь работал с FPGA? (При работе появляются сильные тормоза)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
MiK13
Сообщения: 1164
ОС: Linux Debian

Кто-нибудь работал с FPGA?

Сообщение MiK13 »

Делаем систему на базе компьютере OMAP L138. В нём три программируемых "вычислителя".
Основной процессор ARM926EJ-S rev 5 (v5l). Работает под управлением Linux.
Кроме того, есть DSP (марку не помню) и какой-то (какая-то) FPGA.
Программы для них пишут другие люди (средства разработки под виндой).
Доступ к ним из Linux -- через модули dsplinkk.ko и fpga_ctrl.ko.
После insmod /lib/modules/3.2.0/extra/fpga_ctrl.ko добавляются следующие каталоги: /sys/devices/fpga_ctrl, /sys/bus/fpga и /sys/module/fpga_ctrl
Для занесение "программы" в FPGA по рекомендации с сайта производителя сделал скрипт

Код: Выделить всё

echo "1" > /sys/devices/fpga_ctrl/cmd   # configure the FPGA driver to reset the module
echo "2" > /sys/devices/fpga_ctrl/cmd   # configure the FPGA driver to program the FPGA
cat "$1" > /sys/devices/fpga_ctrl/image # write the FPGA configuration to the FPGA
Если им загружаю что-то в FPGA, он начинает работать (на это указывает моргающий светодиод). Но при этом линукс начинает сильно тормозить при обращении к системным файлам (первый раз). Например, time ls -l /usr/sbin выдаёт время больше 5 минут. При этом top показывает, что программа ls занимает 93-95, а то и больше процентов CPU. Как только я "останавливаю" FPGA, записав 1 в /sys/devices/fpga_ctrl/cmd, тормоза сразу пропадают, на экран сразу выдаётся результат работы команды ls.
Причём сказывается это только на доступе в системному "диску" объёмом 128 МиБ с файловой системой JFFS2.
И что для меня непонятно, команды mount и df показывают, что корень монтирован на /dev/root:

Код: Выделить всё

s# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               131072     96340     34732  74% /
devtmpfs                 25388         4     25384   0% /dev
tmpfs                    25468       960     24508   4% /dev/shm
tmpfs                    25468      1344     24124   5% /run
tmpfs                    25468       108     25360   0% /sys/fs/cgroup
tmpfs                    25468         0     25468   0% /tmp
Но файла root в каталоге /dev/ нет:

Код: Выделить всё

# ls -l /dev/r*
brw-rw----    1 root     disk        1,   0 Jan  1  2000 /dev/ram0
crw-rw-rw-    1 root     root        1,   8 Jan  1  2000 /dev/random
lrwxrwxrwx    1 root     root             4 Jan  1  2000 /dev/rtc -> rtc0
crw-------    1 root     root      254,   0 Jan  1  2000 /dev/rtc0
Может быть кто-нибудь сталкивался с этой ситуацией или работал с подобными устройствами?
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Кто-нибудь работал с FPGA?

Сообщение MiK13 »

Проблема решилась.
"Аппаратчик", тот, кто составлял "программу" для ПЛИС, уверял, что "программа НИЧЕГО не делает". И тем не менее, при её загрузке в FPGA начинались ужасные тормоза при обращении к Flash памяти (корень смонтирован в /dev/root, но в каталоге /dev файла root нет).
Потом он принёс прошивку, в которой, как он сказал, задействовал неиспользуемые выводы, установил их в определённое состояние.
После загрузки в FPGA этой прошивки тормозов при обращении, например, к /usr/sbin, практически не было.То есть были, но, видимо, обычные тормоза при первичном чтении системных каталогов.
Спасибо сказали:
Ответить