Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Генерация прерываний плты от контакта PLD-40::37

Вы не вошли.

 Поиск | Регистрация | Вход 

Анатолий
25.08.2005 08:53:11
#1

Гость

Генерация прерываний плты от контакта PLD-40::37

Здравствуйте!

У меня есть ваша плата L-761, ADSP-2185, ревизия B.

Я переписываю библиотеку под QNX.
Есть следующие вопросы:
1) В коде драйвера для LINUX - при выводе кода в DAC,
   выполняется только & 0x8FFF со значением.
   А в коде PLX_API.cpp выполняется обязательная установка
   бита 0x8000, причем так работает.
   Баг в коде драйвера Линуха или я что-то не понял?
2) Скажите пожалуйста как мне в программе сделать так, чтобы
   процедура выставления напряжения на выходе DAC выходила сразу после
   того, как LBIOS принял это к сведению и напряжение выставилось.
   Когда DAC_rate = 1,то процедура возвращается, а напряжение
   не выставляется. Когда rate поднимаю до 125, то все - ОК.
   Как сделать выход с гарантированным выставлением и при этом не
   задерживаться ни миллисекунды лишней дольше?
3) Объясните пожалуйста, почему при работе с устройством через память
   обязательно нужно выполнять пересылку 32 битных (двойных) слов,
   и обычный memcpy() не работает?
4) И ГЛАВНОЕ: в целом фирменный LBIOS нас устраивает, но нам надо, чтобы плата генрировала прерывания от контакта 37 разъема PLD40 и чтоб мы знали, что прерывание сгенерировано по этой причине. Как с минимальными усилиями доработать фирменный LBIOS, чтобы это было возможным?

25.08.2005 11:46:58
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Генерация прерываний плты от контакта PLD-40::37

Ждите выхода из отпуска Тихомирова Сергея...он по биосу подскажет...

Анатолий
25.08.2005 13:48:00
#3

Гость

Re: Генерация прерываний плты от контакта PLD-40::37

А сколько ждать? Не успеет ли солнце сесть и снова взойти?

Анатолий
12.09.2005 07:27:16
#4

Гость

Re: Генерация прерываний плты от контакта PLD-40::37

Тема остается актуальной, ждем Сергея из отпуска.

13.09.2005 14:54:10
#5

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,494

Re: Генерация прерываний плты от контакта PLD-40::37

1. Надо делать так, как в PLX_API.cpp. В Linux'е судя по всему допущен баг.
2. Скачайте последнюю модификацию LBIOS с www.lcard.ru/download/index.php3?faction=getfile&id=962&fn=l7xxbios.exe. В ней как раз реализован требуемый Вам алгоритм работы с ЦАП (см. Readme). В принципе, если Вы пишите свою библиотеку под QNX, рекомендую скачать полный пакет модифицированного софта для плат L-7xx (включая плату L-780M) под DOS. Качать отсюда: www.lcard.ru/download/index.php3?faction=getfile&id=962&fn=l7xxsoft.exe
3. Для блочного обмена данными с платой должна использоваться строковая инструкция movsd. Что используется в функции memcpy() я не знаю.
4. Контакт 37 разъёма PLD40 подключён непосредственно к линии прерывания IRQL1 DSP. Данное прерывание работает только по уровню, т.е. линия IRQL1 должна оставаться в активном низком уровне до тех пор, пока сигнальный процессор не начнет обслуживание прерывания. В обработчике прерывания линию IRQL1 рекомендуется сбрасывать в исходное высокое состояние, чтобы это прерывание не обрабатывалось повторно.

Анатолий
19.09.2005 07:25:04
#6

Гость

Re: Генерация прерываний плты от контакта PLD-40::37

Большое спасибо!
По 3 - а почему именно двойными словами?
По 4 - в исходнике LBIOS судя по всему сейчас стоит заглушка? А как сделать трансляцию этого прерывания на ПК? И как сообщить ISR на ПК, что источник - IRQL1 DSP?

19.09.2005 12:02:07
#7

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,494

Re: Генерация прерываний плты от контакта PLD-40::37

1. Чтобы получить максимальную скорость передачи данных.
2. В штатном LBIOS прерывание IRQL1 не используется, поэтому там стоит заглушка. Транслировать прерывание IRQL1 в РС можно используя флаг FL2 (см. п.3.2.10 "Генерирование прерываний в РС" тех.описания). Чтобы РС знал от кого именно пришло прерывание, можно в LBIOS ввести дополнительную переменную, в которой нужно будет хранить код источника прерываний (например, 0x0 - прерывание в РС доступно, 0x1 - прерывание занято АЦП, 0x2 - прерывание занято IRQL1). А в обработчике прерываний в РС считывать содержимое этой переменной, определять кто именно на плате генерит данное прерывание и сбрасывать переменную (как признак конца обработки прерывания). Главное в этом алгоритме, чтобы LBIOS не генерил новое прерывание пока в РС не будет обработано предыдущее.

Анатолий
20.09.2005 13:39:15
#8

Гость

Re: Генерация прерываний плты от контакта PLD-40::37

Примерно, ясно.

Скажите пожалуйста, я написал программу, которая загружает LBIOS в плату и выдает код на ЦАП по команде. Так вот на одном копмьютере все нормально работает, а на дркгом - все виснет при запуске процесса, который обращается к плате. Доступ через HIGHMEM или IO. Где виснет конкретно еще не разбирался, но вы не подскажете по какой причине это может быть?

23.09.2005 20:39:33
#9

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,494

Re: Генерация прерываний плты от контакта PLD-40::37

Многое зависит от того как Вы всё это реализовали.
1. А при работе только через IO компьютер подвисает?
2. Под HIGHMEM Вы подразумеваете ресурсы платы выше 1 МГб или ниже 1МГб?