www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 ноя 2024, 07:44

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 70, 71, 72, 73, 74, 75, 76 ... 108  След.
Автор Сообщение
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 01 июн 2016, 23:16 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 01 мар 2014, 15:38
Сообщений: 69
Alexies,
Alexies писал(а):
У пакета есть рандомный двухбайтовый id и TTL (time to live). Если ретранслятор слышит пакет, требующий подтверждения получения, но не слышит на него ответа в течении некоторого времени, он повторяет этот пакет несколько раз с некоторым интервалом. При этом у пакета на единицу уменьшается TTL.

Хотел спросить, в вышеописанном используется что-то от технологии Enhanced ShockBurst™? Мой вопрос связан с тем насколько гарантирована доставка посылки с помощью nrf24l01 с одного раза (если реализовывать свой протокол связи) или без автоматической (встроенной) поддержки передач все тлен? :roll:
Опытных/тестовых единиц не было?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 00:24 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Ansat писал(а):
Alexies,
Хотел спросить, в вышеописанном используется что-то от технологии Enhanced ShockBurst™? Мой вопрос связан с тем насколько гарантирована доставка посылки с помощью nrf24l01 с одного раза (если реализовывать свой протокол связи) или без автоматической (встроенной) поддержки передач все тлен? :roll:
Опытных/тестовых единиц не было?


Я не использую Enhanced ShockBurst. Его возможностей маловато, на мой взгляд, для задач лазертага. Подтверждение я реализую самостоятельно, просто посылаю специальный пакет в ответ.

С точки зрения nrf24l01, у меня все девайсы сидят на одном и том же дефолтном хардварном MAC-адресе "e7 e7 e7 e7 e7", все слышат всех.
В пакетах помимо данных передаю "самодельные" адреса отправителя и получателя. На такие адреса отвожу по 3 байта. Это что-то вроде IP. Плюс ещё упакованные 3 байта служебной информации: id пакета, ttl и бит "нужно ли подтверждение доставки". Остаётся ещё 32-9=23 байта полезной нагрузки.
Чтобы осуществить гарантированную передачу данных, повторяю передачу пакета до тех пор, пока не придёт подтверждение (или не выйдет таймаут).

В отличие от Enhanced ShockBurst это позволяет настраивать все параметры (таймауты, период повторения и т.п.), принимать пакеты между повторами передачи, делать ретрансляторы, совмещать пакеты с подтверждением и без (например, широковещательный пакет: "воскресить всю красную команду" не требует подтверждения) и делать некоторые другие вещи.

Поскольку контроллер мощный и используется операционная система, то просто выделяется один поток на работу с сетью, для остальной программы это не создаёт трудностей. Хотя и без ОС у меня работало.

Такой подход показал себя хорошо, связь работает стабильно, при интенсивной передаче никаких потерь из-за коллизий не происходит.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 05:40 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):
Pingvin писал(а):
А у Вас меш-сеть реализована?
С динамической маршрутизацией?
Или обмен идет по принципу точка-точка в пределах радиовидимости?


Нет, меш-сеть не нужна, динамическая маршрутизация - это избыточно. Поддержание перестраиваемых таблиц маршрутизации в наших условиях будет слишком затратным. У меня всё проще:

У пакета есть рандомный двухбайтовый id и TTL (time to live). Если ретранслятор слышит пакет, требующий подтверждения получения, но не слышит на него ответа в течении некоторого времени, он повторяет этот пакет несколько раз с некоторым интервалом. При этом у пакета на единицу уменьшается TTL. Если ретранслятор слышит пакет, не требующий подтверждения (например, широковещательный), то всегда повторяет его однократно, уменьшая TTL. Чтобы избежать "эха" от других ретрансляторов, пакет с одним и тем же id проходит через ретранслятор только один раз (при повторном получении такого же id пакет отбрасывается).
При ретрансляции меняется только TTL, всё остальное содержимое - прежнее.

Но у меня пока нет действующего образца.


Спасибо!
Что то в этом роде и предполагал.
Меш сеть - слишком затратна по ресурсам и много служебного трафика.
Хорошее решение.
Как смотрите на то, чтобы сделать спецификацию протокола открытой?

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 11:20 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Я обновил, на всякий случай, репозиторий с прошивками и схемами: https://github.com/caustic-lt-system/caustic-public

