roboforum.ru

Технический форум по робототехнике.


Обсуждение реализации шлюз-контроллера [ORFA]

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 21 май 2009, 22:16

Да нет :) я говорю чтобы в 1 девайсе можно было в разных версиях прошивки по возможности не двигать драйвера. Даже если какой-то драйвер убираем и новый ставим - старые оставлять на местах.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 21 май 2009, 23:51

А я тем временем поправил юиды в ORFA и PyOR
и написал тулзу для красивого просмотра интроспекции

Код: Выделить всёРазвернуть
vovan@vovan-laptop:~/src/pyor$ orintro.py /dev/rfcomm0  
PyOR version: 0.1.3                                     
Serial Gate protocol version: 1.0                                                                                                           
Selected device: 0x10                                                                                                                       
                                                                                                                                             
Drivers:                                                                                                                                     
#1 <pyor.introspection.MotorInfo object at 0x7fb4b47f9dd0>                                                                                   

    RoboMD2 motor driver.
    PWMn — channel n speed register (0x00-0xFF), r/w
    DIRn — channel n direction register (0/1), r/w 
                                                   
    UID: 0x0060                                     
    Version: 1.0                                                                                                                             
    Registers: 0x60, 0x61, 0x62, 0x63                                                                                                       
         DIR1: 0x62                                                                                                                         
         DIR2: 0x63                                                                                                                         
         PWM1: 0x60                                                                                                                         
         PWM2: 0x61                                                                                                                         

#2 <pyor.introspection.SPIInfo object at 0x7fb4b47f9e10>

    RoboBus SPI driver.

    UID: 0x0001
    Version: 1.0
    Registers: 0x51, 0x52

#3 <pyor.introspection.PortInfo object at 0x7fb4b47f9e50>

    RoboGPIO digital driver.
    PORTc — i/o port register, r/w
    DDRc — direction register, wo

    UID: 0x0020
    Version: 1.0
    Registers: 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B
         DDRA: 0x48
         DDRB: 0x49
         DDRC: 0x4A
         DDRD: 0x4B
        PORTA: 0x44
        PORTB: 0x45
        PORTC: 0x46
        PORTD: 0x47

#4 <pyor.introspection.IntrospectionInfo object at 0x7fb4b47f9e90>

    ORFA Introspection driver.

    UID: 0x0000
    Version: 1.0
    Registers: 0x00

vovan@vovan-laptop:~/src/pyor$


Добавлено спустя 16 минут 36 секунд:
По поводу аллокатора: можно переделать,
нужно только, чтобы начальный адрес драйвер знал
(это нужно для внутренних обработок)

Самое удобное конечно выделять адреса во время подписывания драйвера.
Кстати хранить только начальный адрес и количество имхо более удобно,
а за одно уменьшаеются затраты памяти и ускоряется поиск драйвера.

Добавлено спустя 9 минут 6 секунд:
Кстати пришла вот какая идея:

Пусть драйверу все его регистры передаются от 0 до n-1
А реальный адрес при этом может быть любым.

Вычисление простое: (reg - driver.reg_start)
Плюсы этого решения: драйвер может не знать свой стартовый адрес,
можно сделать проверки статическими.
Минусы: реальный адрес неизвестен драйверу.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 21 май 2009, 23:51

Но желаемый адрес всё-таки надо задавать, пожалейте людей, которые не хотят писать интроспектора :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 22 май 2009, 01:33

Не пожалею :)
Но между прочим для одной прошивки интроспектором можно пройтись один раз,
после чего забивать в свою программу константы и менять только
если поменяли порядок подписывания драйверов, поменяли кол-во и состав драйверов.

А после прошивки адрес будет всегда один, т.к. зависит от порядка подписывания драйвера
и того, сколько регистров запросил.

Добавлено спустя 1 минуту 22 секунды:
Для типовых готовых прошивок предлагаю прилагать листинг результатов интроспектора.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 22 май 2009, 04:31

Vooon писал(а):Кстати пришла вот какая идея:

Пусть драйверу все его регистры передаются от 0 до n-1
А реальный адрес при этом может быть любым.

Я про это и говорю!

Vooon писал(а):Минусы: реальный адрес неизвестен драйверу.

Драйверу это и не должен знать. Внутри драйвера нумерация с нуля. Реальный адрес во внутренний транслирует ядро

Vooon писал(а):Для типовых готовых прошивок предлагаю прилагать листинг результатов интроспектора.

+1
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 22 май 2009, 06:37

Vooon писал(а):Кстати пришла вот какая идея:

Пусть драйверу все его регистры передаются от 0 до n-1
А реальный адрес при этом может быть любым.

Вычисление простое: (reg - driver.reg_start)
Плюсы этого решения: драйвер может не знать свой стартовый адрес,
можно сделать проверки статическими.
Минусы: реальный адрес неизвестен драйверу.

А я что-то даже и не думал по другому сделать :roll:

Добавлено спустя 1 минуту 44 секунды:
blindman писал(а):
Vooon писал(а):Минусы: реальный адрес неизвестен драйверу.

Драйверу это и не должен знать. Внутри драйвера нумерация с нуля. Реальный адрес во внутренний транслирует ядро

Не то что не должен - ему это вредно.

blindman писал(а):
Vooon писал(а):Для типовых готовых прошивок предлагаю прилагать листинг результатов интроспектора.

