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

 
 
 
Reply to this topicStart new topic
> Обработка прерываний из FPGA в userspace
Nitrex
сообщение Dec 22 2015, 19:08
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 8-06-15
Пользователь №: 87 078



Доброго времени суток. У меня в FPGA есть счетчик, и при достижении определенного значения которого генерируется прерывание. По этому прерыванию программа под Linux из SDRAM должна читать данные. Делал ли кто ни будь обработку прерывания из FPGA в userspace? Каким образом вообще можно реализовать данный механизм?
Go to the top of the page
 
+Quote Post
des333
сообщение Dec 22 2015, 19:49
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Лучше сделайте драйвер, который умеет получать прерывания от FPGA.
А уже драйвер пусть создаст char device, с котором будет взаимодействовать userspace.


--------------------
Go to the top of the page
 
+Quote Post
Nitrex
сообщение Dec 22 2015, 20:18
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 8-06-15
Пользователь №: 87 078



Цитата(des333 @ Dec 22 2015, 22:49) *
Лучше сделайте драйвер, который умеет получать прерывания от FPGA.
А уже драйвер пусть создаст char device, с котором будет взаимодействовать userspace.


А без драйвера это сделать невозможно?
Go to the top of the page
 
+Quote Post
KPiter
сообщение Jan 3 2016, 17:01
Сообщение #4


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

Группа: Участник
Сообщений: 84
Регистрация: 22-09-06
Из: NN
Пользователь №: 20 592



Цитата(Nitrex @ Dec 22 2015, 23:18) *
А без драйвера это сделать невозможно?

непрерывно читать статусный регистр. Иначе нужен драйвер для резервирования прерывания в системе.
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 4 2016, 05:43
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Вот ведь странные люди. Сначала берут linux с его строго определенной концепцией использования прерываний,, а потом пытаются с этой концепцией бороться.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Jan 4 2016, 11:20
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Можно воспользоваться Userspace IO driver, который, в том числе, позволяет и ловить прерывания.
https://www.kernel.org/doc/htmldocs/uio-howto/


--------------------
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jan 4 2016, 15:20
Сообщение #7


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

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



Правильно будет написать модуль в ядро, с обработчиком прерывания, и создать char device. В обработчике будете считывать данные и передавать их в буфер вашего девайса. А уж потом, из юзерспейса читать данные из девайса. Чтение регистра статуса прерываний - плохая идея, тк задержка с момента прихода прерывания до момента чтения может оказаться слишком большой, да и время это не постоянно и не предсказуемо. Короче, лучше написать модуль (драйвер), это не намного сложнее обычной программы.


Сообщение отредактировал bugdesigner - Jan 4 2016, 15:24
Go to the top of the page
 
+Quote Post
johan
сообщение Jan 11 2016, 20:23
Сообщение #8


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

Группа: Свой
Сообщений: 78
Регистрация: 3-09-12
Пользователь №: 73 371



На рокетбордс появился набор "курсов" для Altera SoC:
от обзора что-это-такое до написания драйверов:
http://rocketboards.org/foswiki/view/Docum...CWorkshopSeries

Я одним глазом посмотрел - в третьей "лабораторной" есть куча примеров простых драйверов (в том числе и с прерываниями).

Сообщение отредактировал johan - Jan 11 2016, 20:23


--------------------
Go to the top of the page
 
+Quote Post
Nitrex
сообщение Jan 26 2016, 18:22
Сообщение #9





Группа: Участник
Сообщений: 11
Регистрация: 8-06-15
Пользователь №: 87 078



Решил освоить написание драйвера под linux. В качестве первого примера взял статью http://zhehaomao.com/blog/fpga/2013/12/29/sockit-4.html. Но возник вопрос: в Makefile есть строчка KERNEL_SRC_DIR=/home/zhehao/programs/others/linux-socfpga. Как я понимаю здесь нужно указывать путь к директории с исходниками ядра. Но на своём компьютере я директорию linux-socfpga не обнаружил. Подскажите пожалуйста откуда её можно взять и как установить что бы в конце концов можно было скомпилировать драйвер?
Go to the top of the page
 
