RW9UAO
исследование оранжевого ВЧ модуля, прошивка v1 (глючная)

получив модули в подарок от DL7RFP, решил поиграться с ними. прицепил к “турниге” с прошивкой er9x, приемник AR8000.
для начала я прицепил граббер к SPI порту CYRF трансивера. проводил захват в честном режиме BIND, перед каждой новой попыткой менял ID передатчика удерживая кнопку “change ID”.
описание пакета: первые 8 байт - повторенный два раза manufacturer ID, 0x0A - количество каналов (я выбрал в пульте 10, с большим не заработало), 0хВ2 - тип передатчика (dsmX, 11 ms)
вот что я увидел:
попытка 1 - 0x3A, 0x63, 0xAA, 0xC5, 0x3A, 0x63, 0xAA, 0xC5, 0x05, 0x88, 0x01, 0x0A, 0xB2, 0x00, 0x06, 0xD2
попытка 2 - 0x3A, 0x64, 0xAA, 0xC5, 0x3A, 0x64, 0xAA, 0xC5, 0x05, 0x8A, 0x01, 0x0A, 0xB2, 0x00, 0x06, 0xD6
попытка 3 - 0x3A, 0x65, 0xAA, 0xC5, 0x3A, 0x65, 0xAA, 0xC5, дальше не интересно уже
попытка 4 - 0x3A, 0x66, 0xAA, 0xC5
попытка 5 - 0x3A, 0x67, 0xAA, 0xC5
попытка 6 - 0x3A, 0x68, 0xAA, 0xC5
попытка 7 - 0x3A, 0x69, 0xAA, 0xC5
попытка 8 - 0x3A, 0x6A, 0xAA, 0xC5
попытка 9 - 0x3A, 0x6B, 0xAA, 0xC5
попытка 10 - 0x3A, 0x6C, 0xAA, 0xC5
попытка 11 - 0x3A, 0x6D, 0xAA, 0xC5
попытка 12 - 0x3A, 0x6E, 0xAA, 0xC5
попытка 13 - 0x3A, 0x6F, 0xAA, 0xC5
попытка 14 - 0x3A, 0x70, 0xAA, 0xC5
попытка 15 - 0x3A, 0x71, 0xAA, 0xC5
попытка 16 - 0x3A, 0x72, 0xAA, 0xC5
дальше надоело.

разобрался с методом шифрования валкеры

итак. хочется для какой-нибудь поделки сделать модификацию, например, написать свой софт для мелкого квадрика, добавить привязку к спектруму. но существует шанс свой софт не дописать, а родной угробить. валкера выкладывает прошивки для некоторых своих поделок. например, для моей “new v120d02s” есть обновление прошивки. но они зашифрованы. а bootloader мы уже потерли своими экспериментами и не можем прошить зашифрованный бинарник. решил я на досуге посмотреть чего можно сделать.
смотрим в шифрованный бинарник, в начале файла много повторяющихся байт. это JMP table. значит файл зашифрован слабо.
внутри стоит хмега32а4, собираем компилятором winAVR любой код под этот процессор. в начале бинарника идет таблица JMP для прерываний. т.е. если примем байт в УАРТ, то процессор сделает переход по этой таблице.
первые байты представляют из себя jmp _reset_vector, который ведет в код начальной инициализации. остальные, если вектор не используется, то по идее тоже на вектор сброса. смотрим код и рядом дизасм его:

00: 0C 94 BC 00 jmp 0x00BC
02: 0C 94 DD 00 jmp 0x00DD
оранжевый 7-ми канальный

разобрал оранжа с ХК, который с S-BUS
внутри стоит забавный проц NUVOTON M054LAN, 16К флэша, 4К оперативки и ядро ARM® Cortex™-M0
плата приличного качества, пайка хорошая, можно брать.

копаю ВЧ блок ДХ8


на ВЧ блоке ДХ8 есть следующее:


4 нога - картинка 3, 4 - явно SPI clk

5 нога


7 нога - картинка 5, явно SPI data - MISO/MOSI



9 нога - картинка 6, 7 явно SPI data - MISO/MOSI


12 нога - картинка 0


картинка 1 - 1 канал 5 нога, 2 канал - 7 нога(data), 3 канал - 9 нога(data)


