ORFA Introspection driver — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Драйвер интроспекции)
(Примеры)
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
=== Драйвер интроспекции ===
+
[[Категория:Open Robotics]]
Cпециальнsq драйвер в ядре, который закреплен на регистре 0x00.
+
 
 +
== Драйвер интроспекции ==
 +
Cпециальный драйвер, всегда закрепленный за регистром 0x00. Позволяет узнать какие вообще драйверы присутствуют в устройстве, какой версии эти драйвера и какие регистры им назначены.
  
 
Типы запросов (регистр, данные…):
 
Типы запросов (регистр, данные…):
Строка 38: Строка 40:
 
То есть все регистры драйвера это интервал <code>(Start Register)..(Start Register + Count of registers - 1)</code>
 
То есть все регистры драйвера это интервал <code>(Start Register)..(Start Register + Count of registers - 1)</code>
 
|}
 
|}
 +
 +
==Примеры==
 +
'''ВНИМАНИЕ! Все команды должны оканчиваться переводом строки, который означает окончание команды и передачу её на исполнение!'''
 +
 +
===Определяем сколько драйверов в устройстве===
 +
 +
Запрос:
 +
L40
 +
S40 00 00 S41 01 P
 +
 +
Ответ:
 +
L40
 +
SWAASR06P
 +
 +
Разбор:
 +
* Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
 +
* Второй запрос - S40 00 00 - отправим в устройство 0x40 номер регистра 00 и тип запроса 00 - получить количество драйверов, S41 01 - получить ответ 1 байт, P - конец запроса. Ответ: SW - начали запись в устройство, AA - подтверждения записи 2 байт в устройство, SR - начали получать ответ от устройства, 06 - получили 1 байт ответа (количество драйверов), P - конец ответа.
 +
 +
===Определяем информацию об одном из драйверов===
 +
 +
 +
Запрос:
 +
L40
 +
S40 00 02 S41 06 P
 +
 +
Ответ:
 +
L40
 +
SWAASR003101001002P
 +
 +
Разбор:
 +
* Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
 +
* Второй запрос - S40 00 02 - отправим в устройство 0x40 номер регистра 00 и тип запроса 02 - получить информацию о драйвере 0x02, S41 01 - получить ответ 6 байт, P - конец запроса. Ответ: SW - начали запись в устройство, AA - подтверждения записи 2 байт в устройство, SR - начали получать ответ от устройства, 003101001002 - получили 6 байт ответа (информация о драйвере - 0x0031 - идентификатор тип драйвера, 0x01.0x00 - версия драйвера, 0x10 - номер первого регистра драйвера, 0x02 - количество регистров драйвера), P - конец ответа.

Текущая версия на 07:19, 4 ноября 2009


Драйвер интроспекции

Cпециальный драйвер, всегда закрепленный за регистром 0x00. Позволяет узнать какие вообще драйверы присутствуют в устройстве, какой версии эти драйвера и какие регистры им назначены.

Типы запросов (регистр, данные…):

  1. 00 00 — запросить количество драйверов, нужно прочитать 1 байт
  2. 00 nn — запросить информацию о драйвере nn, нужно прочитать 6 байт

Структура информации в ответе на запрос 00 nn:

Байт Название Комментарий
0, 1 UID Уникальный идентификатор драйвера.

Может быть получен у команды проекта «Open Robotics». Таблица уже выданных идентификаторов.

Для личного использования зарезервирован диапазон адресов с первым байтом 0xFF.

2 Major Version Старший номер версии
3 Minor Version Младший номер версии
4 Start Register Номер начального регистра
5 Count of registers Количество регистров

То есть все регистры драйвера это интервал (Start Register)..(Start Register + Count of registers - 1)

Примеры

ВНИМАНИЕ! Все команды должны оканчиваться переводом строки, который означает окончание команды и передачу её на исполнение!

Определяем сколько драйверов в устройстве

Запрос:

L40
S40 00 00 S41 01 P

Ответ:

L40
SWAASR06P

Разбор:

  • Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
  • Второй запрос - S40 00 00 - отправим в устройство 0x40 номер регистра 00 и тип запроса 00 - получить количество драйверов, S41 01 - получить ответ 1 байт, P - конец запроса. Ответ: SW - начали запись в устройство, AA - подтверждения записи 2 байт в устройство, SR - начали получать ответ от устройства, 06 - получили 1 байт ответа (количество драйверов), P - конец ответа.

Определяем информацию об одном из драйверов

Запрос:

L40
S40 00 02 S41 06 P

Ответ:

L40
SWAASR003101001002P

Разбор:

  • Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
  • Второй запрос - S40 00 02 - отправим в устройство 0x40 номер регистра 00 и тип запроса 02 - получить информацию о драйвере 0x02, S41 01 - получить ответ 6 байт, P - конец запроса. Ответ: SW - начали запись в устройство, AA - подтверждения записи 2 байт в устройство, SR - начали получать ответ от устройства, 003101001002 - получили 6 байт ответа (информация о драйвере - 0x0031 - идентификатор тип драйвера, 0x01.0x00 - версия драйвера, 0x10 - номер первого регистра драйвера, 0x02 - количество регистров драйвера), P - конец ответа.