Исходники загрузчика: https://github.com/DAlexis/stm32-usb-bootloader
Загрузчик применим для любых проектов. Обновляет прошивку из бинарного образа flash.bin. Вычисляет и сверяет хэши: если прошивка на карточке совпадает с уже зашитой в МК, ничего не перепрошивается - другими словами, удалять с карты ничего не надо.
Работает только на stm32f103ret6, но модификация под другие контроллеры серии stm32f1 сводится к изменению адресов да пинов в некоторых местах, т. е. портировать не трудно.
Собирается, как проект Eclipse. Руки не доходят перейти на цивилизованный CMake.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 12:11 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Alexies писал(а):
Я обновил, репозиторий с прошивками и схемами: https://github.com/caustic-lt-system/caustic-public
Ридми желательно поподробнее. Какие файлы складывать на флешку, какой вариант платы самый последний (лучше удалить все старые варианты) и тд. Ещё момент непонятно можно ли записать файл прошивки на флешку через USB не вынимая сд-карту из макета ? Поставить разъём USB на корпус макета проще - чем разбирать маркер каждый раз для смены прошивки. Собирать радиомост для перепрошивки маркера большинству будет лениво.

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 12:22 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
LTagKirov писал(а):
Ридми желательно поподробнее. Какие файлы складывать на флешку, какой вариант платы самый последний (лучше удалить все старые варианты) и тд. Ещё момент непонятно можно ли записать файл прошивки на флешку через USB не вынимая сд-карту из макета ? Поставить разъём USB на корпус макета проще - чем разбирать маркер каждый раз для смены прошивки. Собирать радиомост для перепрошивки маркера большинству будет лениво.


Окей, напишу ридми.

Да, доступ к карте по USB есть, помимо зарядки это единственная функция USB-порта на данный момент. При запуске контроллера загрузчик некоторое время ждет установления USB-соединения. Если соединения нет - запуск прошивки. Иначе - режим кардридера.
То есть, чтобы зайти с компа на sd-шку, достаточно выключить девайс, подключить USB-шнур, включить девайс.
По радиомосту пока прошивки нет.

Да, старые версии удалю. Там есть ещё некоторые под "лазерный утюг" с соответствующей разводкой, удобной для самодеятельности. Но они старые, я их не поддерживаю. Новые платы ЛУТом не изготовить: много переходных отверстий 0,3мм под smd-компонентами.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 14:02 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
А как проект в Эклипсе открыть?
Копирую папку bootloader_usb в свой workspase - бесполезно...

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 14:25 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
А как проект в Эклипсе открыть?
Копирую папку bootloader_usb в свой workspase - бесполезно...


На всякий случай напишу полную инструкцию:

0. Желательно использовать последний эклипс. Можно сразу сборку для C/C++, тогда п.1 пропустить, можно - чистый, где из коробки только Java.

1. Сначала нужно поставить C/C++ development toolkit: Help->Install new software... В поле Work with выбираем http://download.eclipse.org/releases/mars. Ниже Programming languages->C/C++ development tools.

2. Затем имеет смысл поставить GNU ARM Plugin. В поле Work with вбиваем http://gnuarmeclipse.sourceforge.net/updates , снизу выбираем нужное (можно всё выбрать)

3. В системе должен стоять компилятор gcc для ARM. Под линуксом для этого нужны пакеты arm-none-eabi-gcc, arm-none-eabi-binutils, arm-none-eabi-gdb, arm-none-eabi-newlib. Как поставить под виндой - не помню, нужно загуглить, но там всё просто.

4. В эклипсе выбрать C/C++ Perspective (Window->Perspective->open perspective->other, ну или просто нажать кнопку на панели инструментов). Это что-то вроде режима работы Eclipse. Теперь он готов для программирования на C++.

5. Скопировать bootloader_usb в workspace, а затем File->Import->General->Existing Project into Workspace. Далее указать директорию workspace-а, ну и там по контексту.

