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

repstosw

Участник
  • Постов

    2 582
  • Зарегистрирован

  • Победитель дней

    2

Сообщения, опубликованные repstosw


  1. 1 hour ago, sasamy said:

    Неплохо. :sun_bespectacled:

    3 minutes ago, sasamy said:

    а потом поллингом мониторить буфер ? фигня какая-то, зачем тогда нужен этот периферийный DSP сопроцессор, с msgbox ядра друг друга аппаратно могут прерывать

    1.  ядро-1 делает рендеринг

    2. далее ядро-1 проверяет свободно ли ядро-2 и передаёт указатель на результат рендеринга

    3. ядро-2 начинает работать с результатом и делает над ним второе преобразование

    4. в это время ядро-1 делает новый фрейм рендеринга

    Опрос готовности ядра-2 делается ядром-1 по завершению рендеринга ядром-1.  Обычно ядро-2 к тому моменту уже свободно.  Ожидание сведено к минимуму, никто циклически не опрашивает.

    Время рендеринга ядром-1  20 мс,  время второго преобразования ядром-2  15 мс.

     

    PS. Но то что есть прерывания это хорошо. Возьму на заметку.

  2. 43 minutes ago, sasamy said:

    с внешними прерываниями от периферии нет планов разобраться?

    Внешние прерывания - это когда сигнал на ножку извне  приходит с внешнего модуля? Или под внешними понимаются любые прерывания от периферии T113-s3 ?

    У меня нет мануала на периферию этого DSP. В сорцах линукса например есть такое: настроить прерывание по уровню/фронту с какого-нибудь GPIO?

    Что касается периферии - так этот DSP видит всю периферию от T113-s3.  Тоесть ему особо и не нужна своя периферия.

    И я думаю что у него её нет.  Всё что есть - это числомолотилка с VLIW архитектурой + SIMD + быстрая выделенная память кода/данных.

    45 minutes ago, sasamy said:

    В freertos есть пример для msgbox но этого мало - непонятно по какому принципу мапятся прерывания от периферии, есть инит контроллера (предположил по названию - прерываний периферии)

    А что такое этот msgbox?  Буфер памяти куда флудит этот DSP для обмена сообщениями между A7 и DSP? Не совсем понятно, зачем это нужно. Всю жизнь контекст общения между двумя ядрами делал самостоятельно в удобном месте.

    33 minutes ago, GenaSPB said:

    Насчёт прерываний от периферии. Самое интересное прерывание,  которое может быть прицеплено к dsp ядру это прерывание по обмену с кодеками. DMAC. В данном микропроцессоре этот единственное прерывание на все 16 каналов. А с учётом того что dsp ядро единственное а cortex a7 пара, острой необходимости как-то не наблюдается. Ну интересно, но прикрутить в проект иначе как возложив на hifi4 (и только на него) всю dsp обработку не получится. Usb dma я например поднял - но это то же единственное прерывание. распределять крайне неудобно. 

    Так а где смотреть как коммутировать источник прерывания на линию DSP?  Допустим у аудиокодек работает по прерываниям с ядром A7.   Как это прерывание загнать на DSP?  Ну не софтовый же поллинг делать ? 🙂 

     

    Собственно я начал ковырять этот DSP, чтобы на него повешать кодер Рида-Соломона.  А декодер повешаю на второе A7 ядро.  А первое A7 ядро - главное: управление и остальное.

    Кодер Рида-Соломона на A7 работает на 30 FPS.   Декодер - на 15 FPS.   Учитывая целевой FPS системы - 12..15 : нужна параллельность вычислений.

    Моя тема про кодек RS здесь:

    Интересно, протащит ли DSP кодирование хотя бы на уровне 15 FPS?   Мне главное чтобы параллельно шло кодирование-декодирование-главная программа.  Самое слабое звено должно давать не меньше 12-15 FPS.

  3. 29 minutes ago, mantech said:

    Это справедливо практически для любых таймеров и архитектур)))

    Это понятно. И ожидаемо.  А вот на счёт "как это сделать" - это и нужно было понять.

    31 minutes ago, mantech said:

    А смысл?

    Удовлетворение собственного любопытства )) Ну или может как отдельную функцию использовать для запуска эмулятора чего-либо.

  4. On 9/11/2023 at 9:23 PM, repstosw said:

    Осталось доделать эксепшн при alloca/setjmp  и оформить это в SDK HiFi4 DSP :sun_bespectacled:

    Доделал обработку прерываний/исключений. Итого вышло 10 исключений:

    1. Прерывание таймера (1)

    2. Исключения Overflow регистрового окна (3)

    3. Исключения Underflow регистрового окна (3)

    4. Исключение Alloca (инструкция MOVESP)  (1)

    5. Исключение SetJmp (инструкция SYSCALL) (1)

    6. Исключение User - просто корректный выход из исключения (1)

    4,5,6 - сидят на IntLevel1. необходимо было сделать селектор (сепаратор), чтобы определять причину исключения и отдельно её обработать.

    Стресс-тест на всех уровнях оптимизации не завалил программу.

     

    Пришлось много возиться и курить. Считаю, что обработка исключений - самая трудная часть этого DSP. Без написания корректного кода исключений программа будет падать.

    Все исключения (за исключением SetJmp) необходимы!  Самое сложное исключение - SetJmp: нужно было сделать некоторые манипуляции со стеком, регистровыми окнами, и ручками корректировать адрес возврата.

    Контекст для сохранения регистров в прерываниях(там где он нужен - Timer и SetJmp) сделал в отдельной секции памяти.  Пробовал использовать стек - программа падает, если используется одновременно много прерываний (как минимум два:  Таймер + оконный Overflow/Underflow).

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

    В прерывании таймера важно было правильно подтвердить его. Иначе прерывание начнёт снова выполняться сразу же после выхода - много раз.

     

    В исходниках FreeRTOS обработчики написаны с учётом много-задачности.  Анализ кода может привести к взрыву мозга.

    https://github.com/YuzukiHD/FreeRTOS-HIFI4-DSP/blob/master/kernel/portable/xtensa_vectors.S

     

    Приходится смотреть в дургих местах как сделаны некоторые вещи:

    https://chromium.googlesource.com/chromiumos/third_party/sound-open-firmware/+/5b43730e8620c60b4170231f7e9d91d2d2d89652/src/arch/xtensa/up/xtos/exc-syscall-handler.S

     

    Реализовал псевдо-функцию макрос для printf, с помощью sprintf  по всем канонам стандарта (c возвращаемым значением):

    #define printf(format,...)                                      \
    ({                                                              \
     char printf_buffer[128];                                       \
     int printf_return=sprintf(printf_buffer,format,##__VA_ARGS__); \
     UART_puts(printf_buffer);                                      \
     printf_return;                                                 \
    })                                                              \

     

    Этот DSP также может исполнять код из DDR T113-s3.

    Тестировал на адресах: 0x41800000  , 0xC1800000 (кешируемый),  и   0x31800000 (не работает.  Возвращает Fault = 0x2).

    Здесь к адресам добавлены +24 МБ (0x1800000), потому что в начале DDR программа для T113-s3.

    Последний адрес скорее всего не работает из-за того что нужны кое-какие манипуляции с AHB, о чем говорит даташит:

    image.thumb.png.4e6489925cde17dbec5fa8cdf1bfb874.png

    Но он особо не интересен, так как первые два работают.

     

    Лог запуска в UART (на ПК):

    Spoiler
    HiFi4 DSP...
    RO Data: 0x41803073, Data Start: 0x41810080, Data End: 0x418108AC
    BSS Start: 0x418108AC, BSS End: 0x41810A1C
    Stack: 0x41820000, Heap Start: 0x41818000, Heap End: 0x4181C000
    malloc() Test
    malloc OK!
    malloc String
    foo 0
    srand() & rand() Test:
    2132416883854391803722155897918388512453687072798722520304017882391507922335899285399047465674001819
    Timer Test:
    ccount: 804
    ccount: 747999
    ccount: 1669194
    ccount: 2647569
    ccount: 3626769
    foo 1
    setjmp() & longjmp() Test:
    setjmp
    longjmp
    setjmp
    123
    Loop...
    !!!!!!!!!!Timer Interrupt /
    !!!!!!!!!!Timer Interrupt ±
    !!!!!!!!!!Timer Interrupt ­
    !!!!!!!!!!Timer Interrupt ó
    !!!!!!!!!!Timer Interrupt 
    !!!!!!!!!!Timer Interrupt 
    !!!!!!!!!!Timer Interrupt H
    !!!!!!!!!!Timer Interrupt Ž
    !!!!!!!!!!Timer Interrupt ¤
    !!!!!!!!!!Timer Interrupt ì
    !!!!!!!!!!Timer Interrupt Š
    !!!!!!!!!!Timer Interrupt 
    !!!!!!!!!!Timer Interrupt Ó
    !!!!!!!!!!Timer Interrupt ¼
    !!!!!!!!!!Timer Interrupt ò
    !!!!!

     

     

    Ещё мысли по поводу стандартных сишных библиотек, входящих в hifi4-dsp компилятор от FreeRTOS.  По-хорошему их надо пересобирать для BareMetal.  Потому что они ориентированы на повторную входимость и многозадачность, и содержат кучу лишних действий и доставляют проблемы с корректным запуском штатных функций.

    Но исходников libc.alibm.a  я не увидел : https://github.com/YuzukiHD/FreeRTOS-HIFI4-DSP/tree/master/lib

  5. 2 hours ago, sasamy said:

    Указанные здесь оффсеты векторов совпали с моими расчётами из скрипта линкера :yes:

     

    3 hours ago, repstosw said:

    Пока вызов пользовательской функции через call0 - в ассемблерном сорце.  Не получается задействовать сишный call8 - зависает.

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

    Как здесь: https://github.com/YuzukiHD/FreeRTOS-HIFI4-DSP/blob/Toolchains/kernel/portable/xtensa_vectors.S#L1451

    Для таймера приоритет 3:

     

    	movi		a3,PS_UM|PS_WOE_ABI|PS_INTLEVEL(3)
    	wsr.ps		a3
    	rsync

     

    3 hours ago, repstosw said:

    далось из стартапа вызвать сишные функции libc_init() и cледом за ней main() с помощью call8.  Раньше был просто переход на libc_init.

    Чтобы вызов второй функции main() не вешал программу  - нужно  добавить entry:

     

    Теперь никакой entry не нужен.   Нужно  старт окна сделать в 1. Тогда можно будет использовать windowed-вызовы из ассемблерного сорца.

     

    	movi		a3,1			//=1 - allow windowed call from assembly startup
    	wsr.WINDOWSTART	a3			//Call-window start bits
          
          //...
          
       	call8		libc_init
    	call8		main

     

    Осталось доделать эксепшн при alloca/setjmp  и оформить это в SDK HiFi4 DSP :sun_bespectacled:

  6. 44 minutes ago, GenaSPB said:

    Прерывание произошло но обработчик обсыпался...
    Сделай первой командой обработчика переход сам на себя. Если перестанет сообщать что fault - доходит. Если не перестанет - ошибка раньше

    Это не помогло 🙂  Проблема оказалась в том, что вектора прерываний были не в том месте. 

    Вот этот товарисЧ ввёл меня в заблуждение:  https://github.com/esp-rs/xtensa-lx-rt/issues/5#issuecomment-578954586

    Всё, что дальше оконных исключений - всё не то 🙂

     

    Правильные смещения в таблице векторов - они идут уже не с шагом +64 :

        .org    0x17C //IntLevel2
        .org    0x19C //IntLevel3 : Timer0, Timer1
        .org    0x1BC //IntLevel4
        .org    0x1DC //IntLevel5, NMI
        .org    0x1FC //Kernel
        .org    0x21C //User
        .org    0x23C //Double

    Я ещё по началу в скрипте линкера от FreeRTOS увидел  эту "кривизну" смещений.

    Поймал прерывания таймеров и исключение UserException при использовании alloca( ).

    Написал обработчик прерывания таймера.  Пока вызов пользовательской функции через call0 - в ассемблерном сорце.  Не получается задействовать сишный call8 - зависает.

     

    Удалось из стартапа вызвать сишные функции libc_init() и cледом за ней main() с помощью call8.  Раньше был просто переход на libc_init.

    Чтобы вызов второй функции main() не вешал программу  - нужно  добавить entry:

    	j		XXX //обход для выравнивания
    
    	.align 4
    
    XXX:
    
    	entry		a1,32
    
    	call8		libc_init
    	call8		main
    
    //...

     

  7. 15 hours ago, GenaSPB said:

    volatile?

    Нет.  Цикл копирования из LMA в VMA. Вот так будет работать на любой оптимизации:

    extern char _sidata,_sdata,_edata; //set by linker
    extern char _sbss,_ebss;           //set by linker
    
    void libc_init(void)
    {
     memcpy(&_sdata,&_sidata,&_edata-&_sdata); //copy LMA to VMA
     memset(&_sbss,0,&_ebss-&_sbss);           //clear BSS
     main();
    }

    Заставил работать функции rand(), srand().  Для этого подправил ещё одну функцию:

    struct _reent *_EXFUN(__getreent,(void))
    {
     static struct _reent REENT; //memory space for srand() & rand()
     return &REENT;
    }

     

    15 hours ago, mantech said:

    Там еще есть много асмового кода, в частности по прерываниям, но чет уж много очень, что там за контроллер прерываний такой, походу сложный((

    Второй день бьюсь над тем, чтобы заставить DSP нормально выдавать прерывание.  Вначале пытался сделать UserException, затем пока временно оставил его и начал возиться с таймерами DSP.

    Таймеры работают. Пара функций:

    void Timer_Init(void)
    {
     u32 ccount=0;
    
     __asm__ __volatile__ ("rsr.ccount %0" : "=r"(ccount));
    
     ccount+=7506204;
     __asm__ __volatile__ ("wsr.ccompare0 %0" :: "r"(ccount));
    
     ccount+=7506204;
     __asm__ __volatile__ ("wsr.ccompare1 %0" :: "r"(ccount));
    
     u32 intenable;
     __asm__ __volatile__ ("rsr.intenable %0" : "=r"(intenable));
    
     intenable|=(1<<2); //бит 1 - timer1, бит 2 - timer 0
     __asm__ __volatile__ ("wsr.intenable %0" :: "r"(intenable));
    }
    
    u32 Timer_Get(void)
    {
     u32 ccount;
     __asm__ __volatile__ ("rsr.ccount %0" : "=r"(ccount));
     return ccount;
    }

    При разрешении прерывания от таймера (биты 1,2 в регистре intenable) при достижении таймера до значения ccompare0,1  должно происходить прерывание. Но программа зависает. Причем время до зависания зависит от - ccompare0,1 : тоесть я делаю вывод, что прерывание именно от таймера по достижении значения.  Но почему оно не работает?

    Причём, я определил все вектора прерываний с адресов 0x180 до 0x3C0 (шаг +64):  просто поставил команду перехода в код выдачи байта по UART:

     .org    0x180
          j OutChar
    
     .org    0x1C0
          j OutChar
    
       //...
    
           .org 0x340 		//UserException
    	j OutChar
    
        .org    0x380
          j OutChar
    
        .org    0x3C0
          j OutChar
    
       
     //...
       
    #define UART_NUMBER 3                               /* UART Number: 0..5 */
    #define UART_BASE (0x02500000+(0x400*UART_NUMBER))
    #define UART_THR  (UART_BASE+0x00) /* transmit holding register   */
    
       
    OutChar:
    
    	movi		a8,UART_THR
    	movi		a9,101
    	memw
    	s32i.n		a9,a8,0
          
    Loop:
    	j		Loop

     

    Но символ не печатается из прерывания. Отдельно проверял код с метки OutChar - он работает.

    Со стороны T113-s3 проверил статус из регистра - DSP_STAT_REG : значение 2 - BIT_PFAULT_ERROR.   В нормальном состоянии должно быть =0 .

    Всё сложно.

    При этом обработчики исключений переключения окна (смещения 0 ... 0x140 от базы вектров прерываний - задан в регистре vecbase) работают нормально.

    Что я делаю не так? Чего не хватает, чтобы заработало прерывание таймера?

  8. 1 hour ago, mantech said:

    А здесь не надо двойку добавлять?

    #define DSP0_IRAM /*0x00400000*/ 0x00028000 

    Не нужно тут добавлять.  Это адрес со стороны T113-s3. Указание кешированных адресов важно только с точки зрения DSP - как он их видит.

     

    16 hours ago, repstosw said:

    Работает на оптимизациях: -Ofast, -O3, -O2.  На остальных не работает.

    Проблема была  в libc_init, подправил.  Теперь работает на всех оптимизациях, в том числе и на : -Os, -O0, -O1.

    Вылезла новая проблема:  alloca() на нулевом уровне оптимизации завершается аварийно.  Покурил, нужно в исключении пользователя UserException (IntLevel1) отлавливать обращение к инструкции movsp  и городить сложный обработчик - тоже щёлкать стеком.   В моём стартапе код  для alloca() есть, но он не заведен в UserException.

    И там не только alloca, но ещё и другие способы обширных  аллокаций из стека:

    https://chromium.googlesource.com/chromiumos/third_party/sound-open-firmware/+/5b43730e8620c60b4170231f7e9d91d2d2d89652/src/arch/xtensa/up/xtos/exc-alloca-handler.S

  9. 9 hours ago, GenaSPB said:

    С какого адреса запускать? Что пишется в DSP0_CFG->DSP_ALT_RESET_VEC_REG

     

    Ответ 0x00028800

    Я запускаю с адреса 0x28000:

    image.png.4687cdbeea389fa1e4d728b91c67fc7b.png

    Там стоит прыжок на 0x28800.  Ниже инструкции прыжка - таблица литералов. Она должна быть в самом начале, перед использованием имён переменных.

    Сдвинуть её не получается - линковщик сыпет dangerous rellocations of literals L32R.

    С адреса 0x28800 - стартап:

    image.png.5ed796becd0f127e41924597be16cf2c.png

    В стартапе - минимальный инит и прыжок на сишную функцию libc_init.  А из неё - вызов в main.

     

    Обратите внимание - этот DSP не загружает адреса в прямом виде - он их берёт из таблицы литералов:

    l32r	a2, 0x20028004 //литерал
    wsr.vecbase	a2
    
    Содержимое памяти по адресу 20028004 : 20028400
    
    20028400 - стартовый адрес векторов исключений (определён hifi4.ld)

     

    Карта памяти:
    
    1) 0x28000 : прыжок на код на 0x28800
    2) Таблица литералов
    3) Таблица векторов исключений (не все!)
    4) 0x28800: стартап: инит, libc_init, main,...

     

    9 hours ago, GenaSPB said:

    upd: но с кешированной памятью перестало работать

    Это который 0x20028000  ?   Проверил - работает.

    В скрипте линкера переправил адреса:

    image.png.22225c9b8dd5171eeed92c078d7e1b95.png

     

    И задал загрузку/старт  со стороны T113-s3: 0x20028000

     sunxi_dsp_init(main_bin /*адрес бинарника*/ ,0x20028000 /*куда грузить*/ ,0 /*номер DSP*/ ,sizeof(main_bin) /*размер бинарника*/);

    Результат:

    image.thumb.png.fc6bd1f8dbce085173b40818f1c33a89.png

    9 hours ago, GenaSPB said:

    upd: но с кешированной памятью перестало работать

    Проверил с вашим вариантом - да,  НЕ работает!

     

    С вариантом загрузчика  из uboot-driver - работает.

    sunxi_dsp_init(main_bin /*адрес бинарника*/ ,0x20028000 /*куда грузить*/ ,0 /*номер DSP*/ ,sizeof(main_bin) /*размер бинарника*/);

     

    Мой вариант загрузки:   dsp.c

    sunxi_dsp_init( ) - переделанный вариант от uboot-driver
    
    tututu( ) - вариант от GenaSPB

     

     

  10. 17 hours ago, GenaSPB said:

    Из стартапа call0 работает?

    Работает. Но на возврат обратно в стартап не проверял, так как мне это не нужно.

    18 hours ago, repstosw said:

    Сейчас тестирую.

    Оттестировал.  Работает на оптимизациях: -Ofast, -O3, -O2.  На остальных не работает.  Пришлось 6 обработчиков исключений использовать. Подробности в комментариях в коде.

    HiFi4_app.zip

     

    Смещения обработчиков исключений:

    Window exception handlers
    
    Exception         Offset
    WindowOverflow4     0x000
    WindowUnderflow4     0x040
    WindowOverflow8     0x080
    WindowUnderflow8     0x0C0
    WindowOverflow12     0x100
    WindowUnderflow12     0x140
    
    Actually useful exception handlers
    
    Exception         Offset
    UserException         0x340
    Level2Interrupt     0x180
    Level3Interrupt     0x1c0
    
    Less useful exception handlers
    
    Exception         Offset
    Level4Interrupt     0x200
    Level5Interrupt     0x240
    DebugException         0x2c0
    NMIException         0x300
    KernelException     0x340
    DoubleException     0x3c0
    Reset             0x400

     

    Должно работать вот так:

    image.png.496e7231a50582d670811e5fd9348c40.png

    UART и AVS_TIMER должны быть проинициализированы T113-s3!

    • Like 1
  11. 27 minutes ago, GenaSPB said:

    Прояснилось теперь. Хотя референс мануал по архитектуре зачитал до дыр.

    Сделал обработку исключений переполнения регистрового окна.   Вложенные вызовы заработали.  Сейчас тестирую.

    Попутно заставил работать штатные malloc/free, strcpy/sprintf.   Пришлось дописать некоторые вещи (__getreent, _sbrk, _sbrk_r), потому что часть стандартных библиотек этого компилятора ориентированы на RTOS (многозадачность) и для BareMetal не годятся.

    • Thanks 1
  12. 19 hours ago, GenaSPB said:

    Возможно что-то про register window, но я вроде все для этого сделал. Ну и не вполне вкурил архитектуру в части автосохранения регистров при вызовах.

    Ваш пример из ветки develop заработал. Но всё также - при большой вложенности функций и обилия переменных работа обрывается.

    Из того, что удалось сделать: переписал скрипт линкера, теперь переменные-константы (.data, .rodata) хранятся в IRAM и при запуске программы константы копируются в DRAM0/1. Неинициализированные переменные (.bss) обнуляются перед их использованием.   Это всё до входа в main().  В итоге,  получившийся бинарник вместо over 64K стал весить несколько байт.

    Также настроил стек (.stack) и кучу (.heap).

    На счёт повисания во вложенных функциях - нужно писать обработчик исключения переполнения регистрового окна (запись-чтение в стек, прокрутка окна). Иначе, число вложенных вызовов  ограничивается.

    Вполне исчерпывающе объясняется здесь:  https://sachin0x18.github.io/posts/demystifying-xtensa-isa/

    Quote

    Доступ к любой ячейке памяти, кроме регистра, происходит очень медленно, и в результате сохранение/восстановление будет иметь негативное влияние на производительность. Таким образом, использование соглашения об оконном регистре экономит нам накладные расходы на такие сохранения/восстановления, а также уменьшает размер кода. Что происходит, когда есть функция, которая вызывает другую функцию, которая вызывает другую и так далее, так что окно продолжает вращаться и перемещаться, указывая на фрейм первой функции? Перезаписывает ли он данные и повреждает ли данные первой функции? Если нет, то где хранятся данные первой функции?

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

    image.thumb.png.3120bea12f9fdad17d725d4fb90daccf.png

    Сам механизм довольно интересен - не хранить и восстанавливать регистры в стеке, а перемещаться по окнам.

    image.thumb.png.3406d7cc7599d37eb94cde01ec9fd89c.png

    Но на большой вложенности, эта архитектура приносит проблемы.

  13. 7 hours ago, GenaSPB said:

    Мои эксперименты тут.
    В самом проекте - гружу скомпилированный под HiFi4 бинарник в память программ, запускаю, смотрю на вывод в консоль... tests.c
    Не всё пашет. В загрузчике пришлось учитывать перепутанные адреса с точки зрения Cortex чтобы подряд в HiFi4 писать.

    Спасибо. Скачал примеры, буду разбираться.

    Своп адресных линий огорчает. Мне как раз надо сделать кодер и декодер Рида-Соломона в поле GF(2^16), там интенсивный обмен с буферами памяти.

    4 hours ago, sasamy said:

    собирается тулчейн в ct-ng - собственно моего там только потраченное время на поиск информации

    В соседней ветке про T113-s3 нашёл пару архивов на ваши сборки тулчейна под Windows. Спасибо.

    4 hours ago, GenaSPB said:

    При большой вложенности вызовов виснет. Но. Вложенность простых функций работает. 

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

    Нужна настройка стартапа. Инит конструкторов, деструкторов,  секций LMA, VMA, кучи и прочего. 🙂

    4 hours ago, mantech said:

    Я правильно понимаю, нет оптимизации под специфические ДСП инструкции, но стандартные команды должны работать?

    Очень надеюсь на них.  Иначе тот линуксовый компилятор - просто академическая игрушка: без оптимизаций и спец-инструкций.

    7 hours ago, mantech said:

    А под эклипсу это дело не вкорячить?

    Это и есть эклипса. Немного переделанная.  Всё что идёт под JAVA - тормозит.

    Использую Notepad++  и make-файлы.   IDE и RAID уже не использую как лет 5. 🙂

     

  14. Запустил второе ядро у T113-s3.  Начал разбираться с третьим ядром - HiFi4 DSP.

     

    1) Где взять нормальную лицензию на запуск Cadence Xtense ?  При запуске не даёт работать.

     

    2) У меня одного это грузится 2,5 минуты и замораживает комп?  Тогда буду в блокноте писать и make-файлом компилировать.

    image.png.05a8aad0101d6b7266fa4ae19974d6e4.png

     

    3) Или оно того не стоит и лучше использовать тулчейн,  собранный  из исходников ув. sasamy ?

    Насколько хорош этот компилятор? - все ли инструкции HiFi4 поддерживает и что у него с оптимизацией кода?

  15. 3 hours ago, _4afc_ said:

    Почему несколько подряд не принимаются? Зашли в точку где лучи в ноль сложились?

    Потому что мёртвая зона и сигнал слабый.

    3 hours ago, _4afc_ said:

    Бывают две неподвижных точки в пространства где связь то 100% то 1% ?

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

    Преамбула и синхрослово - 2GFSK,  полезные данные - 4GFSK.

    Если позиция с хорошей связью найдена и перестать перемещать приёмник - связь есть всегда и она стабильна.  Если начать движение, то связь иногда может нарушаться - зависит от положения и скорости перемещения.

    Тоесть всегда можно найти точки с отличным приёмом и остаться в них.

  16. 2 hours ago, des00 said:

    ИМХО, при такой структуре ошибок(у вас тупо теряется пакет в некоторых точках), никакой код не поможет.

    Если радикально, то согласен.  Но уменьшить число неисправляемых пакетов при пешем движении можно.

    2 hours ago, des00 said:

    Облегчить, вы сами к этому пришли: большой блок и мазать, мазать, мазать.

    На счёт "мазать" - не понял.  Если имеется ввиду перемежение, то выше я как раз объяснил, что оно не подходит по двум причинам:

    1. Большая задержка

    2. Не поможет в случае, когда несколько смежных кадров полностью битые.  Не делать же 10-секундное перемежение в Full-Duplex 🙂

    3. Реально помогут длинные коды в пределах одного фрейма.  Вышеприведённая статистика показывает, что 90% пакетов содержат не более 10% ошибок. Поэтому RS GF(2^16) тут сам Бог велел.  И не надо делать перемежение внутри одного фрейма, как это было с короткими RS GF(2^8).

    2 hours ago, des00 said:

    Прыжки по частоте можно попробовать, как выше упоминалось.

    Что дадут прыжки по частоте?  При движении картина будет меняться.  Время одного фрейма -  66 - 100 мс.  Он же - один большой пакет.   Резать пакет на серию маленьких - это будет лишний оверхед из-за множества преамбул и синхрослов.  А во время передачи пакета менять частоту - как мне кажется нет смысла.

    За 100 мс  ситуация сто раз поменяется.

    2 hours ago, des00 said:

    Есть системы которые прыгают по частотам + изучают куда прыгать не стоит. Ну и опять же значение прыжка определяется свойствами канала (какой смысл прыгать из замирания в замирание).

    Делал прыжки по частотам для AT86RF215 - разницы особо не заметил - точки минимума практически не зависят от частоты приёма.

    2 hours ago, des00 said:

    Но это наверное все же больше в сторону кастомного радиотракта

    Ну может смотреть в сторону DVB-T2, хотя увенен, что при небольшой мощности (100 мВт) он тоже даст мертвые точки приёма при движении.

    2 hours ago, des00 said:

    Но и может уже пришло время смотреть в сторону частотного резервирования: одновременная прием-передача на существенно разных частотах?

    Ну допустим передача на 438 МГц,  приём на 436 МГц.  Что улучшится?

    43 minutes ago, des00 said:

    У него процессор мелкий, от такого БЧХ он подохнет. На плис да, 3-5к логики и будет летать

    Ну как сказать мелкий...   Два ядра  Cortex-A7 на частоте 1200 МГц.   Вот играюсь со вторым ядром, чтобы повешать на него RS 2^16.

  17. Провёл аналогичный эксперимент с кодами RS, который GF(2^8) + перемежение + CRC, как я ранее описывал в посте:

    image.png

     

    Результат НУЛЕВОЙ!  Ни один из принятых пакетов  НЕ исправился.  Хотя моделирование на ПК показало хорошие показатели - с ПАКЕТНОЙ ошибкой.  В реальности ошибки размазаны по всему фрейму, тоесть не пакетные.

    Из  этого я делаю вывод, что один RS GF(2^16) для моих задач - лучше, чем куча RS GF(2^8) + перемежение + CRC.

     

    P.S. Если что, у меня Si4463 передаёт фрейм одним длинным пакетом сразу (есть такой режим). Я не собираю супер-пакет из мелких пакетов максимальной длиной FIFO.

    Контроль фрейма по CRC64.

     

  18. 9 hours ago, blackfin said:

    Eсли расстояние между ошибочными битами (из-за перемежителя) будет больше 16 бит, то BCH будет эффективнее, чем RS.

    1. Не могу дать гарантии, что это расстояние будет больше 16 бит. Бывает, что и несколько фреймов подряд настолько ужасны, что не поддаются коррекции.

    2. Перемежение между фреймами - не вариант. Возрастает задержка.  12 кадров уже дадут прибавку задержки на 1 сек (при 12 FPS), что неприемлемо для систем Full-Duplex.

    3. Перемежение ограничивает рэндомную локализацию ошибок и эффективно работает только на пакетных ошибках. В моём случае(см. иллюстрации выше) ошибки могут быть где угодно-  в любой части пакета.

    image.thumb.png.76b2c1ec31ae4d4e18d7b305a2a072c7.png

    8 hours ago, petrov said:

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

    4. Это не портативный вариант.  Бегать с двумя антеннами с разными поляризациями, которые пространственно разнесены - так себе удовольствие...

    Нужен "кирпич" в руке. Причём оба устройства - должны быть одинаковы.

  19. 30 minutes ago, blackfin said:

    2976 - 2848 = 2*t = 128 проверочных символа, которые исправляют t = 64 слова..

    Ошибся с числом проверочных символов.  Было 256, а не 128.   RS(2976, 2720).

    Позже увеличил до 384 проверочных символов (768 байт).  Делать больше - уже FPS падает ниже 12.

  20. 3 hours ago, _4afc_ said:

    Сколько занимает смена частот на AT86RF215?

    Совсем ничто. Давно делал замеры.

    3 hours ago, _4afc_ said:

    Передать чётные пакеты на одной частоте, нечётные на другой с перемежением, аля GSM

    Хорошая  идея! Попробую.

     

    Начал использовать длинные коды RS GF(2^16).

    Использую укороченный RS с оптимизированным кодом:  RS(2976, 2848), исправляющий 128 слов (256 байт). Полезный пакет 2848 слов (5696 байт).

    Требует много ресурсов: кодирование 35 FPS, декодирование 17 FPS. Общая задержка: 1/((1/35)+(1/17)) = 11 FPS.   Планирую запустить второе ядро на T113-s3 и отдать его на Рид-Соломона.

    Длинный код дал улучшения: теперь до 256 байт исправляет - в любом месте, в отличие от короткого RS(255, ...)+ перемежение.

     

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

    Spoiler
    Bad packets: 385, All packets 3600, Percent: 10.694 %
    
    Packet: 101, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 156, Errors: 97, Packet length 2976, Percent: 3.259 %
    Packet: 215, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 216, Errors: 259, Packet length 2976, Percent: 8.703 %
    Packet: 274, Errors: 380, Packet length 2976, Percent: 12.769 %
    Packet: 275, Errors: 2603, Packet length 2976, Percent: 87.466 %
    Packet: 276, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 308, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 309, Errors: 11, Packet length 2976, Percent: 0.370 %
    Packet: 310, Errors: 11, Packet length 2976, Percent: 0.370 %
    Packet: 311, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 314, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 315, Errors: 488, Packet length 2976, Percent: 16.398 %
    Packet: 316, Errors: 72, Packet length 2976, Percent: 2.419 %
    Packet: 319, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 320, Errors: 705, Packet length 2976, Percent: 23.690 %
    Packet: 321, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 327, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 328, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 358, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 359, Errors: 58, Packet length 2976, Percent: 1.949 %
    Packet: 360, Errors: 16, Packet length 2976, Percent: 0.538 %
    Packet: 364, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 365, Errors: 2024, Packet length 2976, Percent: 68.011 %
    Packet: 372, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 374, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 375, Errors: 2125, Packet length 2976, Percent: 71.405 %
    Packet: 376, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 380, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 381, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 395, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 420, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 421, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 424, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 425, Errors: 13, Packet length 2976, Percent: 0.437 %
    Packet: 426, Errors: 1067, Packet length 2976, Percent: 35.853 %
    Packet: 429, Errors: 441, Packet length 2976, Percent: 14.819 %
    Packet: 474, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 501, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 502, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 504, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 513, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 514, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 515, Errors: 16, Packet length 2976, Percent: 0.538 %
    Packet: 516, Errors: 39, Packet length 2976, Percent: 1.310 %
    Packet: 517, Errors: 34, Packet length 2976, Percent: 1.142 %
    Packet: 518, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 519, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 520, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 521, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 522, Errors: 23, Packet length 2976, Percent: 0.773 %
    Packet: 523, Errors: 45, Packet length 2976, Percent: 1.512 %
    Packet: 524, Errors: 36, Packet length 2976, Percent: 1.210 %
    Packet: 525, Errors: 22, Packet length 2976, Percent: 0.739 %
    Packet: 526, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 527, Errors: 43, Packet length 2976, Percent: 1.445 %
    Packet: 528, Errors: 129, Packet length 2976, Percent: 4.335 %
    Packet: 529, Errors: 253, Packet length 2976, Percent: 8.501 %
    Packet: 530, Errors: 377, Packet length 2976, Percent: 12.668 %
    Packet: 531, Errors: 75, Packet length 2976, Percent: 2.520 %
    Packet: 532, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 533, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 534, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 535, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 536, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 537, Errors: 97, Packet length 2976, Percent: 3.259 %
    Packet: 538, Errors: 826, Packet length 2976, Percent: 27.755 %
    Packet: 539, Errors: 983, Packet length 2976, Percent: 33.031 %
    Packet: 540, Errors: 390, Packet length 2976, Percent: 13.105 %
    Packet: 541, Errors: 576, Packet length 2976, Percent: 19.355 %
    Packet: 542, Errors: 357, Packet length 2976, Percent: 11.996 %
    Packet: 543, Errors: 30, Packet length 2976, Percent: 1.008 %
    Packet: 565, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 566, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 567, Errors: 49, Packet length 2976, Percent: 1.647 %
    Packet: 568, Errors: 674, Packet length 2976, Percent: 22.648 %
    Packet: 569, Errors: 2468, Packet length 2976, Percent: 82.930 %
    Packet: 570, Errors: 146, Packet length 2976, Percent: 4.906 %
    Packet: 571, Errors: 40, Packet length 2976, Percent: 1.344 %
    Packet: 572, Errors: 30, Packet length 2976, Percent: 1.008 %
    Packet: 573, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 574, Errors: 42, Packet length 2976, Percent: 1.411 %
    Packet: 575, Errors: 30, Packet length 2976, Percent: 1.008 %
    Packet: 576, Errors: 18, Packet length 2976, Percent: 0.605 %
    Packet: 577, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 588, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 589, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 591, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 592, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 593, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 594, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 595, Errors: 13, Packet length 2976, Percent: 0.437 %
    Packet: 596, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 597, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 598, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 599, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 600, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 601, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 604, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 606, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 607, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 608, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 609, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 611, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 612, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 613, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 614, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 615, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 616, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 617, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 618, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 619, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 620, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 621, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 622, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 623, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 624, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 626, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 627, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 628, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 629, Errors: 70, Packet length 2976, Percent: 2.352 %
    Packet: 630, Errors: 531, Packet length 2976, Percent: 17.843 %
    Packet: 631, Errors: 106, Packet length 2976, Percent: 3.562 %
    Packet: 632, Errors: 14, Packet length 2976, Percent: 0.470 %
    Packet: 633, Errors: 56, Packet length 2976, Percent: 1.882 %
    Packet: 634, Errors: 831, Packet length 2976, Percent: 27.923 %
    Packet: 635, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 636, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 637, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 639, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 640, Errors: 106, Packet length 2976, Percent: 3.562 %
    Packet: 641, Errors: 177, Packet length 2976, Percent: 5.948 %
    Packet: 642, Errors: 2582, Packet length 2976, Percent: 86.761 %
    Packet: 643, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 644, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 649, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 655, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 656, Errors: 60, Packet length 2976, Percent: 2.016 %
    Packet: 657, Errors: 1415, Packet length 2976, Percent: 47.547 %
    Packet: 658, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 663, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 664, Errors: 34, Packet length 2976, Percent: 1.142 %
    Packet: 665, Errors: 26, Packet length 2976, Percent: 0.874 %
    Packet: 666, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 932, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 933, Errors: 92, Packet length 2976, Percent: 3.091 %
    Packet: 934, Errors: 339, Packet length 2976, Percent: 11.391 %
    Packet: 935, Errors: 23, Packet length 2976, Percent: 0.773 %
    Packet: 936, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 940, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 941, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 942, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 943, Errors: 15, Packet length 2976, Percent: 0.504 %
    Packet: 944, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 945, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 946, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 947, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 948, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 949, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1027, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 1047, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 1077, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1085, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1090, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1091, Errors: 57, Packet length 2976, Percent: 1.915 %
    Packet: 1113, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1114, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1115, Errors: 102, Packet length 2976, Percent: 3.427 %
    Packet: 1116, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1126, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1127, Errors: 26, Packet length 2976, Percent: 0.874 %
    Packet: 1128, Errors: 2342, Packet length 2976, Percent: 78.696 %
    Packet: 1129, Errors: 182, Packet length 2976, Percent: 6.116 %
    Packet: 1130, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 1131, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1133, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 1134, Errors: 2809, Packet length 2976, Percent: 94.388 %
    Packet: 1198, Errors: 26, Packet length 2976, Percent: 0.874 %
    Packet: 1199, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 1200, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1211, Errors: 32, Packet length 2976, Percent: 1.075 %
    Packet: 1227, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1228, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1229, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1253, Errors: 180, Packet length 2976, Percent: 6.048 %
    Packet: 1254, Errors: 911, Packet length 2976, Percent: 30.612 %
    Packet: 1255, Errors: 45, Packet length 2976, Percent: 1.512 %
    Packet: 1256, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 1257, Errors: 67, Packet length 2976, Percent: 2.251 %
    Packet: 1258, Errors: 1150, Packet length 2976, Percent: 38.642 %
    Packet: 1314, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1315, Errors: 92, Packet length 2976, Percent: 3.091 %
    Packet: 1316, Errors: 406, Packet length 2976, Percent: 13.642 %
    Packet: 1317, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1332, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1333, Errors: 127, Packet length 2976, Percent: 4.267 %
    Packet: 1334, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1340, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1341, Errors: 236, Packet length 2976, Percent: 7.930 %
    Packet: 1379, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 1380, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1445, Errors: 388, Packet length 2976, Percent: 13.038 %
    Packet: 1489, Errors: 29, Packet length 2976, Percent: 0.974 %
    Packet: 1797, Errors: 16, Packet length 2976, Percent: 0.538 %
    Packet: 1803, Errors: 18, Packet length 2976, Percent: 0.605 %
    Packet: 1889, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1892, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1893, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1894, Errors: 18, Packet length 2976, Percent: 0.605 %
    Packet: 1895, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 1896, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1897, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1898, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 1914, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1915, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 1941, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 1942, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1950, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1951, Errors: 2355, Packet length 2976, Percent: 79.133 %
    Packet: 1956, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1957, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1958, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 1959, Errors: 457, Packet length 2976, Percent: 15.356 %
    Packet: 1960, Errors: 85, Packet length 2976, Percent: 2.856 %
    Packet: 1961, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 1962, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1966, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1967, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 1968, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 1969, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 1970, Errors: 16, Packet length 2976, Percent: 0.538 %
    Packet: 1971, Errors: 17, Packet length 2976, Percent: 0.571 %
    Packet: 1972, Errors: 33, Packet length 2976, Percent: 1.109 %
    Packet: 1973, Errors: 33, Packet length 2976, Percent: 1.109 %
    Packet: 1974, Errors: 48, Packet length 2976, Percent: 1.613 %
    Packet: 1975, Errors: 52, Packet length 2976, Percent: 1.747 %
    Packet: 1976, Errors: 122, Packet length 2976, Percent: 4.099 %
    Packet: 1977, Errors: 152, Packet length 2976, Percent: 5.108 %
    Packet: 1978, Errors: 151, Packet length 2976, Percent: 5.074 %
    Packet: 1979, Errors: 97, Packet length 2976, Percent: 3.259 %
    Packet: 1980, Errors: 43, Packet length 2976, Percent: 1.445 %
    Packet: 1981, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 1982, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 1983, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 1984, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1985, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 1986, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1988, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1989, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1997, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 1998, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 2018, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2019, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 2020, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 2021, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 2022, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 2023, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2024, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2027, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2028, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2029, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2030, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2031, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2032, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2033, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2035, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2038, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2039, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2040, Errors: 19, Packet length 2976, Percent: 0.638 %
    Packet: 2041, Errors: 32, Packet length 2976, Percent: 1.075 %
    Packet: 2042, Errors: 40, Packet length 2976, Percent: 1.344 %
    Packet: 2043, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 2044, Errors: 15, Packet length 2976, Percent: 0.504 %
    Packet: 2045, Errors: 92, Packet length 2976, Percent: 3.091 %
    Packet: 2046, Errors: 179, Packet length 2976, Percent: 6.015 %
    Packet: 2047, Errors: 92, Packet length 2976, Percent: 3.091 %
    Packet: 2048, Errors: 6, Packet length 2976, Percent: 0.202 %
    Packet: 2049, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2059, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2077, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2082, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2083, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2084, Errors: 20, Packet length 2976, Percent: 0.672 %
    Packet: 2085, Errors: 103, Packet length 2976, Percent: 3.461 %
    Packet: 2086, Errors: 54, Packet length 2976, Percent: 1.815 %
    Packet: 2087, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 2088, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 2089, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 2090, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 2091, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 2092, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 2093, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2094, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2095, Errors: 17, Packet length 2976, Percent: 0.571 %
    Packet: 2096, Errors: 90, Packet length 2976, Percent: 3.024 %
    Packet: 2097, Errors: 866, Packet length 2976, Percent: 29.099 %
    Packet: 2098, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 2106, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2114, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2115, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 2119, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2120, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 2121, Errors: 93, Packet length 2976, Percent: 3.125 %
    Packet: 2122, Errors: 1113, Packet length 2976, Percent: 37.399 %
    Packet: 2123, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 2147, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2163, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2165, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2167, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2251, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2319, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2320, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 2321, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 2326, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2334, Errors: 85, Packet length 2976, Percent: 2.856 %
    Packet: 2335, Errors: 2672, Packet length 2976, Percent: 89.785 %
    Packet: 2340, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 2341, Errors: 140, Packet length 2976, Percent: 4.704 %
    Packet: 2404, Errors: 10, Packet length 2976, Percent: 0.336 %
    Packet: 2405, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 2560, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2561, Errors: 368, Packet length 2976, Percent: 12.366 %
    Packet: 2716, Errors: 25, Packet length 2976, Percent: 0.840 %
    Packet: 2757, Errors: 191, Packet length 2976, Percent: 6.418 %
    Packet: 2969, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 2970, Errors: 18, Packet length 2976, Percent: 0.605 %
    Packet: 3171, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3210, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 3211, Errors: 23, Packet length 2976, Percent: 0.773 %
    Packet: 3223, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 3224, Errors: 700, Packet length 2976, Percent: 23.522 %
    Packet: 3225, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3226, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3227, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 3228, Errors: 171, Packet length 2976, Percent: 5.746 %
    Packet: 3229, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 3245, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3265, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 3271, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3274, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 3275, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 3284, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 3285, Errors: 54, Packet length 2976, Percent: 1.815 %
    Packet: 3286, Errors: 364, Packet length 2976, Percent: 12.231 %
    Packet: 3287, Errors: 194, Packet length 2976, Percent: 6.519 %
    Packet: 3288, Errors: 12, Packet length 2976, Percent: 0.403 %
    Packet: 3289, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3290, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3291, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3292, Errors: 7, Packet length 2976, Percent: 0.235 %
    Packet: 3293, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3294, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 3295, Errors: 4, Packet length 2976, Percent: 0.134 %
    Packet: 3296, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3297, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3298, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3307, Errors: 104, Packet length 2976, Percent: 3.495 %
    Packet: 3308, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3325, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 3326, Errors: 216, Packet length 2976, Percent: 7.258 %
    Packet: 3327, Errors: 5, Packet length 2976, Percent: 0.168 %
    Packet: 3328, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3352, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3353, Errors: 32, Packet length 2976, Percent: 1.075 %
    Packet: 3354, Errors: 2168, Packet length 2976, Percent: 72.849 %
    Packet: 3355, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3356, Errors: 8, Packet length 2976, Percent: 0.269 %
    Packet: 3357, Errors: 82, Packet length 2976, Percent: 2.755 %
    Packet: 3358, Errors: 1282, Packet length 2976, Percent: 43.078 %
    Packet: 3381, Errors: 21, Packet length 2976, Percent: 0.706 %
    Packet: 3382, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3390, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3420, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3436, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3437, Errors: 2, Packet length 2976, Percent: 0.067 %
    Packet: 3438, Errors: 31, Packet length 2976, Percent: 1.042 %
    Packet: 3439, Errors: 1314, Packet length 2976, Percent: 44.153 %
    Packet: 3440, Errors: 9, Packet length 2976, Percent: 0.302 %
    Packet: 3441, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 3442, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3449, Errors: 1, Packet length 2976, Percent: 0.034 %
    Packet: 3450, Errors: 421, Packet length 2976, Percent: 14.147 %
    Packet: 3509, Errors: 3, Packet length 2976, Percent: 0.101 %
    Packet: 3510, Errors: 270, Packet length 2976, Percent: 9.073 %
    Packet: 3511, Errors: 8, Packet length 2976, Percent: 0.269 %
    Error Packets=385
    

     

     

    Статистика пакетов после декодирования длинным RS:

    Spoiler
    Bad packets: 56, All packets 3600, Percent: 1.556 %
    
    Packet: 216, Errors: 259, Packet length 2976, Percent: 8.703 %
    Packet: 274, Errors: 380, Packet length 2976, Percent: 12.769 %
    Packet: 275, Errors: 2603, Packet length 2976, Percent: 87.466 %
    Packet: 315, Errors: 488, Packet length 2976, Percent: 16.398 %
    Packet: 320, Errors: 705, Packet length 2976, Percent: 23.690 %
    Packet: 365, Errors: 2024, Packet length 2976, Percent: 68.011 %
    Packet: 375, Errors: 2125, Packet length 2976, Percent: 71.405 %
    Packet: 426, Errors: 1067, Packet length 2976, Percent: 35.853 %
    Packet: 429, Errors: 441, Packet length 2976, Percent: 14.819 %
    Packet: 528, Errors: 129, Packet length 2976, Percent: 4.335 %
    Packet: 529, Errors: 253, Packet length 2976, Percent: 8.501 %
    Packet: 530, Errors: 377, Packet length 2976, Percent: 12.668 %
    Packet: 538, Errors: 826, Packet length 2976, Percent: 27.755 %
    Packet: 539, Errors: 983, Packet length 2976, Percent: 33.031 %
    Packet: 540, Errors: 390, Packet length 2976, Percent: 13.105 %
    Packet: 541, Errors: 576, Packet length 2976, Percent: 19.355 %
    Packet: 542, Errors: 357, Packet length 2976, Percent: 11.996 %
    Packet: 568, Errors: 674, Packet length 2976, Percent: 22.648 %
    Packet: 569, Errors: 2468, Packet length 2976, Percent: 82.930 %
    Packet: 570, Errors: 146, Packet length 2976, Percent: 4.906 %
    Packet: 630, Errors: 531, Packet length 2976, Percent: 17.843 %
    Packet: 634, Errors: 831, Packet length 2976, Percent: 27.923 %
    Packet: 641, Errors: 177, Packet length 2976, Percent: 5.948 %
    Packet: 642, Errors: 2582, Packet length 2976, Percent: 86.761 %
    Packet: 657, Errors: 1415, Packet length 2976, Percent: 47.547 %
    Packet: 934, Errors: 339, Packet length 2976, Percent: 11.391 %
    Packet: 1128, Errors: 2342, Packet length 2976, Percent: 78.696 %
    Packet: 1129, Errors: 182, Packet length 2976, Percent: 6.116 %
    Packet: 1134, Errors: 2809, Packet length 2976, Percent: 94.388 %
    Packet: 1253, Errors: 180, Packet length 2976, Percent: 6.048 %
    Packet: 1254, Errors: 911, Packet length 2976, Percent: 30.612 %
    Packet: 1258, Errors: 1150, Packet length 2976, Percent: 38.642 %
    Packet: 1316, Errors: 406, Packet length 2976, Percent: 13.642 %
    Packet: 1341, Errors: 236, Packet length 2976, Percent: 7.930 %
    Packet: 1445, Errors: 388, Packet length 2976, Percent: 13.038 %
    Packet: 1951, Errors: 2355, Packet length 2976, Percent: 79.133 %
    Packet: 1959, Errors: 457, Packet length 2976, Percent: 15.356 %
    Packet: 1977, Errors: 152, Packet length 2976, Percent: 5.108 %
    Packet: 1978, Errors: 151, Packet length 2976, Percent: 5.074 %
    Packet: 2046, Errors: 179, Packet length 2976, Percent: 6.015 %
    Packet: 2097, Errors: 866, Packet length 2976, Percent: 29.099 %
    Packet: 2122, Errors: 1113, Packet length 2976, Percent: 37.399 %
    Packet: 2335, Errors: 2672, Packet length 2976, Percent: 89.785 %
    Packet: 2341, Errors: 140, Packet length 2976, Percent: 4.704 %
    Packet: 2561, Errors: 368, Packet length 2976, Percent: 12.366 %
    Packet: 2757, Errors: 191, Packet length 2976, Percent: 6.418 %
    Packet: 3224, Errors: 700, Packet length 2976, Percent: 23.522 %
    Packet: 3228, Errors: 171, Packet length 2976, Percent: 5.746 %
    Packet: 3286, Errors: 364, Packet length 2976, Percent: 12.231 %
    Packet: 3287, Errors: 194, Packet length 2976, Percent: 6.519 %
    Packet: 3326, Errors: 216, Packet length 2976, Percent: 7.258 %
    Packet: 3354, Errors: 2168, Packet length 2976, Percent: 72.849 %
    Packet: 3358, Errors: 1282, Packet length 2976, Percent: 43.078 %
    Packet: 3439, Errors: 1314, Packet length 2976, Percent: 44.153 %
    Packet: 3450, Errors: 421, Packet length 2976, Percent: 14.147 %
    Packet: 3510, Errors: 270, Packet length 2976, Percent: 9.073 %
    Error Packets=56
    

     

     

    За 5 минут (переданных и принятых 3600 пакетов) - было 385 битых пакетов из 3600 => 10.694 %

    После исправления RS - стало  56 битых пакетов из  3600 =>  1.556 %

    Тоесть :  385/56 ~7 - в 7 раз стало меньше битых.

    Условия эксперимента всё те же: один терминал неподвижен, второй движется в руках по комнатам со скоростью 1-2 шага/c.

     

    3 hours ago, _4afc_ said:

    Вообще при симметричном полном TDM дуплексе точка-точка - вам возможно вообще проще битый пакет попросить повторить.

    У меня полоса 100% занята:  после передачи, сразу приём.  Время разделено 50 на 50 %. только потоковый режим, никаких запросов на повтор.

    Если пакет от абонента 2 принят, и он битый - он отбрасывается, в ответ отсылается пакет от абонента 1.

  21. 9 hours ago, petrov said:

    нужны не файловые кодеки и исправление ошибок, а совместное сжатие с модуляцией, работающее с высокой вероятностью ошибок

    Что это за совместное сжатие с модуляцией?

    OFDM в AT86RF215 тоже не справляется с такого рода ошибками.

    Мне кажется причина всего этого безобразия - в банально низком уровне сигнала в точке приёма. Иначе как объяснить, что один пакет - полностью в искажениях, а два соседних с ним - не повреждены?

  22. 11 minutes ago, blackfin said:

    Но работать с кодами БЧХ такой длины будет проблематично, так как степень порождающего полинома g(x) равна примерно 18 тыс..

    тогда остаётся рид-соломон с глубоким перемежением.

     

    2 hours ago, _4afc_ said:

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

    Это всего лишь интерпретация принятого лога тестового паттерна в картинке.   На самом деле нужен сжатый кадр видео.

  23. 1 hour ago, blackfin said:

    БЧХ умеет исправлять отдельные биты:

    А какой именно БЧХ брать?  Смотрел реализацию БЧХ от Robert Morelos-Zaragoza - там GF(2^6) - тоесть это опять символы, а не отдельные биты.

    Вот статистика пакетов, пересчитанная по числу ошибочных бит:

    Spoiler
    Packet: 91, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 261, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 286, Error bits: 17643, Packet length bits 47616, Percent: 37.053 %
    Packet: 292, Error bits: 4381, Packet length bits 47616, Percent: 9.201 %
    Packet: 322, Error bits: 7, Packet length bits 47616, Percent: 0.015 %
    Packet: 323, Error bits: 2378, Packet length bits 47616, Percent: 4.994 %
    Packet: 424, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 466, Error bits: 17, Packet length bits 47616, Percent: 0.036 %
    Packet: 474, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 479, Error bits: 780, Packet length bits 47616, Percent: 1.638 %
    Packet: 497, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 498, Error bits: 6, Packet length bits 47616, Percent: 0.013 %
    Packet: 499, Error bits: 37, Packet length bits 47616, Percent: 0.078 %
    Packet: 500, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 521, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 522, Error bits: 15, Packet length bits 47616, Percent: 0.032 %
    Packet: 523, Error bits: 98, Packet length bits 47616, Percent: 0.206 %
    Packet: 524, Error bits: 151, Packet length bits 47616, Percent: 0.317 %
    Packet: 525, Error bits: 847, Packet length bits 47616, Percent: 1.779 %
    Packet: 526, Error bits: 1057, Packet length bits 47616, Percent: 2.220 %
    Packet: 527, Error bits: 713, Packet length bits 47616, Percent: 1.497 %
    Packet: 532, Error bits: 3, Packet length bits 47616, Percent: 0.006 %
    Packet: 533, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 536, Error bits: 6, Packet length bits 47616, Percent: 0.013 %
    Packet: 537, Error bits: 391, Packet length bits 47616, Percent: 0.821 %
    Packet: 538, Error bits: 8, Packet length bits 47616, Percent: 0.017 %
    Packet: 539, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 540, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 541, Error bits: 4, Packet length bits 47616, Percent: 0.008 %
    Packet: 542, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 568, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 569, Error bits: 16, Packet length bits 47616, Percent: 0.034 %
    Packet: 570, Error bits: 7, Packet length bits 47616, Percent: 0.015 %
    Packet: 573, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 574, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 575, Error bits: 4, Packet length bits 47616, Percent: 0.008 %
    Packet: 616, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 617, Error bits: 17, Packet length bits 47616, Percent: 0.036 %
    Packet: 618, Error bits: 8, Packet length bits 47616, Percent: 0.017 %
    Packet: 622, Error bits: 11, Packet length bits 47616, Percent: 0.023 %
    Packet: 623, Error bits: 3714, Packet length bits 47616, Percent: 7.800 %
    Packet: 659, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 660, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 669, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 672, Error bits: 54, Packet length bits 47616, Percent: 0.113 %
    Packet: 735, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 736, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 737, Error bits: 176, Packet length bits 47616, Percent: 0.370 %
    Packet: 738, Error bits: 40, Packet length bits 47616, Percent: 0.084 %
    Packet: 739, Error bits: 7, Packet length bits 47616, Percent: 0.015 %
    Packet: 740, Error bits: 3, Packet length bits 47616, Percent: 0.006 %
    Packet: 857, Error bits: 6, Packet length bits 47616, Percent: 0.013 %
    Packet: 916, Error bits: 680, Packet length bits 47616, Percent: 1.428 %
    Packet: 1185, Error bits: 29, Packet length bits 47616, Percent: 0.061 %
    Packet: 1271, Error bits: 42, Packet length bits 47616, Percent: 0.088 %
    Packet: 1282, Error bits: 1099, Packet length bits 47616, Percent: 2.308 %
    Packet: 1302, Error bits: 36, Packet length bits 47616, Percent: 0.076 %
    Packet: 1319, Error bits: 25, Packet length bits 47616, Percent: 0.053 %
    Packet: 1331, Error bits: 12, Packet length bits 47616, Percent: 0.025 %
    Packet: 1355, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1369, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1370, Error bits: 14, Packet length bits 47616, Percent: 0.029 %
    Packet: 1371, Error bits: 40, Packet length bits 47616, Percent: 0.084 %
    Packet: 1372, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 1378, Error bits: 3, Packet length bits 47616, Percent: 0.006 %
    Packet: 1385, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 1386, Error bits: 67, Packet length bits 47616, Percent: 0.141 %
    Packet: 1387, Error bits: 9, Packet length bits 47616, Percent: 0.019 %
    Packet: 1397, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1423, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1433, Error bits: 223, Packet length bits 47616, Percent: 0.468 %
    Packet: 1434, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1521, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1534, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1576, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1580, Error bits: 4, Packet length bits 47616, Percent: 0.008 %
    Packet: 1581, Error bits: 10, Packet length bits 47616, Percent: 0.021 %
    Packet: 1582, Error bits: 3, Packet length bits 47616, Percent: 0.006 %
    Packet: 1584, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1586, Error bits: 3, Packet length bits 47616, Percent: 0.006 %
    Packet: 1587, Error bits: 8, Packet length bits 47616, Percent: 0.017 %
    Packet: 1588, Error bits: 49, Packet length bits 47616, Percent: 0.103 %
    Packet: 1589, Error bits: 33, Packet length bits 47616, Percent: 0.069 %
    Packet: 1590, Error bits: 10, Packet length bits 47616, Percent: 0.021 %
    Packet: 1591, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 1592, Error bits: 8, Packet length bits 47616, Percent: 0.017 %
    Packet: 1593, Error bits: 70, Packet length bits 47616, Percent: 0.147 %
    Packet: 1594, Error bits: 18, Packet length bits 47616, Percent: 0.038 %
    Packet: 1595, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1800, Error bits: 265, Packet length bits 47616, Percent: 0.557 %
    Packet: 1811, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1899, Error bits: 9, Packet length bits 47616, Percent: 0.019 %
    Packet: 1900, Error bits: 112, Packet length bits 47616, Percent: 0.235 %
    Packet: 1923, Error bits: 5, Packet length bits 47616, Percent: 0.011 %
    Packet: 1966, Error bits: 1, Packet length bits 47616, Percent: 0.002 %
    Packet: 1974, Error bits: 8, Packet length bits 47616, Percent: 0.017 %
    Packet: 1980, Error bits: 9, Packet length bits 47616, Percent: 0.019 %
    Packet: 1981, Error bits: 50, Packet length bits 47616, Percent: 0.105 %
    Packet: 1982, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 1983, Error bits: 2, Packet length bits 47616, Percent: 0.004 %
    Packet: 1984, Error bits: 3, Packet length bits 47616, Percent: 0.006 %

     

     

    Тоесть - по битам вообще малый процент ошибок.   Подсчитал пакеты:

    1) 101 пакетов, у которых в одном байте хотя бы один  провреждённый бит

    2) 49 пакетов у которых в одном байте больше чем 2 повреждённых бита

    3) 18 пакетов, у которых в одном байте больше чем 3 провреждённых бита

     

    1 hour ago, _4afc_ said:

    Судя по тому что у вас отдельные строки/пакеты бьются - вероятно надо просто размазывать информацию по нескольким пакетам перемежением.

    Есть соблазн сделать сверх-глубокое перемежение на 12 кадров (задержка +1 секунда на 12 FPS).  Но такая задержка в Full-Duplex наверное не очень.   И будет неприятно, если в худшем случае не будут исправлены сразу все 12 кадров - это 1 сек не будет связи.

     

    Сделал перемежение 12 кадров на ПК - смотрится  многообещающе. Фрагмент ниже:

    image.thumb.png.4a7cbbb3aa28b7100841a22ed793b2a7.png

    1 hour ago, _4afc_ said:

    Судя по тому что у вас отдельные строки/пакеты бьются - вероятно надо просто размазывать информацию по нескольким пакетам перемежением.

    Одна строка - один пакет - один фрейм

  24. Подсчитал статистику по пакетам:

     

    Spoiler
    Bad packets: 101, All packets 2160, Percent: 4.676 %
    
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 4954, Packet length 5952, Percent: 83.233 %
    Errors: 2242, Packet length 5952, Percent: 37.668 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 1432, Packet length 5952, Percent: 24.059 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 15, Packet length 5952, Percent: 0.252 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 496, Packet length 5952, Percent: 8.333 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 6, Packet length 5952, Percent: 0.101 %
    Errors: 33, Packet length 5952, Percent: 0.554 %
    Errors: 4, Packet length 5952, Percent: 0.067 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 14, Packet length 5952, Percent: 0.235 %
    Errors: 88, Packet length 5952, Percent: 1.478 %
    Errors: 126, Packet length 5952, Percent: 2.117 %
    Errors: 647, Packet length 5952, Percent: 10.870 %
    Errors: 742, Packet length 5952, Percent: 12.466 %
    Errors: 523, Packet length 5952, Percent: 8.787 %
    Errors: 3, Packet length 5952, Percent: 0.050 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 309, Packet length 5952, Percent: 5.192 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 4, Packet length 5952, Percent: 0.067 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 14, Packet length 5952, Percent: 0.235 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 4, Packet length 5952, Percent: 0.067 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 16, Packet length 5952, Percent: 0.269 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 10, Packet length 5952, Percent: 0.168 %
    Errors: 2161, Packet length 5952, Percent: 36.307 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 43, Packet length 5952, Percent: 0.722 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 4, Packet length 5952, Percent: 0.067 %
    Errors: 145, Packet length 5952, Percent: 2.436 %
    Errors: 36, Packet length 5952, Percent: 0.605 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 366, Packet length 5952, Percent: 6.149 %
    Errors: 24, Packet length 5952, Percent: 0.403 %
    Errors: 38, Packet length 5952, Percent: 0.638 %
    Errors: 740, Packet length 5952, Percent: 12.433 %
    Errors: 31, Packet length 5952, Percent: 0.521 %
    Errors: 24, Packet length 5952, Percent: 0.403 %
    Errors: 12, Packet length 5952, Percent: 0.202 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 14, Packet length 5952, Percent: 0.235 %
    Errors: 34, Packet length 5952, Percent: 0.571 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 3, Packet length 5952, Percent: 0.050 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 59, Packet length 5952, Percent: 0.991 %
    Errors: 8, Packet length 5952, Percent: 0.134 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 172, Packet length 5952, Percent: 2.890 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 4, Packet length 5952, Percent: 0.067 %
    Errors: 10, Packet length 5952, Percent: 0.168 %
    Errors: 3, Packet length 5952, Percent: 0.050 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 3, Packet length 5952, Percent: 0.050 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 41, Packet length 5952, Percent: 0.689 %
    Errors: 28, Packet length 5952, Percent: 0.470 %
    Errors: 10, Packet length 5952, Percent: 0.168 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 8, Packet length 5952, Percent: 0.134 %
    Errors: 58, Packet length 5952, Percent: 0.974 %
    Errors: 17, Packet length 5952, Percent: 0.286 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 195, Packet length 5952, Percent: 3.276 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 7, Packet length 5952, Percent: 0.118 %
    Errors: 95, Packet length 5952, Percent: 1.596 %
    Errors: 5, Packet length 5952, Percent: 0.084 %
    Errors: 1, Packet length 5952, Percent: 0.017 %
    Errors: 8, Packet length 5952, Percent: 0.134 %
    Errors: 6, Packet length 5952, Percent: 0.101 %
    Errors: 39, Packet length 5952, Percent: 0.655 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 2, Packet length 5952, Percent: 0.034 %
    Errors: 3, Packet length 5952, Percent: 0.050 %

     

     

    Характер ошибок: искажения отдельных бит.

    Например: должен быть принят байт 0x11, а на деле принято: 0x01.  Или - должен 0x13, принят: 0x53

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