Opened 5 months ago

Last modified 5 months ago

#704 assigned баг

Странное поведение резервирования потоков E1 платой SW-01

Reported by: alx Owned by: anatoly
Priority: средний Milestone: 1 очередь
Component: ПЛИС (sw) Keywords:
Cc:

Description

В плате SW-01 я столкнулся со странным поведением функции резервирования потоков E1. В результате экспериментов обнаружено сразу много странностей. Опишу эксперименты по порядку.

Исходное состояние: в ПЛИС загружена прошивка версии 12, потокам 5E1 и 6E1 настройки СУВ установлены в значения "выкл" и "abcd".

  1. Поток 6E1 настраивается резервным для потока 5E1, в строке "Активировать при" отмечен только чекбокс "СЦС", также отмечен чекбокс "Возвращаться на основной поток", параметр "Таймаут возврата на основной" установлен в значение 50 секунд.

Результаты эксперимента:

  • бит 0 регистра 0x124 ПЛИС равен единице, что означает аварию СЦС основного потока, хотя такой аварии нет - в регистре 0x103 ПЛИС бит 4 равен нулю. Ожидалось, что бит 0 регистра 0x124 будет возвращать то же значение, что и бит 4 регистра 0x103, так как основным потоком назначен 5E1.
  • бит 4 регистра 0x124 ПЛИС равен единице, что означает аварию СЦС резервного потока, хотя такой аварии нет - в регистре 0x103 ПЛИС бит 5 равен нулю. Ожидалось, что бит 4 регистра 0x124 будет возвращать то же значение, что и бит 5 регистра 0x103, так как резервным потоком назначен 6E1.
  • бит 4 регистра 0x124 ПЛИС периодически меняет свое значение с 0 на единицу и обратно, что означает переходы с основного потока на резервный и обратно (активацию/деактивацию резерного потока). Ожидалось, что резервный поток никогда не будет активирован, так как, во-первых, у потока 5E1 нет аварии СЦС, во-вторых, если учесть, что схема резервирования почему-то ложно считает, что авария есть, резервный поток все равно не должен был быть активирован, так как он точно так же имеет (ложную) аварию, а, согласно РЭ блока MC04-DSL-3U, если резервный поток в аварии, он не активируется.
  • время активности резервного потока составляло единицы секунд (обычно 2-3 секунды). Ожидалось, что время активности резервного потока не будет меньше 50 секунд, так как параметр "Таймаут возврата на основной" установлен в значение 50 секунд.

Вот результат чтения регистров ПЛИС 0x103 и 0x124 (чтение выполнялось с интервалами около 1 секунды):

root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 19
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 19
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 00
0x0000: 00 00 00 00 11
  1. Настройка СУВ потока 5E1 установлена в значение "КИ16". В результате у потока 5E1 появилась авария СЦС - бит 4 регистра 0x103 стал единицей (что правильно), однако в работе резервирования ничего не изменилось. Вот результат чтения регистров ПЛИС 0x103 и 0x124 (чтение также выполнялось с интервалами около 1 секунды):
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 19
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 11
root@sw01:~# spictl 01 03 00 00 00; spictl 01 24 00 00 00
0x0000: 00 00 00 a0 10
0x0000: 00 00 00 00 11

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

Конфигурация резервирования была прочитана из ПЛИС, и она соответствует ожидаемой:

root@sw01:~# spictl 1 20 0 0 0
0x0000: 00 00 00 04 00
root@sw01:~# spictl 1 21 0 0 0
0x0000: 00 00 00 05 00
root@sw01:~# spictl 1 22 0 0 0
0x0000: 00 00 00 01 00
root@sw01:~# spictl 1 23 0 0 0
0x0000: 00 00 00 32 00
  1. Режим СУВ 5E1 вернул в значение "выкл", в ПЛИС "на ходу" загрузил прошивку версии 13.

Результат: первое время (около 30 секунд, специально не измерял) видел в веб-интерфейсе, как резервный тракт несколько раз поменял состояние (активировался/деактивировался), после чего "застрял" в активированном состоянии.

  1. В ПЛИС "на ходу" загрузил прошивку версии 12.

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

Судя по описанным наблюдениям, различий в поведении прошивок версий 12 и 13 нет. Отличия результатов экспериментов 3 и 4 от эксперимента 1 вероятно как-то связаны с тем, что прошивка ПЛИС менялась "на ходу". Я попробую воспроизвести первоначальное поведение и по результатам дополню тикет.

Предлагаю попробовать выяснить причины неправильного поведения ПЛИС и устранить их.

Change History (1)

in reply to:  description comment:1 by alx, 5 months ago

Replying to alx:

Я попробую воспроизвести первоначальное поведение и по результатам дополню тикет.

Дополняю.

ПЛИС версии 12, резервный поток "залип" в активном состоянии. Отключил резервирование потока 6E1, а затем снова включил. В результате эксперимент 1 сразу воспроизвелся - поток переключался туда-сюда и не "залипал" в одном состоянии.

Произвел еще несколько раз переконфигурирование ПЛИС версии 13. Каждый раз первоначальный эксперимент сразу воспроизводился - резервный тракт постоянно переключался тудя-сюда, в одном состоянии больше не "залипал". Без каких-либо дополнительных действий.

Last edited 5 months ago by alx (previous) (diff)
Note: See TracTickets for help on using tickets.