картинка 2 - 1 канал 12 нога, 2 канал - 4 нога (clk), 3 канал - 5 нога



картинка 8 и 9 - 1 канал 7 нога(data), 2 канал - 9 нога(data). 3 канал - 4 нога (clk)

скорость на SPI иногда меняется. странно все это.
ссылки на фотографии
img-fotki.yandex.ru/get/…/0_70b4e_9e1affe1_orig
img-fotki.yandex.ru/get/…/0_70b4d_8ad7fc81_orig
img-fotki.yandex.ru/get/…/0_70b4c_264236d2_orig
img-fotki.yandex.ru/get/…/0_70b4b_110bea86_orig

цвета проводов copterX

блок ФБЛ, провода/разъем влево, светодиоды вниз.
провода сверху:
черный - масса
красный - питание
черный - элерон
красный - элеватор
белый - коллектив питч
провода снизу
черный - масса
красный - питание
белый - усиление гироскопа хвоста
желтый - хвост

Валька приехала

да уж. мысль с установкой коптерхФБЛ заманчивая, но что-то уже не кажется реальной. надо как-то закрепить, иначе канопа не налезает, а без канопушки летать будет не комфортно.
разобрал мозги валькины, все собрано на одной плате, вторая сугубо для защиты при краше и припаяна в 4-х точках.
Xmega32 - обычный процик
CYRF6936 - наш любимый трансивер.
MMA8452Q - I2C 3 оси аксель
ITG-3205 - I2C 3 оси гир
импульсный питальник на 3,3 в наверное. т.к. питание с аккумулятора идет напрямую через ESC.
схему пока не рисовал.
тут уже ломают deviationtx.com/…/824-walkera-rx-reverse-engineeri…
в общем есть три варианта: все же поставить свой фбл с приемником спектрума; сделать передатчик стандарта валкеры (купить готовый тоже можно, но этому мешает жабус вульгарис); сделать свою программу, бо я умею к спектруму привязываться, а вот ФБЛ софтину - надо думать, брать за основу какой-нибудь мультиви, и алга.

dsm2 tm1000

разобрался я с логикой работы ДСМ2 и телеметрии. нарыл кое-что в интернетах, товарищ один для валкеры серии дево пишет универсальную прошивку с поддержкой разных протоколв. при биндинге передатчик отдает 4-ре байта manufacturer ID + номер модели по порядку (это для фишки модел матч), приемник сохраняет эти 4-ре байта. при последующем включении передатчик ищет пару каналов почище и начинает там вещать. SOP и DATA берутся из таблички по некоторому закону на основе номера канала и ID. приемник при включении начинает сканирование каналов с аналогично выбранными SOP и DATA. также смотрит на совпадение сохраненного ИД и ИД пришедшего в пакете.
в общем сканирование я освоил, прием пакетов тоже, с содержимым пакетов разобрался. а вот передача пока не идет.

DSM2 нипанимайу

по ходу дела выясняется, что передатчик и приемник меняют пары каналов и SOP в ходе работы. вот типа так (захват SPI обмена происходит при включении питания):
забиндил, передатчик не выключал
канал 0x26, SOP A2 35 A2 D1 A2 FC A2 97 A2 23 A2 D4 A2 C9 A2 88
канал 0x32, SOP A2 40 A2 BA A2 97 A2 D5 A2 86 A2 4F A2 CC A2 D1
сменил модель, вернул предыдущую
канал 0x26, SOP A2 35 A2 D1 A2 FC A2 97 A2 23 A2 D4 A2 C9 A2 88
канал 0x32, SOP A2 40 A2 BA A2 97 A2 D5 A2 86 A2 4F A2 CC A2 D1 <- ошибка приема пакета
ресет, делаем новый захват, на передатчике ничего не меняем
канал 0x26, SOP A2 35 A2 D1 A2 FC A2 97 A2 23 A2 D4 A2 C9 A2 88
канал 0x34, SOP A2 9E A2 08 A2 D1 A2 AE A2 59 A2 5E A2 E8 A2 F0 <- канал и SOP сменились
выключаем передатчик, включаем
канал 0x21, SOP A2 35 A2 D1 A2 FC A2 97 A2 23 A2 D4 A2 C9 A2 88 <- канал сменился, SOP осталась
канал 0x4A, SOP A2 5F A2 30 A2 3B A2 56 A2 96 A2 45 A2 F4 A2 A1 <- канал и SOP сменились вааще

принимаю пакеты

что-то я делаю не так. процедура следующая:

  • заливаю прошивку оранжа
  • биндинг к передатчику, все в порядке, серва ходит за ручкой
  • считываю ЕЕПРОМ, перехватываю SPI поток от проца к трансиверу, получаю номера каналов и номера пары SOP/DATA
  • заливаю свою программу, которая инициализирует трансивер, заливает нужную пару CRC/SOP/DATA и встает на нужный канал.
  • идет прием двух пакетов, по обоим каналам. все нормально, вижу изменения на ручки.
  • переключаю модель в передатчике, прием пропадает. это нормально.
  • возвращаю модель ранее привязанную. приема нет. а вот это уже не нормально.
    че делать - х.з. надо раскуривать дизасм глубже, есть там пара моментов про служебный канал.
    перехватить SPI обмен в двух случаях - после бинда, до смена модели и после смены модели. вечером попробую.
всякости

после долгого перерыва вернулся к спектрум ДСМ2. самодельный самописный программатор для кипреса, что стоит в оранжах работает нормально и относительно стабильно. феерических глюков в PSoC билдере не обнаружил. пишу на С, но прийдется переходить на АСМ, ибо программа намечается большая, а С дает небольшой оверхед, но его много и рискую не влезть во флэшку.
вчера видел как 6-ти канальный оранж принимает 14 каналов. забавно. сателлиты вроде тоже умеют 14 каналов отдавать. после переключения модели прием пропал, как и ожидалось. при возврате нужной модели приема уже не было. что не ожидалось. странно все это. в ветке про ДХ7S обнаружили, что можно привязать одновременно два приемника =) странно =) как-же раньше-то кроме приемника привязывались еще и сателлиты, которые по сути тот-же приемник =) вот, привяжу одновременно два приемника и посмотрю. перехват SPI от проца в трансивер работает нормально и показывает мне какие два канала используются, и какие SOP/DATA пары используются. пока не понял как зависят номера SOP от номера канала.
у буржуев попадалась тема по добавлению пары-тройки каналов в ДХ8. там от центрального проца идет поток УАРТ на ВЧ модуль. так вот если в конце посылки из 8-ми пакетов добавить еще пару байтиков, то в приемнике будет щасте. но есть нюанс. надо ставить свой проц с коммутацией УАРТ потока и отслеживанием выключателей. надо подумать надо ли, и придумать какие выключатели отслеживать. свою прошивку для ДХ8 писать как-то не хочется =) если только купить за бесценок паленую/сдохшую на прошивке DX7S/DX8…
есть еще одна мысль. посканировать каналы, пары SOP/DATA привязанные к этим каналам мы знаем. в принимаемом пакете есть GUID (адрес передатчика). можно посмотреть, кто сейчас работает в эфире. а можно ведь еще и передачу включать в нужные моменты на нужном канале =) усилителей на 2,4 ГГц щас навалом =)
DSMX пока не ковырял. а было бы круто перешить оранжи в ДСМХ…

запчасти в наличии

новье:
подкосы - 2 комплекта
комплект тяг с линками - 1 шт
передний привод ремня - 1 шт
хвостовые лопасти - 1 комплект
башка в сборе с лидерсов золотистая - 1 шт
хвостовой кейс с ремнем (без цапф и прочего) - 1 шт
основные валы - 4 шт
вал хвостового ротора - 4 шт
межлопастной вал - 8 шт.
держатель хвостового оперения, металл - 1 шт
хвостовой слайдер с поводком - 1 шт
хвостовые балки - 4 шт
лопасти стекло с ХК - 3 комплекта
лопасти тяжеленный черный пластик - 1 комплект
250-й гироскоп - 1шт

Tags:
поножовщина оранжа

P0[0] - MISO CYRF6936
P0[1] - вход UART сателлита
P0[3] - SCK CYRF6936
P0[5] - MOSI CYRF6936
P0[6] - IRQ CYRF6936
P0[7] - SS CYRF6936

