Проблема чтения регистров ПЛИС

Учебный лабораторный комплекс SDK-1.1 на базе микроконтроллера ADuC812 с ядром MCS51 # RS-232C, I2C

Проблема чтения регистров ПЛИС

Сообщение MIX@ » 09 май 2008, 23:35

Доброго времени суток!

Изучая периферию, наткнулся на интересную особенность - наблюдаются проблемы с чтением из регистров ПЛИС, однако с записью всё проходит на ура.

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

Итак, суть проблемы подробнее:

1) Имеется драйвер для работы с регистрами ПЛИС, отображёнными на 8-ую страницу ОЗУ стенда. Пример драйвера приводится как в документации к стенду, так и в архиве с типовыми драйверами (http://embedded.ifmo.ru/index.php/support/sdk-11, раздел "Примеры программ"). Функционал его следующий: запись и чтение из/в регистры ПЛИС. Драйвер вполне вменяемый - проверял.
2) В составе стенда SDK1.1 имеется ЖКИ, взаимодействие с которым осуществляется с помощью двух регистров: C_IND (управление) и DATA_IND (обмен данными). ЖКИ управляется собственным контроллером, который имеет тактовую частоту много ниже, чем опорная частота ядра стенда - микроконтроллера ADuC812 => время выполнения команд сильно различается и встаёт вопрос синхронизации действий. Т.е. перед отправкой команд ЖКИ неплохо бы убедиться, что он сейчас свободен и готов для приёма команд/данных. В доках говорится, что для выяснения состояния ЖКИ можно его опросить, благо имеется аппаратный флаг занятости, устанавливаемый при занятости и сбрасываемый в обратном случае, соответсвенно. Так же, в ЖКИ имеется внутренний счётчик, указывающий текущую позицию курсора на дисплее, значение которого также можно получить вместе с флагом. Собственно, для получения BF (Busy flag) и содержимого AC (Adress counter) необходимо перевести ЖКИ в режим чтения команд, записав в C_IND соответсвующее значение и выдав строб для исполнения. В идеале, после проделанных действий в DATA_IND должен быть записан байт, содержащий в 7-ми младших разрядах AC, а в старшем BF. Однако всегда возвращается 0xFF (ЖКИ занят, счётчик адреса на максимуме), даже когда курсор установлен на первой позиции и контроллер ЖКИ не выполняет никаких действий.

Заключение: в доках сказано, что к регистру DATA_IND можно обращаться как по чтению, так и по записи, т.е. декларирован R/W доступ. Доступ по записи работает замечательно, но вот по чтению - никак. Собственно, единственное, что можно прочитать из этого регистра и есть описанный выше байт. На данный момент в существующих драйверах задержки реализуются с помощью глухого цикла, а "слежение" за позицией курсора с помощью внутренних переменных драйвера, что является костылями. И что характерно, факт чтения из регистров ПЛИС не нашёл ни в одном просмотренном мною драйвере, т.е. либо их разработчики уже знали о существовании такого бага/фичи, либо они поленились проверить ;)

Буду рад любым замечаниям по обозначенной проблеме. Багами полнится наша wiki ;)
Аватара пользователя
MIX@
 
Сообщения: 115
Зарегистрирован: 08 апр 2008, 11:57

Re: Проблема чтения регистров ПЛИС

Сообщение kluchev » 10 май 2008, 00:00

MIX@ писал(а):Буду рад любым замечаниям по обозначенной проблеме. Багами полнится наша wiki ;)


Замечание по поводу wiki...

Наша wikipedia временно открыта для доступа только для зарегистрированных пользователей. Сейчас туда в массовом порядке добавляется новая информация и происходит её коллективное редактирование. Я надеюсь, что в конце лета мы закончим основную часть работы и сможем открыть доступ для всех желающих.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: Проблема чтения регистров ПЛИС

Сообщение MIX@ » 10 май 2008, 02:26

kluchev писал(а):Наша wikipedia временно открыта для доступа только для зарегистрированных пользователей. Сейчас туда в массовом порядке добавляется новая информация и происходит её коллективное редактирование. Я надеюсь, что в конце лета мы закончим основную часть работы и сможем открыть доступ для всех желающих.


А не проще ли запретить редактирование/добавление статей анонимусам, но открыть доступ на чтение всем? Дело в том, что wiki содержит уже достаточно много полезной информации, а регистироваться для прочтения одной или пары статей не всегда удобно.
Аватара пользователя
MIX@
 
Сообщения: 115
Зарегистрирован: 08 апр 2008, 11:57

Re: Проблема чтения регистров ПЛИС

Сообщение kluchev » 10 май 2008, 07:26

MIX@ писал(а):А не проще ли запретить редактирование/добавление статей анонимусам, но открыть доступ на чтение всем? Дело в том, что wiki содержит уже достаточно много полезной информации, а регистироваться для прочтения одной или пары статей не всегда удобно.

Не проще, так как в wiki используются части наших новых публикаций. После того как отдадим начальству учебные пособия - пусть все читают сколько угодно. Собственно сдача уже скоро.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb


Вернуться в SDK 1.1

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron