• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение MT7688AN HLK-7688A

pvvx

Активный участник сообщества
Ну если это был Ваш бред, тогда вопрос снимаю.
Вы уж в дальнейшем сразу пишите - что про человечество вы пишите в бреду.
В бытовой сфере вам встречалось такое S.M.A.R.T.?
А так-же на любом устройстве в Linux ведется статистика...
В авто, в контроллерах - аналогично. В смартфоне...
И во всех устройствах, кроме Arduino и ваших поделок.
 

nikolz

Well-known member
В бытовой сфере вам встречалось такое S.M.A.R.T.?
А так-же на любом устройстве в Linux ведется статистика...
В авто, в контроллерах - аналогично. В смартфоне...
И во всех устройствах, кроме Arduino и ваших поделок.
тоже бред?
Я Вас просил дать ссылку чтобы удостоверится что ваше высказывание цитата:
"Открывайте выведенные человечеством требования к любому датчику, хоть концевика открытия двери"
не является Вашим вымыслом.
возможно человечество - это Вы?
ну тогда все ясно - это не бред это шизофрения какая-то.
 

pvvx

Активный участник сообщества
тоже бред?
Я Вас просил дать ссылку чтобы удостоверится что ваше высказывание цитата:
"Открывайте выведенные человечеством требования к любому датчику, хоть концевика открытия двери"
не является Вашим вымыслом.
возможно человечество - это Вы?
ну тогда все ясно - это не бред это шизофрения какая-то.
Для вас обучение платное. Тарифы возможно согласовать в личке. После перевода средств я найму тех.редактора и с ним подготовим желаемую для вас статью с ссылками и примерами из производственной практики. Мне не до этого и я не Гуру (не учитель) и не писатель статей для не имеющих практики проф. работы в сфере электроники. Уж слишком большой разрыв и нет никакого желания посвящать своё время не желающим разобраться самим (и нет желаний выращивать конкурентоспособных)
Т.е. оставайтесь в своих бытовушных/Arduino реалиях…
 

nikolz

Well-known member
Для вас обучение платное. Тарифы возможно согласовать в личке. После перевода средств я найму тех.редактора и с ним подготовим желаемую для вас статью с ссылками и примерами из производственной практики. Мне не до этого и я не Гуру (не учитель) и не писатель статей для не имеющих практики проф. работы в сфере электроники. Уж слишком большой разрыв и нет никакого желания посвящать своё время не желающим разобраться самим (и нет желаний выращивать конкурентоспособных)
Т.е. оставайтесь в своих бытовушных/Arduino реалиях…
т е согласны, что чушь спороли.
 

pvvx

Активный участник сообщества
@nikolz - ага - пор вашему ответу четко понятно, что у вас нет средств и возможностей...
Ну а для для “реабилитации” (для более продвинутых) я могу немного нарушить “принятые истины и понятия добра со злом у разным групп” –

Без диагностики ничего пром. не делается. Понятие “промышленное” у всех разное, как и положено, но тут форум для обывателей и домохозяек, т.е. эксплуатируемых, коим вы и ваши дети и являетесь... Между текущим расслоением пока ещё есть прослойка “государство”, которое и выписывает некоторые застойные требования. Но в России они уже менее повязаны для вашей группы :p. Ну а далее я не буду тут распространяться, т.к. это на вашем уровне “осмыслять” уже не требуется и вы опять начнете орать о чем-то своем, да на своем непереводимом сленге и не о техническом. :p

Давайте сохраним нейтралитет по типу “каждому своё” и не будем создавать ситуации для закрытия форума РКН, заботящегося о вашем информационной "безопасности" :) :).
 

sharikov

Active member
И в этом их беда.
Виснут, т.к. не могут перезагрузиться. По RST входу или WDT, т.е. по любому сбою.
Не верно выставляются CS1 и прочие уровни, говорящие в каком режиме находится SPI Flash - в 3-х байтной или 4-х байтной адресации для firmaware чипа.
Тем самым Uboot не грузится и чип виснет до передергивания питания...
На HLK-7688A, Omega2+ и всех c чипами 32МБ проблемка частично исправима если SPI Flash принять за 16МБ, т.е. никогда не переключать на 4-х байтную адресацию и забыть о второй половине...
Все другие варианты не имеют гарантию от зависания...
Чтобы не висло нельзя переключать режим адресации flash. Всегда работать в том режиме который задан уровнями ножек. Один из вариантов вы описали - пожертвовать половиной памяти и работать только с 16Mb.
Я для HLK7688A применил другой вариант - работать только в 4-х байтном режиме. В моих модулях установлена память Winbond W25Q256FV у нее есть энергонезависимый бит переключения дефолтной адресации 3 или 4 бита. Я его запрограммировал для работы с 4-х битной адресацией и пинами задал 4-х битный режим модулю. Свежий openwrt это поддерживает и не переключает адресацию. Итог: ничего не виснет, все перезагружается и по RST и по ватчдогу.

Но универсального решения проблемы 3/4 байтной адресации для произвольного типа флэш не существует. Некоторые типы флэш в принципе нельзя заставить работать надежно например MX25L25635E (именно с буквой E!)
 