P1[0] - RUDD - DATA
P1[1] - AILE - SCLK
P1[4] - GEAR
P1[5] - ELEV
P1[6] - AUX1
P1[7] - THRO

P3[0] - LED
P3[2] - BIND

XRES - рядом площадка

программатор живет совсем

приделал к программатору загрузку бинарника по Хмодему. прошивка всех 8-ми килобайт занимает около минуты.
стирает, пишет, верифицирует. секурность не добавлял, забью на нее.
теперь надо собирать хелловорлд и заливать в таржет PSoC систему =) с дизайнером и юзер модулями более-менее разобрался, собирается и компилится без ошибок и варнингов. повыводил на ноги разную отладочную информацию, типа внутренних частот ШИМа и баудрэйт генератора. можно завтра залить, убедиться, что нифига не работает и успокоиться на этом.

Tags:
tm1000 inside

внутри телеметрийного модуля стоит ВЧ блок аналогичный ВЧ блоку передатчика. мощность 20,40 dBm или 110 мВт. печалько, что на нем экран, пока не отпаивал. о съеме протокола между процом ВЧ блока и трансивером пока речь не идет.
на второй плате стоит CY8C27443-24PVXI и 5209 в качестве питальника. PSoC принимает данные о битых пакетах с приемника по УАРТу, цифрует показания датчиков и в инверсном УАРТе гонит данные на ВЧ модуль. попутно на ВЧ блок идут еще какие-то странные импульсы. включение передачи что ли.
шина X-BUS похоже представляет из себя I2C. контакты идут на ноги 10 и 11 и подперты резисторами. к тому же в даташите на эти ноги повешен I2C.
ноги программирования PSoC выведены:
13 SCLK - разъем RPM
15 SDATA - разъем DATA
один светодиод на плате тупо подключен к УАРТУ и показывает поток данных от приемника.
ВЧ блок:
1 - масса
2
3 - питание
4
5
6
7
8 - масса
9 - от PSoC, -----U-------
10 - reset процессора ВЧ блока
11 - от PSoC, поток данных, ISSP-data
12 - ISSP-clock

программатор живет

запустил программатор. мега8 дрыгает ногами, использую ногу ресет кипреса, надо делать через управление питанием. ИД чипа читает, стирает все целиком, пишет страницу рандомным мусором, затем верифицирует страничку. все 128 страниц по 64 байта тест прошли примерно секунд за 20 =) надо прикручивать Хмодем для заливки бинарника через терминал - и алга!
жду оранжевый приемник для опытов.

Tags:
приехала DX8

тискаю. руки-крюки. все непривычно.
приемник и телеметрию пока не разобрал. там шестигранник 1 мм или даже 0,8 мм. зараза, у меня такого нету. сквозь полупрозрачный корпус видно, что ВЧ часть в блоке ТМ1000 накрыта экраном. ну и ладно, мне с него только УАРТ надо, а он на разъеме =)
в общем я рад =)

Tags:
приехали процы

приехали процики CY8C21334 в корпусе 20-ти лапом. развел монтажку по быстрому, завтра доделаю до ЛУТ и постараюсь вытравить. и буду играться с программатором самодельным. посмотрим как оно будет.

начал ковырять софт и документацию на cy8c21434

есть пара мыслей соорудить пару вещей из “оранжевых” приемников для спектрума. стоят они около 6-ти долларов, имеют на борту проц cy8c21434 и трансивер CYWUSB6934 либо cyrf. почитал документацию, поискал софт. все есть, все понятно. камни в продаже в принципе есть и кое-где даже в наличии. ядро и потроха одинаковые у семейства cy8c21х34 и отличаются только корпусами. cy8c21234 в корпусе SOIC-20 стоит 90р, cy8c21434 в QFP стоит 200 рублей. примерно.
покупать оригинальный программатор за 30$ который у нас барыжат за почти 100 некомильфо. курил доку на протокол программирования, начал писать программу для мега8. не буду использовать аппаратный SPI меги, решил подрыгать ногами. прошивку для кипреса буду заливать Z или Х модемом в бинарном виде из терминала.
в планах:

Tags:
This site will not work without javascript!
This site will not work if cookies are completely disabled.
Site is offline