После этого проект должен появиться. Можно собирать. Я собирал таким образом на разных Linux-машинах и под виндой, всё работало. Если будут проблемы - пишите.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 19:40 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Спасибо!
Да эклипс у меня настроен был, а вот как проект импортировать - не сообразил. :oops:
Ща буду пробовать.

Такой вопрос у меня...
Я ведь тоже пробовал бутлоадер размещать в конце флеша, а прошивку - без смещения.
Но что то не вышло.
Прошивается флеш правильно, прошивка даже стартует, но вот UART не работал ни в какую!
Я подозреваю, что либо "хвосты" бутлоадера плохо зачистил либо что то не так делаю при запуске прошивки.
Я до сих пор не понимаю - что нужно делать со стек-поинтером?
Его нужно инициировать перед запуском прошивки?
А разве в самой прошивке нет его инициализации?
Тут я "плаваю" - нет у меня чёткого понимания. :?


P.S. Получилось импортировать! :) Но теперь ошибка при сборке

23:04:26 **** Build of configuration Debug for project bootloader-usb ****
make all
Building file: ../Src/bsp_driver_sd.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Og -fmessage-length=0 ...
cc1: error: invalid option argument '-Og'
make: *** [Src/bsp_driver_sd.o] Ошибка 1

23:04:27 Build Finished (took 575ms)


Попробовал под Виндой собрать - опять ошибка:
make all
'Building file: ../Src/bsp_driver_sd.c'
'Invoking: Cross ARM C Compiler'
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -Wall -Wextra -g3 -DDEBUG -DUSE_FULL_ASSERT -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=8000000 -DSTM32F103xE -I"C:\User...
...
cc1.exe: error: argument to '-O' should be a non-negative integer
make: *** [Src/bsp_driver_sd.o] Error 1

00:14:49 Build Finished (took 9s.922ms)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 02 июн 2016, 22:29 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
Спасибо!
Да эклипс у меня настроен был, а вот как проект импортировать - не сообразил. :oops:
Ща буду пробовать.

Такой вопрос у меня...
Я ведь тоже пробовал бутлоадер размещать в конце флеша, а прошивку - без смещения.
Но что то не вышло.
Прошивается флеш правильно, прошивка даже стартует, но вот UART не работал ни в какую!
Я подозреваю, что либо "хвосты" бутлоадера плохо зачистил либо что то не так делаю при запуске прошивки.
Я до сих пор не понимаю - что нужно делать со стек-поинтером?
Его нужно инициировать перед запуском прошивки?
А разве в самой прошивке нет его инициализации?
Тут я "плаваю" - нет у меня чёткого понимания. :?


При загрузке контроллера в стек-поинтер хардварно записывается число, которое лежит по нулевому адресу флеша. Если такого поведения ожидает прошивка, то это нужно сделать перед тем, как передавать ей управление. Однако многие генераторы кода, в том числе Cube, сами на всякий случай записывают туда то, что считают нужным, во время инициализации, поэтому всё работает даже если SP не трогать. Но правильно - взять первые 4 байта из прошивки (не бутлоадера) от адреса 0x8000000, и класть в SP.

Pingvin писал(а):
P.S. Получилось импортировать! :) Но теперь ошибка при сборке
...
cc1: error: invalid option argument '-Og'
...
Попробовал под Виндой собрать - опять ошибка:
...
cc1.exe: error: argument to '-O' should be a non-negative integer


Флаг "-Ox" определяет степень оптимизации. Когда задано -O0 ... -O3 - это оптимизация производительности, 0 - выключена, 1-2 - включена, 3 - сильная оптимизация, нестабильна. Когда задано -Os - это минимизировать размер, а -Og - это оптимизировать для отладки. Последний добавили недавно. Судя по всему, оба ваших компилятора его не поддерживают. Самый простой вариант - собрать не Debug, а Release. Там этот флаг отключен. Или покопаться в настройках проекта, и убрать этот флаг из дебажной версии. По факту он не нужен, отладчик всё равно так себе работает.

Ещё меня смущает, что используется cc1 вместо arm-none-eabi-gcc. Такое ощущение, что он пытается собрать обычным компилятором, а не микроконтроллерным.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 70, 71, 72, 73, 74, 75, 76 ... 108  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB