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

 
 
> работа с PCI в embedded, нужен совет
_Vladimir_
сообщение Jan 2 2008, 10:23
Сообщение #1


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

Группа: Свой
Сообщений: 114
Регистрация: 10-05-05
Пользователь №: 4 893



Есть Linux машина с PCI-66 интерфейсом на FPGA.
Загрузка ядра обнаружила устройство и в /proc созданы соответствующие PCI файлы и директории.
Из приложения (использовал как пример pciutils) читаю конфиг space.
Но не могу понять как мне работать с данными?
На PCI target создал 2 bar-а в memory - небольшой регистровый пул и окно для потокового чтения.
Ядро мапировало оба бара как задано и PCI настроило с method как proc
Как мне из userspace получить read/write в нужный бар?
Очевидно нужно писать еще один уровень драйвера?
Посколько в коде ядра нашел функции оперирующие с bars:
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
iomap можно вызвать из userspace или он может быть только в модуле ядра или
модуль можно будет подгрузить через insmod ?
Все мои пробы кончались segmentation fault.
После чтения доков только окончательно запутался, поскольку нет понимания- как вообще правильно работать с устройствами из userspase.
Вижу что через файлы. Это понятно.
Насторожило что в pciutils КАЖДОЕ обращение закрывает/открывает дескриптор.
Это что так надо? или просто так сделано? Будут ли потери эффективности при потоковом обращении через файл таким способом?
После загрузки в proc на PCI уже имелся fd = 4. Полагаю открытый значит.
Или это "чужой", а надо заводить свой?
В общем одни вопросы, поскольку начинающий.
Подскажите кто-нибудь, или ссылку на литературу.
Как писать драйверы описано достаточно подробно, но далее у меня нет ясности, привык к хорошо документированым API, а тут полная каша, плюс еще большая часть доков а-ля 1999 год - а в OS принципиальные изменения.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Harbour
сообщение Jan 6 2008, 08:34
Сообщение #2


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Ужасть wink.gif Неужели так практически необратимо влияет на сознание людей попытка написания pci драйвера под вынь ?

Быстрый ответ: написать драйвер в UIO парадигме.

Длинный one:

1. Видно, что непрочитаны указанные доки, включая примеры любого драйвера [ до конца ].
2. Можно конечно юзать pci строго из US, но это муторно, как быть с прерываниями, проблемы с секьюрити и т.д. Обычно задача разбивается на kernel driver и US прогу, в драйвере пишут detect/init/low level service рутины, в US проге реализуют саму задачу с тонким интерфейсом к слою драйвера.
Go to the top of the page
 
+Quote Post
_Vladimir_
сообщение Jan 6 2008, 10:10
Сообщение #3


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

Группа: Свой
Сообщений: 114
Регистрация: 10-05-05
Пользователь №: 4 893



Цитата(Harbour @ Jan 6 2008, 12:34) *
Ужасть wink.gif Неужели так практически необратимо влияет на сознание людей попытка написания pci драйвера под вынь ?

Не стоит об этом, никто не говорил о написании под Windows.

Цитата(Harbour @ Jan 6 2008, 12:34) *
Быстрый ответ: написать драйвер в UIO парадигме.

Длинный one:

1. Видно, что непрочитаны указанные доки, включая примеры любого драйвера [ до конца ].
2. Можно конечно юзать pci строго из US, но это муторно, как быть с прерываниями, проблемы с секьюрити и т.д. Обычно задача разбивается на kernel driver и US прогу, в драйвере пишут detect/init/low level service рутины, в US проге реализуют саму задачу с тонким интерфейсом к слою драйвера.

Если нет конкретных ответов на конкретные вопросы - не стоит утруждаться.
За это время уже нашел ответы на все свои вопросы.
Насчет прерываний, это не десктоп система, а ембедед, и не x86, несколько другое построение работы с прерываниями, не должно мешать.
А с секьюрити посмотрим, пока не мешает.
Тему можно закрыть.
Спасибо, с рождеством!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 26th August 2025 - 07:41
Рейтинг@Mail.ru


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