Показать сообщение отдельно
Старый 04.08.2021, 17:05   #63
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили: 38 раз(а) в 30 сообщениях
По умолчанию Ответ: Восстановление контроллера Matrix

В продолжение темы Trim 5 не переводится в режим программирования.

У меня тоже возникла ошибка форматирования, стал разбираться, что там могло пойти не так.

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







Вот, как выглядит проблема со стороны контроллера:

Код:
U-Boot SPL 2013.10-svn118115 (Jul 05 2021 - 14:29:56)
Set dpll freq to 400MHz
mtrx platform(): true
Trying to enable RTC32K...
RTC32K enabled.
SDRAM init (400MHz)
sleep 5s
Switch to 1GHz
Using default environment

usb_ether
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 40:2e:71:f8:99:16
HOST MAC de:ad:be:af:00:00
RNDIS ready
musb-hdrc: peripheral reset irq lost!
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
USB RNDIS network up!
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
Using usb_ether device
TFTP from server 192.168.111.1; our IP address is 192.168.111.2
Filename 'u-boot-restore.img'.
Load address: 0x807fffc0
Loading: T T T
TFTP error: 'Timeout' (0)
Starting again

using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 40:2e:71:f8:99:16
HOST MAC de:ad:be:af:00:00
RNDIS ready
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
USB RNDIS network up!
Сразу забегая вперед и не томя, нашел, что проблему можно решить правкой файла "C:\Program Files (x86)\SMLogix\tftp.ini".

Параметр "blksize=65464" можно заменить на "blksize=512" или "blksize=1372".

С параметром "blksize=512" обновление у меня заняло 5 минут, а с параметром "blksize=1372" обновление длилось 3 минуты 42 секунды.

Что могло пойти не так

Оттрассировав TFTP-запросы SPL-загрузчика заметил, что контроллер предлагает передавать файл u-boot-restore.img блоками по 1468 байт, а TFTP-сервер с настройками по умолчанию этому и не сопротивляется.



Параметры сетевого интерфейса со стороны Windows дают настройку MTU в 1404 байт.

Код:
>netsh interface ipv4 show subinterfaces

   MTU  Состояние определения носителя   Вх. байт  Исх. байт  Интерфейс
------  ---------------  ---------  ---------  -------------
  1404                1       8851      22766  Ethernet 9
Это означает, что передача файла блоками 1468 байт требует MTU, равную 1468 + 4 + 28 = 1500 байт. В противном случае, происходит фрагментация пакета.

В итоге, в лучшем случае это приводит к неэффективной (более длительной) передаче данных, а в худшем, передача просто не работает. Есть предположение (не стал глубоко копать), что SPL-загрузчик, имеющий упрощенный IP-стек, просто не понимает фрагментированные пакеты.

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

В решении выше, значение "blksize=1372" получается, как 1372 = 1404 - 28 - 4. Специально проверил, если поставить большее значение, "blksize=1373", то загрузка не происходит.
Изображения
Тип файла: png s1.png (2.4 Кбайт, 226 просмотров)
Тип файла: png s2.png (1.9 Кбайт, 228 просмотров)
Тип файла: png serr.png (3.8 Кбайт, 407 просмотров)
Тип файла: png neg.png (5.3 Кбайт, 237 просмотров)
Gel вне форума   Ответить с цитированием
4 благодарности(ей) от: