Перейти к содержанию
    

Si4463 (Si446x): реверс, недокументированные фичи и прочее

Кто-нибудь занимался реверсом RFIC Si4463 или аналогичного из серии Si446x ?

Что можно сделать полезного?

 

Нашёл интересный проектик: https://github.com/astuder/Inside-EZRadioPRO

Чувак пишет как можно сдампить прошивку с Si446x ,  а также как вытащить описание регистров + недокументированные команды из EXE-шника WDS.

А также - как раздуплить прошивку в Гидре и получить более-менее читабельный сорец на асме...

 

Мне удалось считать дамп со своего чипа Si4463, rev. 2A.  Плюс запустил все скрипты и плагины для облагораживания дизассемблированного кода в Гидре.

А также сделал другой адрес для FIFO TX/RX.   Хотел ещё увеличить размер FIFO - удалось увеличить с 129 до 193 (x1.5). Но при команде активации передачи(TX) всё виснет.   Очевидно, пакетный хэндлер там тоже хозяйничает, и есть условия, ограничивающие размер FIFO в коде...

 

И всё-же...  Может возможно мягкие решения вытащить?  Или увеличить чутьё?   Или ещё что-нить полезное?

 

P.S. Я понимаю, что немного отстал с этим реверсом, но чипы  появились недавно (год назад).

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте исходники WDS и смотрите, что он генерирует из параметров. Может что то полезное найдёте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, x893 said:

Сделайте исходники WDS и смотрите, что он генерирует из параметров. Может что то полезное найдёте

1. Есть декомпилированная прошивка от Si4463 - в ассемблере ядра i8051 и в Сишном псевдо-коде. Которая пропарсена скриптами: для получения нормальных названий регистров и регионов памяти.

2. С WDS уже выпарсена вся документация: SPI-команды/свойства(Commands/Properties), включая недокументированные.  А также - описания регистров и их разбитовка.

3. Скачан новый архив с Силабса - с обновлёнными описаниями команд/свойств.  Прибавка ощутима.

 

В ходе 3-суточных копаний пока выводы такие:

1. Сконфигурить чип лучше, чем WDS, уже не  получится.

2. Команды/свойства - это тупо чтение-запись в регистры Si4463 и  обработка прерываний.

3. Из недокументиованного - ничего полeзного для моих целей.

4. По ходу с получением I- и Q- облом.  Есть только сырой выход с демодулятора (лично сам слушал сигнал с GPIO0 - функции 20,21 и 31,  использовал ПК и Audacity для зааписи), причём не ясно - прослайсированный он или нет.  Сомневаюсь, что там доступны мягкие решения....

 

А так хотелось I/Q- и мягких решений ...  Именно с Si4463...

Вот в Si4432 получить I/Q- можно - в дифференциальной форме (только по отдельности: I или Q).

 

Кстати, подскажите, I и Q со смесителя (низкая ПЧ - 900 кГц)  можно ли на слух её услышать?   Понимаю, что 900 кГц, но так как сигнал сложный - значит часть  спектра должна быть в звуковых частотах....   С видео-сигналом CVBS  такое прокатывает -  он на слух очень специфичен. Чисто, чтобы сдетектить его наличие с GPIO...  осциллографа нету.

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

низкая ПЧ - 900 кГц

1. У меня осталось впечатление, что там ПЧ в районе 270 кГц. Но могу ошибаться.

2. Если это действительно ПЧ, НЧ составляющих там быть не должно. Если только половинная полоса сигнала не сравнима с ПЧ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 minutes ago, V_G said:

1. У меня осталось впечатление, что там ПЧ в районе 270 кГц. Но могу ошибаться.

Значение, установленное WDS для 1 МБит/c:

Quote

RX IF frequency is  -468750 Hz

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, ну я на таких скоростях не работаю.

И по поводу I Q и прочих сырых сигналов: там аналоговый смеситель и его выходы - аналоговые. GPIO - цифровые ноги, там должны быть прямоугольные импульсы. Или все-таки кто-то умудрился вывести аналоговый сигнал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, V_G said:

И по поводу I Q и прочих сырых сигналов: там аналоговый смеситель и его выходы - аналоговые. GPIO - цифровые ноги, там должны быть прямоугольные импульсы.

Ну не факт...  Дока с регистрами Si4463,  вытащенная из WDS недвусмысленно намекает, что GPIO могут конфигурироваться как:

- Digital Input

- Digital Output

-Analog Input

-Analog Output

Там полноценное ядро 8051 со своей памятью, регистрами и периферией.

Там ещё  дополнительный АЦП есть (AUXADC).

И пара регистров PGA с битами IN/OUT  I- Q-  :  один регистр - обычный выход, второй - дифференциальный выход.

Только вот вопрос, на какую ногу это выводится? Поле GPIO config содержит 6 бит :  это до 64 разных значений может быть (в WDS описано только около 40 вариантов).

 

Что касается Si4432,  I и Q там доступны через тестовый режим:

image.png.4488e7942281cb286032c4833f443199.png

Это только в старом даташите есть.  В новом даташите эту инфу силабсы попрятали как последние трусы...

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/5/2024 at 10:32 AM, repstosw said:

Это только в старом даташите есть.

Бесплатный сыр только в мышеловке. Во многих "сложных" м/с с большим числом программируемых регистров есть т.н. служебные регистры, которые можно юзать не по дш.

Также есть дефолтные регистры, которые также можно использовать с другими значениями, а не по умолчанию.

 

p.s. Условно синтезатор от AD можно юзать с временем установки под 100 мкс вместо 2 мс, но со своими особенностями. А производитель это предлагает купить, как дополнительная или расширенная функция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, alex-sss said:

Бесплатный сыр только в мышеловке. Во многих "сложных" м/с с большим числом программируемых регистров есть т.н. служебные регистры, которые можно юзать не по дш.

Также есть дефолтные регистры, которые также можно использовать с другими значениями, а не по умолчанию.

Сколько не пытался понять ваше заявление с мышеловкой, так и ничего не понял.

Есть недокументированные регистры, и есть недокументированные биты в регистрах.

Это также одинаково,  как и утверждать, что  "в небе светит Солнце,  а дождь капает водой.  Вода кипит при 100 градусах Цельсия при нормальном давлении"...  И тому подобное.

 

14 hours ago, alex-sss said:

А производитель это предлагает купить, как дополнительная или расширенная функция.

Я не видел официальзых заявлений от Силабс, купить у них софт-конфигуратор, позволяющий получить I/Q с пинов или заставить модем выдавать оцифрованные мягкие решения с демодулятора в FIFO.

Вижу масонскую политику зачем-то скрывать регистры, которых масса.   Тем более Si4463 - уже относительно старый...  Могли бы и открыть доки на регистры.

А так получается - "ни себе, ни людям".

 

P.S. Регистры с разбитовкой есть.  Но отстутствует их внятное описание.   Но те, кто писал WDS и фирмварь для Si4463 под ядро 8051, этой документацией обладают.

 

Хочется отказаться от их пакетного хэндлера и попробовать получить  мягкие решения с демодулятора(в оцифрованном виде).  Такой регистр найден.  Но непонятно, как его тактировать (с каким интервалом забирать с него данные).

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, repstosw сказал:

Я не видел официальзых заявлений от Силабс, купить у них софт-конфигуратор, позволяющий получить I/Q с пинов или заставить модем выдавать оцифрованные мягкие решения с демодулятора в FIFO.

Вижу масонскую политику зачем-то скрывать регистры, которых масса.   Тем более Si4463 - уже относительно старый...  Могли бы и открыть доки на регистры.

В форуме техподдержки они объясняли причины сокрытия тайных регистров и пр. Вкратце, всё для того, чтобы пользователь не "выстрелил себе в ногу" некорректной конфигурацией, с последующими претензиями к качеству. По крайней мере касательно EFR32 некоторые резоны есть - например, в 1-й серии можно программно вывести из строя усилитель мощности, отключив обработку одного флажка прерывания. М.б. и в Si44xx есть подобные грабли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Harbinger said:

По крайней мере касательно EFR32 некоторые резоны есть - например, в 1-й серии можно программно вывести из строя усилитель мощности, отключив обработку одного флажка прерывания. М.б. и в Si44xx есть подобные грабли.

Подразумевается, что регистры интересны хардварщикам, которых не запугаешь порчей оборудования.

С таким же успехом можно подпалить GPIO, настроенный на выход, если его соединить с GND, в момент когда на него придёт логическая "1" 🤣

1 hour ago, Harbinger said:

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

Я не из тех, кто предъявляет претензии к работе чипа, если было принято решение лезть в дебри.

Ясно дело, что любая эволюция подразумевает прогресс работы с чипом:  от пакетного хэндлера - до мягких решений с ЦОС  и СДР 😅

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получил сырые данные с демодулятора Si4463.  Пока есть проблемы с интерпретацией и визуализацией данных: демодулятор даёт отсчёты в формате 7 бит со знаком. Тоесть -64...+63.

Как оно выглядит, если файл отсчётов открыть в Audacity - как 8 бит со знаком (сделал перед этим конверсию 7-bit signed в 8-bit signed):

 

Также остаётся открытым вопрос, как синхронизировать забор данных с регистра.  Пока делаю чтения регистра ASAP.

Если забирать как можно скорее, на ассемблере 8051, то это будет так:

mov R0,REG
mov R1,REG
mov R2,REG
mov R3,REG
mov R4,REG
mov R5,REG
mov R6,REG
mov R7,REG

mov A,R0
movx @DPTR,A
inc DPTR

mov A,R1
movx @DPTR,A
inc DPTR

...

mov A,R7
movx @DPTR,A

ret

 

Получается до 4-х чтений  регистра REG дают одинаковое значение. Значит, можно читать в 4 раза медленее.

Если же читать 1 раз, затем раскидывать в память, то олучается уже долго - уже неодинаковые значения. Прерывания 8051 на момент чтения запрещаются.

 

С конверсией данных выход с демодулятора такой:

image.thumb.png.dc5013fb1f5b7e7d29c76ec4d91a34c5.png

image.thumb.png.9916a07b49b29e9b935a1bb0c832b0e8.png

 

Знающие, подскажите - как выглядит сигнал с фазового/частотного демодулятора в цифровых трансиверах?

 

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На верхней картинке предыдущего поста - шум из эфира.

 

Вот так выглядит выход с демодулятора во время приёма пакета:

image.thumb.png.997a972724d6131df444dd13e9e8c9b0.png

 

Что с этим делать дальше, чтобы получить биты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...