+Quote Post
des333
сообщение Jan 27 2016, 12:31
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(Nitrex @ Jan 26 2016, 21:22) *
Решил освоить написание драйвера под linux. В качестве первого примера взял статью http://zhehaomao.com/blog/fpga/2013/12/29/sockit-4.html. Но возник вопрос: в Makefile есть строчка KERNEL_SRC_DIR=/home/zhehao/programs/others/linux-socfpga. Как я понимаю здесь нужно указывать путь к директории с исходниками ядра. Но на своём компьютере я директорию linux-socfpga не обнаружил. Подскажите пожалуйста откуда её можно взять и как установить что бы в конце концов можно было скомпилировать драйвер?

Вам нужно скопировать себе исходники ядра.

Их можно взять отсюда

Чтобы скопировать исходники Вам нужно выполнить в терминале Linux'а следующие команды:
Код
git clone https://github.com/altera-opensource/linux-socfpga
git checkout socfpga-4.3


Важно:
  1. У Вас должен быть установлен git
  2. Чтобы собирать драйвер исходники ядра нужно подготовить. Легче всего для Вас -- просто собрать ядро.
  3. Для сборки ядра нужны некоторые пакеты. Перед тем, как браться за дело, лучше прочитать пару статей про сборку ядра -- тогда процесс пойдёт как по маслу.


--------------------
Go to the top of the page
 
+Quote Post
Nitrex
сообщение Feb 2 2016, 17:59
Сообщение #11





Группа: Участник
Сообщений: 11
Регистрация: 8-06-15
Пользователь №: 87 078



Цитата(des333 @ Jan 27 2016, 15:31) *
Вам нужно скопировать себе исходники ядра.

Их можно взять отсюда

Чтобы скопировать исходники Вам нужно выполнить в терминале Linux'а следующие команды:
Код
git clone https://github.com/altera-opensource/linux-socfpga
git checkout socfpga-4.3


Важно:
  1. У Вас должен быть установлен git
  2. Чтобы собирать драйвер исходники ядра нужно подготовить. Легче всего для Вас -- просто собрать ядро.
  3. Для сборки ядра нужны некоторые пакеты. Перед тем, как браться за дело, лучше прочитать пару статей про сборку ядра -- тогда процесс пойдёт как по маслу.


Т.е я правильно понимаю, что исходники ядра нужно скомпилировать для среды Embedded Shell, которую я запускаю из под винды, когда компилирую обычные программки для userspace?
Go to the top of the page
 
+Quote Post
artix
сообщение Mar 14 2016, 13:47
Сообщение #12


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(Nitrex @ Jan 26 2016, 22:22) *
Решил освоить написание драйвера под linux. В качестве первого примера взял статью http://zhehaomao.com/blog/fpga/2013/12/29/sockit-4.html. Но возник вопрос: в Makefile есть строчка KERNEL_SRC_DIR=/home/zhehao/programs/others/linux-socfpga. Как я понимаю здесь нужно указывать путь к директории с исходниками ядра. Но на своём компьютере я директорию linux-socfpga не обнаружил. Подскажите пожалуйста откуда её можно взять и как установить что бы в конце концов можно было скомпилировать драйвер?


В общем по драйверам очень нравится эта статья. Внизу есть ссылка на полную версию документа и исходники + все по-русски.
Go to the top of the page
 
+Quote Post
MAO
сообщение Mar 15 2016, 08:11
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 14-09-15
Пользователь №: 88 398



Цитата(artix @ Mar 14 2016, 16:47) *
В общем по драйверам очень нравится эта статья.

Да неплохой материал И следует отметить актуален для свежих ядер; "... в версии ядра 3.17 разработчики радикально поменяли прототипы ключевых макросов "
Go to the top of the page
 
+Quote Post

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

 


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


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