pvvx

Активный участник сообщества
Но универсального решения проблемы 3/4 байтной адресации для произвольного типа флэш не существует.
Т.е. беда в самом чипе, в его стартовой (OTP?) прошивке - не переключает Flash на нужный режим (и нет спецификации поддерживаемых Flash).
 

pvvx

Активный участник сообщества
Вопрос:

Насколько стабильна текущая OpenWRT c её сохранениями конфигов в SPI-Flash?

Я пока не проводил тестов на стабильность модулей c MT7688. Но возможно, что кто-то уже делал тесты и поделится?

Типа если выключать питание в момент записи (да и вообще постоянно дергать модулю питание для теста по рандом в течении недели/месяца во время активных смен конфигов)? Будут ли сбои? Возвраты к default настройкам так-же можно считать сбоем, т.к. система выпадет из рабочей обстановки и потребует внешнего вмешательства, что в некоторых случаях неприемлемо (или дорого).

Если в текущей системе OpenWRT нет стабильности у системы сохранения и изменения конфигурации, то придется лепить свою – в этом и вопрос – надо или не надо / стоит или нет заморачиваться?

Нигде не встречал расчетов размера mtd для сохранений от кол-ва изменений и описания реакции при неуспешных записях на “стандарте” (в базовой системе OpenWRT, без установок специфичных файловых систем, без доп. носителей и т.д.).

