Новые ревизии модулей на базе ESP8266 не умеют писать в SPI Flash


    На фото справа — виновник торжества, микросхема PUYA P25Q80

    Китайские поставщики начали использовать микросхему flash-памяти производства PUYA. Это привело к поломке драйверов SPIFFS, которые обычно используюся для сохранения настроек в модулях ESP8266. Пострадали многие проекты. Решения пока нет.


    Сегодня утром я начал с рутинной операции по прошиванию очередной партии модулей ввода-вывода IO-Node. Сердцем устройства является модуль ESP-07. Ничего не предвещало беды.

    Первый модуль прошился, запустился, пустил в веб-интерфейс. Два релейных выхода и дискретные входа заработали сразу. Однако при попытке поиска подключенных 1-wire датчиков температуры произошло нечто странное. IO-Node отрапортовал о том, что найден один датчик и завис.



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

    Подумав, что попался сбойный модуль ESP-07, я взялся за прошивку следующей платы. Каково же было мое удивление, когда и следующая плата вела себя точно так же. Очевидно, что это не было совпадение.

    Начав отлаживать код прошивки, я обнаружил что не работает SPIFFS — драйвер файловой системы, который мы используем для хранения настроек.

    Поиск в гугле показал, что это весьма новая проблема, которая появилась буквально в начале января. Обсужения есть тут и тут.

    Суть проблемы в том, что китайцы стали применять новую микросхему флеш-памяти PUYA P25Q80 (см. первую фото). Эта микросхема работает не совсем так, как предыдущие микросхемы производства Winbond и прочие.

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

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

    Что делать?

    На текущий момент мы, как и другие пользователи ESP8266, заменяем PUYA на микросхемы производства Winbond. С ними такой проблемы нет. И ожидаем развития ситуации — вдруг появится программный патч. В долгосрочной перспективе мы или выпустим свой модуль или разведем все эти микросхемы на нашей «материнской» плате что бы держать эту ситуацию под контролем.

    Неудобно, что при покупке модулей неизвестно что вам продадут — микросхема скрыта под металлическим экраном и визуально недоступна.

    Комментарии 67

      0
      У микросхемы есть ID, по которому можно определить тип из прошивки.
        +4
        Из прошивки можно. А как это сделать при покупке?
          0
          правильный поставщик решит проблему :) хотя судя по обсуждениям winbond снята с производства и ориентироваться на нее бесполезно. Вообще судя по даташиту даже winbond пишет только страницами по 256 байт и стирает по 4к. Поэтому может выделить под конфиги страницу или сектор и переписывать полностью. А еще посмотреть прошивку которая к радио относитчя, может она занимает больше места и пытаетесь писать поверх нее, если адресация абсолютная. ЗЫ: с ESP не работал, нюансов не знаю, а для флэши вообще чтение ID перед работой с ней — must have.
            0
            Эээээ. Не понял. Это же eeprom, а не флеш — там нет блоков — запись в произвольное место от одного байта. Последовательная запись блока до 32 байт сделана исключительно для удобства пользователей.
              +2
              А, затупил — это же flash. Просто автор раз 10 повторил, что это eeprom и я некритически это прочитал. Автор — поправь — речь о flash, а не о eeprom.
                0
                Исправил
              0
              Winbond позволяет писать от 1 до 256 байт за раз(Program one to 256 bytes).
              Более того, отлично работает запись(сброс нужных бит) поверх без стирания, по крайне мере на W25Q64FV проблем нет.
          +2
          я правильно понимаю, что весь плач Ярославны заключается в том, что один (из кучи) поставщиков ради снижения цены стал ставить дешевый китайский spi-flash, драйверов для которой (ибо команды записи не совпадают с Winbond) ПОКА нет в esp-sdk от Espressif? и ПОКА НИКТО не написал и апстримил их в esp-sdk.
            +3
            Бегло пробежался по даташиту — вроде все команды совпадают. Скорее всего где-то косячная реализация у китйцев — так бывает. Либо разрабы библиотеки где-то накосячили по принципу «и так работает — сойдёт»
              +5
              а они сидят на попе ровно и ждут пока кто-то за них всё напишет, чтобы их КОММЕРЧЕСКИЙ дальше продавался?
              щикарно… ардуино головного мозга… «если это никем не написано — значит это невозможно»
                +3
                У нас на одном хакатоне одна команда так датчики выбирала. Взяли у организаторов датчик, скачали либу для ардуины, залили, включили — не работает, выключили, пошли к организаторам просить датчик другой модели…

                Впрочем, это хоть школьники были. Они на выпуск коммерческого продукта не претендовали.
            +9
            Вы уж простите за занудство. НО. ESP8266 — микросхема. И по-прежнему может писать в _нормальные_ еепром, а не в неведомую поделку которую распаяли в том подвале где вы купили _модули_ на базе ESP8266.
            А то я уж почти испугался.
              +3
              Она и в «не нормальные» умеет писать, не хуже, если поправить драйвера. =)
              +2
              Новые ревизии ESP8266 не умеют писать в EEPROM

              Пугающий заголовок, но по приведенным линкам пишут что не некорректно работает SPIFFS, под адурино иде...

                0
                del
                +11
                Андруино головного мозга в полной красе. Шаг в сторону — все. Ну туда вам и дорога, тащемта.
                  0
                  При чём тут Arduino IDE? Речь про саму SPIFFS была. У автора топика проблемы работы с SPIFFS только.
                  Похоже на хвосты в самом SDK.
                    +1
                    А ни при чем. Это общая болезнь такая. Некий сферический ПТУ-шник в вакуме смекает, что можно взять этот модуль, соединить тремя проводами к тому модулю, консультнуться с приятелем осилившим таки институт на тему питальника и забацать ПРОДУКТ! При этом как и что там работает — его не касается. Ну и все, бизнес готов, хуяк хуяк и в продакшен.
                    +3
                    Вы понимаете, что людям нужно с чего-то начинать? Человек взял доступные инструменты и сделал продукт. Главное конечный результат, а не степерь ебли при производстве. Чем больше будет таких «бизнесов» и продуктов, тем быстрее в стране будет развиваться микроэлектроника. Даже если 100 таких стартапов вырастет один хороший производитель — уже круто. Отвратительное комьюнити у микроэлектронщиков. Кто-то пытается сделать рабочий девайс, задаёт вопрос и набегает «илита» с воплями, что микруху в LQFP надо было самому паяльником распаивать или не мужик. Помогайте друг другу, развивайте свою область!
                      0
                      Понимаю. Например, с физики и транзисторов. Лампы ладно, опустим, для простоты (хотя хороший специалист один фиг к ним вернется потом). Постепенно переходя на микросхемы мелкой логики. Ну а потом — как душа ляжет, можно с восьмибиток начать, а можно и сразу ARM-ы. Лучше все-же с какого-нибудь доистора, где самому лапками на SPI дергать надо. Это даст некое прозрение, хотя бы по этому интерфейсу. И, да, LQFP надо самому паяльником паять — тем более, что ничего сложного в этом нет. Я запаяю, например, 100 ватным совковым паяльником ее с огроменным жалом, ваще без проблем. 1 минута максимум. Насчет помощи — вы серьезно? Я понимаю, если бы человек 1 штуку для себя с огорода температуру мерять сделал — да фигли бы и не помочь. А тут вроде как они ЭТО продают. Вы то я смотрю много помогаете, может и нам поможете одну прошивочку для нашего устройства написать? Ну так, по дружески, чиста.
                        +1
                        100 ватным совковым паяльником ее с огроменным жалом
                        Забавно, но мало кто понимает, что это проще, чем «иглой».
                          0
                          А тут вроде как они ЭТО продают.

                          Да, продаем. Ваше эго взбунтовалось от сего факта? Внутренний перфекционист не может спать спокойно с этой мыслью? Нет проблем — сделайте свое «идеальное устройство» и продавайте вместо нас. Делов-то — рынок рассудит.

                          У нас, к сожалению, нет 100-ваттного совкового паяльника. Поэтому мы даже и не пробуем паять им все подряд. Всё стараемся использовать инструменты чуть посвежее да и просто адекватные задачам. Но это не мешает нам решать проблемы клиентов вместо того, что бы меряться своим самомнением с коллегами или конкурентами.

                          Наше устройство было создано для решения насущной проблемы — «измерить температуру еще вооон на том столбе в цеху куда провод протянуть ну очень сложно и дорого». И IO-Node ее отлично решает. Альтернатив ему на рынку как не было так и нет. Поэтому сделали свое устройство. Сначала для себя, на макетке. А потом уже оформили в виде готового изделия и стали предлагать клиентам как сопутствующий товар. Они периодически покупают.

                          Думаете, главному инженеру пекарни сильно интересно на чем написана прошивка в датчике температуры — на С/Arduino/Ассемблере? Открою секрет: нет. Это интересно только инженерам-занудам, у которых в резюме есть такие слова.

                          Клиента интересует непрерывность производственных процессов и поддержка. Устройство должно работать 24/7/365 и без сюрпризов т.к. простои могут стоить чудовищных денег. А готовый модуль там на плате или LQFP напаянный утюгом суровыми русскими мужиками — никого в этом мире не волнует.

                          Наш IO-Node работает 24/7/365 с непрерывным аптаймом? Да! Код вылизан, проверен временем и стабилен, обеспечивает непрерывность процессов клиента.

                          Само устройство идеально? Нет, конечно. Мы это понимаем. Можно улучшать и переделывать до бесконечности. Но, учитывая узкую его специализацию и небольшие тиражи, смысла в этом не видим — есть чем заниматься помимо этого.
                            0
                            и поддержка


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

                              Вашу бы энергию, да в мирное русло… Банально теряете $500/час читая все эти комментарии. Не обидно ли?
                                0
                                1) отрицание
                                2) гнев
                                == вы находитесь здесь ==
                                3) торг
                                4) депрессия
                                5) принятие
                            0
                            > Вы то я смотрю много помогаете, может и нам поможете одну прошивочку для нашего устройства написать?

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

                            Да, отвратительное комьюнити у микроэлектронщиков.
                              –1
                              Какое комьюнити, о чем вы говорите?

                              Тут собралась «элита», которая якобы могла бы «одной левой ногой» исправить столь «мелкий» баг. Но вместо этого пятый день поливает друг друга сами видите чем.
                                +1
                                Ну, из можно понять, пол жизни учил физику, транзисторы, лампы, восьмибитки и ARM, дергаешь за SPI… И вот ты элита… А потом приходят люди и без подготовки на ардуине с библиотекой делают всякое, и оно вроде даже работает.

                                Конечно пригорает.
                                  0
                                  А я плюс вам ставлю, за коммент и в карму.
                                  и оно вроде даже работает

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

                                    А тот дополнительный сервис, который вы можете предложить… Он дополнительный.

                                    > Обвиняете «элиту», что она вам чего-то не помогает нахаляву ваш продукт продавать?)

                                    Ну я не обвинял, а товарищ предлагал оплатить. Ну может нет у него такого бюджета — не знаю.
                                      +1
                                      В первую очередь это говорит о том, что они не знают, как работает железо, из которого они строят свой продукт. Остальное уже нюансы.
                                        0
                                        Мне кажется это вас беспокоит больше, чем их или их клиентов.
                                    +1
                                    А ладно, отвечу более развернуто. Понимаете в чем дело, когда вы создаете свой девайс, можно пойти разными путями. Первый — как эти ребята. Второй — на элементах мелкой интеграции, с полностью своим кодом и элементной базой. Вполне возможно, что стоить это будет немного больше, в частности человеко-часы программиста, пишущего по сути велосипеды. Человеко-часы схемотехника, по сути на мелкой логике изобретающего велосипеды. Но при этом в будущем, если вдруг ВНЕЗАПНО вам не поставят, например, используемые контроллеры, вы сможете в кратчайшие сроки уйти на другую архитектуру вообще. Например с STM32 на NXP, или наоборот. Поставщики кинули с еще какой комплектухой — да не вопрос, поставим другой DC-DC, вон у нас под него посадочное место торчит. Или вообще плату переразведем по схеме в течении дня. Потому что вся БАЗА нашего устройства находится у нас. Хотим — сейчас так. Завтра не сраслось? Да можем вот так. А еще 100500 способами.
                                    А что можете вы, с этим черным ящиком? Ну хвала богам, хоть сорцы открыты. Вы не можете пару строк в сорце поменять в течении уже, э, недели? Обвиняете «элиту», что она вам чего-то не помогает нахаляву ваш продукт продавать? Ну в треде же были конкретные предложения — 1000$ и день работы. Жалко платить деньги?
                              +1
                              Чем больше будет таких «бизнесов» и продуктов, тем быстрее в стране будет развиваться микроэлектроника.


                              Ну это конечно лучше, чем пивас на лавочке глушить, но не многим. Что будет конкретно у нас развиваться? Производство чего? Плат? Ну резонит кое-как клепает не сложные по технормам у нас в стране. А что еще у нас по вашему будет развиваться с таким бизнесом? Пайка модулей на плату? Ну тоже есть конторы, тот же резонит. Паяют худо-бедно. Да и другие тоже паяют. Но они давно платы делают и паяют. Развились уже. Дальше какое развитие с такими продуктами?
                                0
                                Пресловутый лифт на ардуине гораздо ближе чем хочется. Как по мне, гораздо лучше на взлете надавать по рукам чтобы делали как положено, а не библиотечки перебирали и ожидали когда добрый дядя подправит.
                                  0
                                  Вы правда думаете, что сможете каждому ардуинщику надавать по рукам?
                              +1
                              Не по теме, но можно поинтересоваться что за плата и что делает? :) И что за клемники?
                                +1
                                Этот модуль собирает показания температур с датчиков 1-Wire (до 32 штук) и отдает их по Modbus TCP в нашу SCADA. Еще там есть 2 входа и 2 выхода на случай если нужно чем-то поуправлять. Мы его сделали для решения задач сбора температуры в местах, куда кабель тянуть сложно или дорого. Во всяких цехах, магазинах и пр.
                                  +1
                                  И что за клемники?


                                  клеммник.рф/pcb_spring/991
                                    0

                                    Я такие лет 5 назад на али брал "мешком". Звались DIERAN DA250
                                    С одной стороны — удобно, можно набрать гребёнку на нужную длину _для_домашнихподелок. С другой — очень надо внимательно плату разводить — выводы в шахматном порядке и можно "промазать"

                                +7
                                За информацию спасибо, конечно, только заголовок надо исправить на «драйвер SPIFFS не совместим с чипами PUYA P25Qxxxx, обстоятельства выясняются», а то сейчас он читается так: «в новых ревизиях чипа ESP8266 найден баг, из за которого он перестал писать вообще на любые SPI flash», что, понятно, ложь и провокация.
                                  +5
                                  Я, наверное, что-то не понимаю в промышленной автоматизации.

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

                                  И вам на поиск и исправление бага серьёзно надо больше времени, чем на плач в интернете и ручную перестановку микросхем? Больше пары часов?

                                  Вы там стартаперы все что ли, пока смузи не подвезли — работа встала?
                                    0
                                    Самое непонятное, как они сумели плату развести? И второй момент — кто это покупает по такой цене? Или это 5 устройств в год? Ну тогда еще хоть как-то понятно.
                                      0
                                      А че там разводить-то?
                                        +3
                                        Ну там 230 В есть, я таааакие забавные варианты видел с этим напряжением. В руки, правда, брать бы не стал. Особенно во включённом состоянии.

                                        Но в принципе в то, что развели и не сильно налажали, я даже верю.

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

                                        А если б у них флэшек для перепайки не было бы — то что тогда, они бы контору свою закрыли до тех пор, пока кто-нибудь библиотечку не поправит?
                                          0
                                          Так там монолитный питальник воткнут и все. То есть, все требования по высоковольтной части сводятся к правильным зазорам.
                                            +1
                                            Ну, платы, в которых прорези в печатке были сделаны между двумя проводниками сети и отсутствовали между первичкой и вторичкой, я видел неоднократно!
                                              0
                                              Думаю, можно просто взять референсный дизайн для используемого модуля и не задумываться особо. Тк нет цели сделать суперплотный монтаж или выжать максимум, должно нормально работать.
                                                +3
                                                Хосспади, вы даташит к тому Хайлинку видели? Нет? А знаете, почему? Потому что его нет. Это ж китаец 100-процентный, всё, что вы на него найдёте — это одна страничка на ломаном английском на www.hlktech.net/product_detail.php?ProId=54

                                                При этом я на фотке платы что-то не вижу, например, предохранителя и варистора.
                                                  +1
                                                  Не, не видел. Ну и я в принципе стараюсь не использовать вещи без норм документации. Впрочем, у меня вообще щас ничего с сетевым напряжением нет, так что особо и не интересуюсь даже.
                                      0
                                      А сколько вам нужно времени что бы вникнуть в реализацию чужого драйвера, исправить его и быть уверенным что ничего больше не поломается, память не потечет, не будет спонтанных косяков в других местах и на других микросхемах?

                                      Успеете к вечеру все сделать и отгрузить устройства клиентам, которым, как обычно, все нужно на вчера? Прекрасно! Давайте мы вам оплатим эти два часа и вы зальете фикс в апстрим, а?
                                        +3
                                        Вне всякого сомнения, ваши клиенты будут намного более счастливы, узнав, что вы используете чужой код, в реализацию которого вы даже не пытаетесь вникать, а при возникновении проблемы с ним садитесь ровно и ждёте, пока кто-нибудь посторонний эти проблемы по своей инициативе исправит.

                                        Кстати, на заглавной фотографии это чудо с соплями припоя на ногах флэшки и свороченной пассивкой слева от чипа — это ваша работа?

                                        Давайте мы вам оплатим эти два часа и вы зальете фикс в апстрим, а?


                                        С удовольствием. $1k, плюс плату, подверженную проблеме, высылаете курьером на адрес моего офиса.
                                          –5
                                          С удовольствием. $1k, плюс плату, подверженную проблеме, высылаете курьером на адрес моего офиса.

                                          $500/час? Спасибо, поулыбался. Ха-ха.

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

                                          А не вы ли, часом, ART-блок для своего Black Swift копировали из роутеров TP-Link вместо полноценной калибровки радиотракта каждого модуля?
                                            +5
                                            $500/час? Спасибо, поулыбался. Ха-ха.


                                            (пожав плечами) Вы так пишете, как будто это моя проблема, а не ваша. Ну, перепаивайте чипы дальше.

                                            А так-то понятно, что мой час — сильно дороже вашего. Было бы наоборот — у вас бы ваши устройства работали.

                                            А не вы ли, часом, ART-блок для своего Black Swift копировали из роутеров TP-Link вместо полноценной калибровки радиотракта каждого модуля?


                                            Не-а. Black Swift вообще не был моим проектом, я только забрал его команду и закрыл его долги.

                                            Но если вам плохая калибровка Wi-Fi в компьютере, последний экземпляр которого был выпущен три года назад, скрасит жизнь, подпорченную вашей клинической неспособностью понять, почему не работает ваш текущий продукт — ну, я только рад буду. Мне всё равно, а вам приятно.

                                            P.S. А как вы убеждаетесь, что в коде, который вы до сих пор использовали, «ничего больше не поломается, память не потечет, не будет спонтанных косяков в других местах и на других микросхемах», если вы в его реализацию никогда не вникали?
                                              –2
                                              Чисто из любопытства, а у вас все сотрудники по $500 в час получают, или только вы способны эту проблему решить?
                                                +2
                                                А ваш работодатель вам отдаёт всю выручку с проектов, которые вы для него делаете? Или он, может быть, заказчикам стоимость проектов сразу по себестоимости вашего времени выставляет?

                                                Эта услуга стоит $1000. Не надо — ну значит не надо, я уговаривать не буду.
                                                  +2
                                                  /вспоминая ваши вакансии/ мне работодатель отдаёт куда больше 1%.

                                                  Впрочем, у меня вопрос не по цене услуги (она вполне адекватная), но 2чч — несерьёзно.
                                                    0
                                                    (пожав плечами) По моему лицу разве похоже, будто меня интересует, что с вашей точки зрения серьёзно, а что нет?
                                                      0
                                                      Да ладно уж обижаться сразу, ну подумаешь пошутили вы про 2 часа.

                                                      Кстати, а сколько флешек вы перепаять готовы за $1000?
                                                        +1
                                                        (ласково) Вот это вот всё бурное обсуждение, длящееся месяц на гитхабе и теперь выплеснувшееся сюда — оно о совершенно типовой для эмбеддеда проблеме, предполагающей запредельно банальный пошаговый алгоритм отладки, требующий логического анализатора за десять баксов и головного мозга хотя бы на ту же сумму.

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

                                                        А флэшек я готов перепаять ровно ноль, у меня поинтереснее в жизни занятия есть. Так что если что — не стесняйтесь, договаривайтесь о своих услугах с автором поста напрямую.
                                                          +2
                                                          А после отладки, очевидно, остается только «пофиксить баги и задеплоить»©

                                                          Ох, сколько раз я слышал «да я бы это сделал за 2 часа, только я слишком занят и у вас на меня денег не хватит»
                                                            +1
                                                            На самом деле в той фразе пропущена небольшая часть:
                                                            «да я бы это сделал за 2 часа, только я слишком занят и мне это не нужно и неинтересно, поэтому у вас на меня денег не хватит
                                                              +1
                                                              Это не меняет эмпирического факта, что за 2 часа это не сделается.
                                                                +1
                                                                Конечно. Это нужно спецом время тянуть — кофейку попить, с девченками из бухгалтерии перетереть, сходить на стоянку с машины снег почистить, в туалете посидеть в баш позалипать, еще что-то придумать… Но до двух часов дотянуть все-таки можно. При должной сноровке можно и на 3 растянуть.
                                                          +3
                                                          Из этой вашей непонятной перепалки видно, что olartamonov про два часа ничего не говорил. Он только назвал фиксированную цену за предполагаемый софтовый фикс.
                                                          Кстати, цена вполне нормальная. Я бы больше взял.
                                        0
                                        Из заголовка совершенно ничего не понял. но перешел по ссылке в одном из комментариев, чтоб узнать о чем вообще речь. Посмотрел, проникся, увидел что ребята из Днепра, а стало быть земляки. Приятно.
                                        П.С. Если что, извиняюсь за оффтоп

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

                                        Самое читаемое