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

 
 
 
Reply to this topicStart new topic
> Доступность FPGA периферии, Проверить доступность сконфигурированной FPGA периферии
Juzujka
сообщение Sep 7 2015, 09:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 3-04-09
Из: Москва, Киров
Пользователь №: 47 125



В приложении на Linux подразумевается обращение к On-Chip-SRAM, PIO и пр.
Доступ через mmap.
Но FPGA может быть не сконфигурирована. Или сконфигурирована неправильно.
Если FPGA не сконфигурирована, то
open("/mem/") возвращает нормальный файловый дескриптор
mmap возвращает указатель
выполнение операции
variable = pointer_to_mmap[index];
приводит к тому, что в HPS рабочей остаётся только кнопка Reset.
try{...} до catch{...} не доходит

известны ли кому-нибудь способы определить доступность периферии заранее?

FPGA - SoC Cyclone V
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Sep 7 2015, 10:23
Сообщение #2


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

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Сделайте в fpga регистр, в который будет заноситься сигнатура типа 0xaa55 при конфигурации и проверяйте её прямым чтением (inw (address)). А лучше написать свой драйвер и проверять готовность через ioctl, так правильней из userspace

Сообщение отредактировал bugdesigner - Sep 7 2015, 10:31
Go to the top of the page
 
+Quote Post
COMA
сообщение Sep 7 2015, 10:52
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



А еще надежнее физически подключить вывод FPGA к GPIO HPS и выдавать лог сигнал о том что все ок.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 7 2015, 11:42
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(COMA @ Sep 7 2015, 13:52) *
А еще надежнее физически подключить вывод FPGA .


подключить порт JTAG к микроконтроллеру, им же делать конфигурацию и из JTAG читать статус конфигурации - ОК или нет...
При таком подходе через JTAG ПЛИС можно делать сканирование и проверить припайку. Микроконтроллер же и будет этим заниматься...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
serjj
сообщение Sep 7 2015, 12:00
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Сделайте в fpga регистр, в который будет заноситься сигнатура типа 0xaa55 при конфигурации и проверяйте её прямым чтением (inw (address)). А лучше написать свой драйвер и проверять готовность через ioctl, так правильней из userspace

А в чём разница? biggrin.gif Это будет тоже самое обращение к периферии, которое также вероятно приведёт к зависанию линуха.

Почитайте про такой модуль как FPGA manager и про работу с ним. Он входит в состав HPS и отвечает за конфигурирование FPGA из под проца и мониторинг состояния FPGA. В hwlib для него написан драйвер, из под линуха тоже должно быть что-то. А заоодно почитайте вот эту тему. В ней вы узнаете о ещё одной проблеме, которая может возникнуть, когда FPGA грузится позже проца.
Go to the top of the page
 
+Quote Post
Juzujka
сообщение Sep 7 2015, 12:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 3-04-09
Из: Москва, Киров
Пользователь №: 47 125



Цитата(serjj @ Sep 7 2015, 15:00) *
А в чём разница? biggrin.gif Это будет тоже самое обращение к периферии, которое также вероятно приведёт к зависанию линуха.

Почитайте про такой модуль как FPGA manager и про работу с ним. Он входит в состав HPS и отвечает за конфигурирование FPGA из под проца и мониторинг состояния FPGA. В hwlib для него написан драйвер, из под линуха тоже должно быть что-то. А заоодно почитайте вот эту тему. В ней вы узнаете о ещё одной проблеме, которая может возникнуть, когда FPGA грузится позже проца.


Да, я тоже сразу откинул варианты с регистром, всё равно его через mmap читать-писать.
В качестве альтернативного варианта избежать хотя бы части проблем решил считывать биты режима в регистре статуса модуля менеджера FPGA.
Они показывают, была ли вообще удачно загружена FPGA.

Но это тоже не очень хороший вариант. Потому что можно загрузить какую попало конфигурацию ПЛИС, биты режима покажут User mode, что говорит о успешной загрузке конфигурации, а при чтении-записи области без периферийныхустройств, ядро так же упадёт.