+1

Это обязательно, но хотя-бы давайте сделаем возможность занять адреса в ядре пустышкой - т.е. без драйвера? :) чтобы выкинув драйвер можно было вместо него пустышку вставить того же размера.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 22 май 2009, 06:44

1. Зачем ?
2. А нужно ли (здесь подставить ответ на вопрос №1)?
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 22 май 2009, 07:00

Да наверное уже пофиг на нынешнем этапе - может быть потом сможем вернуться к этому вопросу, когда первый раз понадобится - тогда надеюсь уже точно будет ясно - надо оно или нет.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение blindman » 22 май 2009, 07:06

А я надеюсь, что к этому вопросу не придётся возвращаться :)
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 22 май 2009, 08:11

Ладно, забили пока.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 22 май 2009, 11:05

2 blindman: видимо я не понял о чем ты, но уловил идею :)

Добавлено спустя 1 час 20 минут 11 секунд:
Изменил структуру драйверов,
теперь аллокатор регистров вызывается во время регистрации драйвера.
драйверу с uid == 0 присваивается 0 регистр.

Изменения: http://hg.vehq.ru/orfa/rev/85500f70076d

Вывод интроспектора:
Код: Выделить всёРазвернуть
vovan@vovan-laptop:~/src/orfa$ orintro.py /dev/rfcomm0      
PyOR version: 0.1.3                                         
Serial Gate protocol version: 1.0                                                                                                           
Selected device: 0x10                                                                                                                       
                                                                                                                                             
Drivers:                                                                                                                                     
#1 <pyor.introspection.MotorInfo object at 0x7f8dc68dbd90>                                                                                   

    RoboMD2 motor driver.
    PWMn — channel n speed register (0x00-0xFF), r/w
    DIRn — channel n direction register (0/1), r/w 
                                                   
    UID: 0x0060                                     
    Version: 1.0                                                                                                                             
    Registers: 0x0C, 0x0D, 0x0E, 0x0F                                                                                                       
         DIR1: 0x0E                                                                                                                         
         DIR2: 0x0F                                                                                                                         
         PWM1: 0x0C                                                                                                                         
         PWM2: 0x0D                                                                                                                         

#2 <pyor.introspection.SPIInfo object at 0x7f8dc68dbdd0>

    RoboBus SPI driver.

    UID: 0x0001
    Version: 1.0
    Registers: 0x0A, 0x0B

#3 <pyor.introspection.PortInfo object at 0x7f8dc68dbe10>

    RoboGPIO digital driver.
    PORTc — i/o port register, r/w
    DDRc — direction register, wo

    UID: 0x0020
    Version: 1.0
    Registers: 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
         DDRA: 0x06
         DDRB: 0x07
         DDRC: 0x08
         DDRD: 0x09
        PORTA: 0x02
        PORTB: 0x03
        PORTC: 0x04
        PORTD: 0x05

#4 <pyor.introspection.IntrospectionInfo object at 0x7f8dc68dbe50>

    ORFA Introspection driver.

    UID: 0x0000
    Version: 1.0
    Registers: 0x00

vovan@vovan-laptop:~/src/orfa$


Добавлено спустя 9 минут 6 секунд:
blindman если ты сделал изменения, но тебе нужно будет обьединить ветки.
hg merge
hg diff
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 22 май 2009, 11:06

Будем делать какой-то общий список ресурсов на каждый МК? Типа все ГПИО-порты + все таймеры + АЦП? Ну те, которыми могут независимо пользоваться разные драйверы? Или ну его пока в топку? Я больше всего за таймеры беспокоюсь...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Digit » 22 май 2009, 11:08

клево! :good: вообще, читаю тему и балдею: классную вещь замутили!
PS только читаю, т.к. не вижу возможности помочь :pardon: но читаю всегда :)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение Vooon » 22 май 2009, 11:31

Ты можешь не только читать, но и обсуждать идеи
с точки зрения пользователя. :)

Добавлено спустя 10 минут 3 секунды:
ПС: у меня сели аккумуляторы, на зарядку нужно 24 ч.
(12 ч. на 4 батарейки, а всего их 8 )

Так что пока не смогу проверить на железе дальнейшие изменения
(если только не прикручу внешний БП)

Добавлено спустя 6 минут 8 секунд:
Кстати есть задача:
нужно написать драйвер АЦП.

Думаю прерывания там не нужны:
достаточно схемы запрос->преобразование->ответ
желательно иметь возможность настраивать разрядность.

Также желательно добавить битовый доступ к GPIO.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Обсуждение реализации шлюз-контроллера [ORFA]

Сообщение =DeaD= » 22 май 2009, 12:33

Vooon писал(а):ПС: у меня сели аккумуляторы, на зарядку нужно 24 ч.
(12 ч. на 4 батарейки, а всего их 8 )

Купи Fast-charger :)

Vooon писал(а):Кстати есть задача:
нужно написать драйвер АЦП.

Думаю прерывания там не нужны:
достаточно схемы запрос->преобразование->ответ
желательно иметь возможность настраивать разрядность.

Еще как нужны, 0.2мс это достаточно долго.

А вот разрядность пока можно зафиксировать как 8 бит. Остальное потом.

Vooon писал(а):Также желательно добавить битовый доступ к GPIO.

Это как?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

Вернуться в Open Robotics

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

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