Драйвер PCI на платформе MIPS

Все о программировании под *nix
Putnik
Заглянувший
Сообщения: 2
Зарегистрирован: 25 апр 2010, 08:53

Драйвер PCI на платформе MIPS

Сообщение Putnik »

Здравствуйте! Нужен совет) Пишу драйвер под Linux (точнее, под отечественную линуксоподобную поделку МСВС) для платы, подключенной к PCI-Compact. Из конфигурационного пространства получаю базовые адреса, отведенные системой для взаимодействия с этой платой. На платформе Intel: в драйвере преобразовываю полученные адреса (точнее, BAR2 согласно протоколу на плату) с помощью ioremap(), и затем оперирую с преобразованным адресом и смещениями при обмене данными (writel/readl для обмена 32-битным словом, и memcpy_toio/memcpy_from_io для обмена несколькими 32-битными словами). Взаимодействие между пользовательским приложением и драйвером – посредством put_user/get_user. Всё работает отлично, плата получает все данные, реагирует согласно протоколу.

Теперь возникла необходимость адаптировать этот же драйвер под MIPS-платформу (RM7000A). Из конфигурационного пространства: BAR2=0x20500000. Ioremap() не прокатывает. Прочёл про «прямой доступ к памяти» - обращения типа writel(0x20500000, (unsigned int) data) тоже не прокатывают (“unable to page request…”). Поигрался с функцией phys_to_virt() – вроде бы всё красиво получается, данные в преобразованный адрес вроде пишутся, и потом оттуда же считываются. Но… плата молчит))) В общем, вероятно, я неверно преобразовываю исходный адрес BAR2. Не могу понять механизм преобразования адресов в MIPS((( Из руководства к RM7000A:

Figure 6 Kernel Mode Virtual Addressing (32-bit)
0xFFFFFFFF Kernel virtual address space (kseg3) 0xE0000000 Mapped, 0.5GB

0xDFFFFFFF Supervisor virtual address space (ksseg) 0xC0000000 Mapped, 0.5GB

0xBFFFFFFF Uncached kernel physical address space (kseg1) 0xA0000000 Unmapped, 0.5GB

0x9FFFFFFF Cached kernel physical address space (kseg0) 0x80000000 Unmapped, 0.5GB

0x7FFFFFFF User virtual address space (kuseg) Mapped, 2.0GB

Что-то я откровенно запутался во всяческих типах адресов)) 0х20500000 – это виртуальный, физический, или…??? Прошу помощи, если кто работал с этим.

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Re: Драйвер PCI на платформе MIPS

Сообщение mend0za »

приветик

хочу отметить что место малоподходящее для таких вопросов, тут (forum.linux.by) песочница для пионеров

Посмотрите примеры в уже имеющихся драйверах, например в куске кода, касающемся поддержки китайского процессора Loongson + PCI. Полезно будет также пошерстить рассылку linux-mips.org (http://www.linux-mips.org/cgi-bin/namaz ... sort=score )

Аватара пользователя
X-Stranger
Администратор
Сообщения: 1238
Зарегистрирован: 09 сен 2001, 04:46
Контактная информация:

Re: Драйвер PCI на платформе MIPS

Сообщение X-Stranger »

mend0za, ну почему же сразу для пионеров, тут разные люди бывают :)

Но одно верно: те, кто уже научился самостоятельно решать проблемы, на форум редко пишут. Только если тема достаточно распространена и интересна. Данный же вопрос действительно из достаточно специфических, и будет достаточно верным порыться на специализированных форумах. Есть, конечно, небольшая вероятность, что и у нас найдется кто-то, кто таким же занимался.
usually I'm kind

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Re: Драйвер PCI на платформе MIPS

Сообщение mend0za »

X-Stranger, я не припомню, чтобы кто-то тут решил хоть одну достаточно технически сложную задачу. Форум достаточно общий и вопросы начального и чуть глубже начального уровня. А вот более глубокие и специальные вещи - здесь уже не обсуждают, уходят в специализированные рассылки. И так было всегда, не исключено что так и будет дальше.

Putnik
Заглянувший
Сообщения: 2
Зарегистрирован: 25 апр 2010, 08:53

Re: Драйвер PCI на платформе MIPS

Сообщение Putnik »

Ну, пускай будет песочница :)
Я просто ранее на программистских форумах особо не тусил, ещё не могу с первого раза определить общеобразовательные ресурсы от специфических :)

Ответить