Сообщение отредактировал Juzujka - Sep 7 2015, 13:23
Go to the top of the page
 
+Quote Post
serjj
сообщение Sep 7 2015, 12:59
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Потому что можно загрузить какую попало конфигурацию ПЛИС, биты режима покажут User mode, что говорит о успешной загрузке конфигурации, а при чтении-записи области без периферийных, устройств ядро так же упадёт.

Ну так не надо какую попало. Туда загружется то, что туда загружают. Особых сбоев тут быть не должно. Но если этот момент принципиален, могу предложить два пути решения: а) копать в линухе, потому что зависания ненормальны, в bare metal, если fpga не загружена, то просто с регистров 0 читаются; б) попробовать как вариант поиграться с h2f_gp (general purpose signals, включаются в hps компоненте qsys), может быть получится передавать сигнатуру через этот интерфейс.
Go to the top of the page
 
+Quote Post
Juzujka
сообщение Sep 7 2015, 14:08
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 3-04-09
Из: Москва, Киров
Пользователь №: 47 125



Цитата(serjj @ Sep 7 2015, 15:59) *
Ну так не надо какую попало. Туда загружется то, что туда загружают. Особых сбоев тут быть не должно. Но если этот момент принципиален, могу предложить два пути решения: а) копать в линухе, потому что зависания ненормальны, в bare metal, если fpga не загружена, то просто с регистров 0 читаются; б) попробовать как вариант поиграться с h2f_gp (general purpose signals, включаются в hps компоненте qsys), может быть получится передавать сигнатуру через этот интерфейс.

Да, согласен, не надо какую попало и вообще ошибки делать на надо, надо всегда всё сразу правильно делать. На ошибки только время зря тратится. laugh.gif

Подозреваю, всё, что касается QSYS , не подойдёт. Потому что QSYS находится в конфигурации, а конфигурации может и не быть, нужно без неё определить.

То, что в bare metal 0 читаются - интересно. Почему же тогда в Linux падение происходит?

Сообщение отредактировал Juzujka - Sep 7 2015, 14:09
Go to the top of the page
 
+Quote Post
COMA
сообщение Sep 7 2015, 15:01
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Может потому, что по умолчанию в Линухе не производится включение мостов?
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Sep 7 2015, 16:08
Сообщение #10


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

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Вы меня не поняли. Читать надо не через mmap, а через io по прямому адресу, тогда ничего не зависнет. И делать это лучше в модуле ядра.

Сообщение отредактировал bugdesigner - Sep 7 2015, 16:10
Go to the top of the page
 
+Quote Post
serjj
сообщение Sep 8 2015, 05:50
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Вы меня не поняли. Читать надо не через mmap, а через io по прямому адресу, тогда ничего не зависнет. И делать это лучше в модуле ядра.

+1. В bare metal читаю по прямому адресу и всё норм. Даже если мосты не инициализированы, зависания нет, ибо его там и не должно быть.

Цитата
Подозреваю, всё, что касается QSYS , не подойдёт. Потому что QSYS находится в конфигурации, а конфигурации может и не быть, нужно без неё определить.

Распространённое заблуждение. В случае HPS qsys необходим для генерации preloader'a. Настройки, которые вы делаете в hps компоненте через папочку handoff попадают в конфиги preloader'a с помощью утилиты generate bsp-editor'a. А загружена ли прошивка FPGA, собранная с данным qsys, или нет - без разницы, на HPS это не влияет, т.к. модули, которые вы конфигурите хардверные.

Простой пример. Вы хотите читать/писать NAND память с помощью встроенного ONFI контроллера. По-умолчанию проц вам этого не даст, однако, если вы подсунете ему preloader, собранный из qsys, где на NAND был разведён клок и выведены соотвествующие ноги, то всё заработает. FPGA при этом можно вообще не трогать.
Go to the top of the page
 
+Quote Post

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

 


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


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