Сложностей в своей системе конфигов не много, но надо время на перевод и адаптацию – переписать почти все базовые скрпипты и без ошибок :(```
 

sharikov

Active member
Т.е. беда в самом чипе, в его стартовой (OTP?) прошивке - не переключает Flash на нужный режим (и нет спецификации поддерживаемых Flash).
Разруха как обычно в головах.
1) Процессор не выполняет сброс или инициализацию флэш. Вообще там по моему аппартная магия которая на старте маппит флэш в адресное пространство. И никакого ROM в mt7688 вовсе нет.
2) Китайцы при разводке модулей не разводят сигнал reset на чип флэш памяти
3) Устанавливают память произвольных типов и производителей не задумываясь о совместимости
1+2+3 = fail!

Если все пункты учитывать то ничего не виснет.

--
Кстати не только mediatek наступил на эти грабли. Allwinner страдает тем же: линукс после загрузки переводит emmc в высокоскоростной режим и при жестком ребуте (wd или rst) без снятия питания ROM не может прочесть boot0 из памяти и система благополучно виснет). Olimex сдался и прилепил маленькую spi flash для загрузки. Мы подбираем emmc (некоторые типы все таки работают).
 

sharikov

Active member
Насколько стабильна текущая OpenWRT c её сохранениями конфигов в SPI-Flash?
Я пока не проводил тестов на стабильность модулей c MT7688. Но возможно, что кто-то уже делал тесты и поделится?
Типа если выключать питание в момент записи (да и вообще постоянно дергать модулю питание для теста по рандом в течении недели/месяца во время активных смен конфигов)? Будут ли сбои?
Ответ очевиден: если дергать питание в момент записи во флэш сбои БУДУТ!
Сама по себе система openwrt стабильна. Правда вызывает недоумение их подход с оверлейной фс. В "боевом" изделии самопроизвольный возврат к default = отказ. Наверно это под роутеры для тупиц сделано. Поэтому я бы выкинул разделение разделов на RO и RW.
JFFS2 на NOR флэш работает вполне стабильно чтобы rootfs размещать в ней напрямую.
 

pvvx

Активный участник сообщества
Разруха как обычно в головах.
1) Процессор не выполняет сброс или инициализацию флэш. Вообще там по моему аппартная магия которая на старте маппит флэш в адресное пространство. И никакого ROM в mt7688 вовсе нет.
У меня нет контракта с Meaditek -> нет полной документации. Есть только предположения, что CPU грузится не только с SPI-Flash, а для этого проще слепить какую малую ROM...
2) Китайцы при разводке модулей не разводят сигнал reset на чип флэш памяти
От него может быть мало толку. Доп. сигналы на SPI Flash воспринимаются в определенных условиях, да и у разных производителей могут отличаться. По этому и написал - Mediatek необходимо было указать какие типы совместимы, на том вопросы были бы исчерпаны, как и ваш п.п. 3. Ну типа кто-то не хочет соблюдать и пихает самое г... Тогда это его беда и зная это никто, кроме Ардуинщиков не купит.
 

pvvx

Активный участник сообщества
Ответ очевиден: если дергать питание в момент записи во флэш сбои БУДУТ!
Сама по себе система openwrt стабильна. Правда вызывает недоумение их подход с оверлейной фс. В "боевом" изделии самопроизвольный возврат к default = отказ. Наверно это под роутеры для тупиц сделано. Поэтому я бы выкинул разделение разделов на RO и RW.
JFFS2 на NOR флэш работает вполне стабильно чтобы rootfs размещать в ней напрямую.
В старых версиях, да в роутерах, никаких jffs2 нет. Там тупенько - заведен раздел mtd на один блок стирания и в него пишут переменные, в текстовом виде :). Если во время записи произошло что-то, что не читается первые 3 байта ID в этом разделе, то берутся переменные из /etc/.... файла. Спасает это дело только то, что запись переменных редкая и короткая по времени.
В новых версиях OpenWRT (да и давно уже), тупо пишут всё в RW раздел, ожидая что jffs2 их спасет если что. Но всякие зависимости переменных в разных файлах не проверяются, как и последовательность их записи.
А переписывать всё - дурное дело, т.к. на отладку этого бардака, да и в исключительных специальных ситуациях, уйдет много времени... Видать и в OpenWRT внедрилось поколение Arduino.

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

pvvx

Активный участник сообщества
... Система напрямую к этому файлу не обращается - для этого есть свой внутренний интерфейс, что так-же обеспечивает полный синхро всех переменных в run-time...
 

sharikov

Active member
В новых версиях OpenWRT (да и давно уже), тупо пишут всё в RW раздел, ожидая что jffs2 их спасет если что. Но всякие зависимости переменных в разных файлах не проверяются, как и последовательность их записи.
Система состоит из сотен (или уже тысяч?) независимых пакетов. Единый конфиг для всех это фантастика. В винде MS сделала общий реестр - с ним тоже проблем вагон.
Просто никто не создает "тяжелое" ПО в расчете на то что в момент записи выключат питание. Это авария.

Последнее, самое простое решение у меня вышло так - создаем раздел jffs2 на пару мегабайт и в него пишем общий и единый конфиг. Единый - значит синхронный, что спасает от зависимостей.
У такого решения тоже есть недостатки. Единый - значит большой. Большой - плохо. Маленький раздел jffs2 - плохо. Ему нужно свободное место (чем больше тем лучше) для выравнивания износа . И самое главное: единый конфиг можно сделать только когда разработчик всего один.
 

pvvx

Активный участник сообщества
Система состоит из сотен (или уже тысяч?) независимых пакетов. Единый конфиг для всех это фантастика. В винде MS сделала общий реестр - с ним тоже проблем вагон.
Реестр в винде и есть аналог. Не зря же выбрали такой вариант...
У такого решения тоже есть недостатки. Единый - значит большой. Большой - плохо. Маленький раздел jffs2 - плохо. Ему нужно свободное место (чем больше тем лучше) для выравнивания износа . И самое главное: единый конфиг можно сделать только когда разработчик всего один.
Вашу личную плату с убогеньким MT7688 настраивает и использует сотня человек? Типа комп на все случаи жизни? :) :)
По практике в таких платках работает не более 3-х 4-х приложений, да и то они разнесены на раздельные из-за того что их лень объединить в один исполняемый файл. Все остальные мелкие сервисные скрипты заняты раскручиванием и закручиванием зоопарка конфигов. Вам и кажется что у вас тысячи "независимых пакетов" смысл которых поменять пару переменных для одного основного процесса.
 

pvvx

Активный участник сообщества
.. Приглядитесь к явным ограничениям у устройств типа с MT7688. Это 16 МБ Flash, что значит там сидит kernel с максимумом до десятка рабочих утилит. И то они сконфигурированы жестко, по требуемой структуре устройства и не предполагают каких-либо изменений в процессе эксплуатации. Меняется, и то на 2 – 3 варианта, конфигурация сетевых связей, что полностью обеспечивается не более 30 строчками переменных. Остальная конфигурация уже специфична для основного рабочего сервиса-процессов. Типа пароли пользователей и какие-то внешние привязки, да опции процесса…

А итого имеем до сотни строк всех изменяемых переменных. Да и в реальной жизни этой системы там будет изменяться не более десятка.

По имеющейся практике такой “реестр” влезает в сжатом виде Jffs2 в два сектора Flash и раздела на 2МБ ему дофига. В итого его можно переписать 1000*100000 раз без беспокойств о Flash. А переписывается данный “реестр” по спец. алгоритму отслеживающему, что без перезаписи не обойтись, да и проверку эту он ведет только когда есть изменения...
 

pvvx

Активный участник сообщества
... Есть любители все внутренние переменные программы загнать во её внешний конфиг :) Не проще ли тогда им вместо конфига юзать исходник (хидер) на СИ и транслировать каждый раз в исполняемый бинарный файл :) Сейчас скрипты и конфиги идут по такому пути…

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

pvvx

Активный участник сообщества
comp2.jpg
Вот блин:
Openwrtch.gif
Прошито чем-то китайским... А музыки нет :)
 

pvvx

Активный участник сообщества
Ндас, прошивочка:
U-Boot 1.1.3 (Mar 4 2017 - 16:37:55) ---- Board: Ralink APSoC DRAM: 128 MB
...

Ralink UBoot Version: 4.3.0.0 --- Total memory: 128 MBytes
...
SDK 5.0.S.0
[ 0.000000] Linux version 3.10.14 (root@ubuntu) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 unknown) ) #42 Mon Feb 18 16:05:35 CST 2019
[ 0.000000] Memory: 61084k/65536k available (2741k kernel code, 4408k reserved, 688k data, 216k init, 0k highmem)

Где китайцы ещё 64MiB заныкали...
 
Сверху Снизу