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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Кит DK-MAXII-1270N, Работа с PCI
Wespe
сообщение Mar 6 2012, 05:18
Сообщение #16





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



Собственно, реализовал.

Механизм следующий - пишу в два регистра числа, когда они сложатся, выставляю прерывание. Прерывания на PCI шине разделяемые, на одной линии может "сидеть" несколько плат, поэтому надо проверять, кто выставил прерывание. Для этого я создал регистр, в который писал определенное число, если выставил прерывание. В функции-обработчике прерывания просто читал этот регистр, и если прерывание выставил я, то читаю результат суммы.

Однако, я решил немного модернизировать устройство, сделать "по человечески" интерфейс. Хочу оставить только 2 БАРа. Но не могу понять одну вещь, касающуюся адресации. БАРы у меня определены как порты I/O. В драйвере получаю нач. адреса этих портов и их длину. Например, получаю BAR0 - 9f00 (16). Если я буду обращаться по адресу 9f00 попаду в BAR0, если по адресу 9f00+4 тоже в этот БАР, если 9f08 тоже BAR0 и если 9f0c тоже BAR0. Тут все понятно. Теперь я смотрю что выставляет моей локальной логике мегафункция в качестве адреса (линии l_adro). А выставляет она мне тот же адрес, что присутствует на шине. Т.е. если я обращусь к BAR0 по адресу 9f00, то мегафункция выдаст мне на линиях l_adro 9f00. Собственно вопрос. Младшие два разряда этого адреса - 00 это и есть "относительный" адрес для моей локальной логики? Начальный адрес любого бара будет начинаться с 00 (9f00, 9c00, 9a00)?
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Mar 6 2012, 06:26
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



BIOS формирует младшие адреса как ххх0, хх00, х000, и т.п., то есть они всегда нулевые, выровнены к размеру затребованных в BAR пространств I/O или памяти.

У меня специализация на Altera по pci32t и pci32mt, все на verilog, с этим я справляюсь, PCI-плата тоже своя на CycloneIII. Программы обслуживания пишут в DOS и Линукс, но уже другие программисты, и тоже успешно. Но хотел бы, ради интереса, добраться своими программами к своей аппаратуре со стороны WinXP, например под C++Builder 6, но пока не удается.

У меня к Вам вопрос, под какую ОС пишутся драйвера, и в какой среде программа обслуживания?

Go to the top of the page
 
+Quote Post
Wespe
сообщение Mar 6 2012, 07:06
Сообщение #18





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



Работаю в Kubuntu, Linux. Самой программы как таковой нету. Есть только драйвер, а сообщения печатаю в лог ядра.
Go to the top of the page
 
+Quote Post

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

 


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


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