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

Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
Разработка ‘библиотеки’ малого Webсервера на ESP8266.

Исходники https://github.com/pvvx/esp8266web

Компилятор тут Unofficial Development Kit for Espressif ESP8266 (c) by CHERTS.
Инструкция по пользованию Eclipse. В данной теме такие вопросы не разбираются (!), тут не школа для обучения азам программирования.

* При прошивке всегда ставим размер Flash 512 Кбайт (4Mbit)! Реальный размер определяется автоматически самой прошивкой.
* Если Flash на модуле более 512 Кбайт, то после подключения к AP "ESP8266" требуется заливка диска программой WEBFS22.exe или эксплорером набрав http://192.168.4.1/fsupload. Можно записать WEBFiles.bin и программатором по адресу 0x80000.


В новых версиях esptool.py берется из директории проекта. Для MakeFile путь к ней автоматически задается в Eclipse с помощью "переменной среды" "CWD". Так-же возможна трансляция и без MakeFile, с автоматической генерацией и заданием всех параметров в самой Eclipse. Для этого необходимо переключить в иконке "Manage configurations for the current progects" на AutoMake и пользоваться иконкой или другими кнопками в Eclipse (иконка с молотком или "Project->Build Project", "Project->Clean"). В этом режиме все установки проекта, вплоть до специальных к каждому файлу, доступны в меню "Project->Properties" при выборе объекта (или всего проекта) в окне "Project Explorer". Прошить flash в этом режиме возможно выбрав в меню "Run->External Tools->FlashProg" или в панели иконок, а так-же изменив режим на "Default(Use Makefile)" и выбрав действие в окне "Make Target".

Страница будет обновляться, по мере доработки web сервера.

Внимание: у модулей ESP-01 нога RTS закорочена на GND проводником под чипом(!) - обязательно отключите FlowControl у TCP2UART - иначе чип сильно греется и глючит.

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

Основные цели данной "свалки":

1) Управление конфигурацией WiFi модуля и приложений на ESP8266 с помощью любого устройства с интернет браузером не ниже версии HTTP/1.0.
2) Предусмотреть возможность подключения программных модулей для работы с разной периферией.
3) Использование минимальных затрат web сервером "heap" памяти и других ресурсов ESP8266.

Что уже сделано в текущей версии webсервера:

1) Обслуживание запросов GET/POST/websocket и их разбор.
2) Разбор параметров передаваемых в URI, cookie, контексте HTTP запроса и multipart/form-data в POST.
3) Прием разбитых на множественные tcp пакеты HTTP запросов (общая длина HTTP заголовка ограничена в web_srv_int.h на 3070 байт).
4) Отдача фалов со встроенного диска на flash и обслуживание TCP потока более 600 килобайт/сек.
5) Обработка в отдаваемых сервером файлов с атрибутом "парсить" вставок обрамленных '~'. (К примеру: ~inc:имя файла~ вызывает вставку указанного файла, ~wifi_ap_ip~ вставляет в поток IP ...)
6) Поддержка более десятка одновременно открытых соединений до ограничения памяти.
7) Управление всеми известными параметрами WiFi модуля на ESP8266ex.

Что не будет:

1) Обслуживания пакетных запросов при “Connection: keep-alive” (связано с ограничением памяти у ESP8266 и их негде собирать и хранить для каждого соединения).

Чего нет или “зависло”:

1) Дизайн HTML основных страниц webсервера. Просто некогда этим заниматься. Имеющиеся – это тестовые или предоставленные другими. Приветствуется предоставление дизайна от “сообщества” :) Никакие претензии и указания ошибок в имеющихся не принимаются. Только при предоставлении полной альтернативы и дизайна всех страниц для всех.

Приложенная программа генерации image диска (WEBFS22.exe):
WEBFS.gif
Требует установленного .NET Framework 2.0
Записывает файловую систему в модуль по инет с нуля при наличии только прошивки самого кода и установке соединения с модулем по WiFi. При смене настроек WiFi укажите их в меню настроек соединения. В меню "Advanced Settings" программа позволяет изменять список расширений ваших исходных файлов использующих переменные dynamic files и какие файлы не сжимать GZIP (Do not Compress). Исходные тексты программы приложены и являются модификацией программы MPFS2.1 от Microchip.
На стандартной flash (512к) максимальный размер файловой системы (WEBFiles.bin) составляет около 256 килобайт. Он находится сразу после всех программных кодов и заканчивается до 0x79000. В последних версиях этот стартовый адрес равен 0x39000 (см. уточнения в bin\readme.txt).
При использовании большей Flash, более чем 512к, адрес записи диска всегда начинается с 0x80000 (512к) и диск использует область до конца flash (на W25Q128 это= 16252928 bytes или 15,5 Mbytes).
Загрузка диска (WEBFiles.bin) во flash при его отсутствии (или наличию) в експлорере можно произвести набрав: http://192.168.4.1/fsupload (где 192.168.4.1 – текущий или по умолчанию IP адрес модуля).

Файлы, вызываемые с диска, при обработке запросов HTTP на ошибки:
400 Bad Request - сервер обнаружил в запросе клиента синтаксическую ошибку.
401 Unauthorized - для доступа к запрашиваемому ресурсу требуется аутентификация.
404 Not found - Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
411 Length Required - для указанного ресурса клиент должен указать Content-Length в заголовке запроса.
414 Request-URI Too Long - сервер не может обработать запрос из-за слишком длинного указанного URL.
418 I'm a teapot - http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol
501 Not Implemented - сервер не понимает указанный в запросе метод.
Имя файлов ошибок строится как "(HTTP номер ошибки).htm". Пример, при ошибке 400, ищется файл с именем "400.htm". Если такого файла на диске нет, то вставляется стандартный внутренний ответ.

Кол-во файлов на диске ограничено до 250.

Изменить настройки WiFi или что-то ещё без наличия загруженного диска во flash, можно подав запрос http://192.168.4.1/ или http://192.168.4.1/web.cgi и передав необходимые переменные в строке URL (?name=value&name=value...), или cookie, или контексте POST форматом multipart/form-data. Пример: посмотреть дамп памяти http://192.168.4.1/web.cgi?hexdmpb0x40200000=1024

При запросе файла с сервера, содержащем в названии 'protect' (каталога или имени) используется авторизация с именем и паролем от AP станции.

При первом старте, после прошивки программы, имеем:
Name: ESP8266
Password: 0123456789
Режим доступа AP по умолчанию 'OPEN'.
Имя AP и её пароль является именем и паролем для входа на "защищенные" страницы сервера и используется для записи диска по http://192.168.4.1/fsupload.

Область сохранения настроек на текущем тесте назначена на 3 сектора в области адресов Flash c 0x79000 по 0x7C000. Их можно очистить, записав туда blank.bin по 3-м адресам: 0x79000, 0x7a000, 0x7b000 в FLASH_DOWNLOAD_TOOLS или в среде Eclipse опцией 'FlashClearSetings'.

Для ускорения загрузки и использования 48 килобайт IRAM вместо 32 проект использует специальный дополнительный загрузчик "RapidLoader". График загрузки с RapidLoaderV2.

Измеренные ТТХ по питанию модуля:
Потребление при передаче на скорости к 1 мегабайт в секунду - пример два графика в конце
Потребление модулем в разных режимах WiFi-sleep модуля и стартовые примеры
Потребление по питанию часов (по ноге RTC_VDD)
Потребление при прошивке модуля с помощью esptool.py
Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
Потребление с фирменной фичей в режиме ST, при поиске внешней AP.
Скорость реакции ножки RESET по просыпанию от ноги GPIO16 (deep-sleep).
Время от старта модуля до исполнения кода из flash при использовании специального загрузчика = 30 ms.
Запись диска на 16 Мегабайтной Flash из эксплорера происходит примерно за 90 секунд (flash постранично стирается и пишется примерно в 160..180 килобайт в сек).
 
Последнее редактирование:

pvvx

Активный участник сообщества
Продолжение описания, т.к. в первое сообщение уже не лезет:

Отличия проекта Modbus TCP RTU RS-485 от Web/TCP2UART всего в файле include\user_config.h, файлах web-диска (папка WEBFiles) и WebVars.xlsx.
И в общем виде Web-свалка на сегодня поддерживает:

Набор встроенных скриптовых переменных обеспечивает управление всеми режимами WiFi, UART, GPIO, ADC, переменных modbus и управление другими уже встроенными сервисами...
Поддержка передачи переменных в GET, POST, Куки и Мулти-Дата формате, формирование вывода переменных в XML, обработка переменных через websocket.
GET, POST, Куки наборы переменных ограничены несколькими килобайтами за раз. Кол-во переменных в Мулти-Дата формате не ограничено (ограничено форматом передачи длины общего сообщения в 32 бита - 4294967296 байт - 4 Гигабайта). В websocket ограничений вообще нет.

Про загружаемые форматы 'multipart/form-data'. Пример:
HTML:
<form method='post' action='http://aesp8266/fsupload' enctype='multipart/form-data' class="content">
    <h2 class="title">Overlay Upload</h2>
    <p class="center">
    Select Overlay file...<br><br>
    <input type='file' name='overlay'><br><br>
    <input type='submit' value='Upload' class="button">
    </p>
</form>
Используемые имена 'file':
<input type='file' name='file'> - загрузка и прошивка в flash Web-диска;
<input type='file' name='overlay'> - загрузка Оверлея;
<input type='file' name='sysconst'> - загрузка и прошивка в flash esp_init_data_default.bin;
<input type='file' name='fsec_nnn'> - загрузка и прошивка в flash сектора с номером nnn, номер сектора в формате hex или dec.

Сделана возможность перезагрузки при уровне ноль на GPIO2.

Ещё ссылки:
Комменты об RapidLoader
Кол-во и скорость открытия множественных Web соединений (JMeter)
'Мигает светодиод на модуле'
Скорость опроса датчика INA219 через WebSocket
 
Последнее редактирование:

pvvx

Активный участник сообщества
Продолжение:

Оверлеи/драйверы загружаются по HTTP или web-командой из web-диска в IRAM память ESP8266. Поддерживается загрузка и запуск оверлеев и из init.ini.

Для работы с оверлеями web имеет такие команды:
ovl=имя_файла_на_web_диске - загрузка оверлея с web-диска
ovl$=N, где N - число. 0 - close, 1 - инициализация. Другие значения - передача опций для оверлея и специфичны. Параметр передается функции int ovl_init(int flg), как flg.
ovl@=строка или список параметров - пока не задействована ни в одном примере.
Аналогично ~ovl:имя_файла_на_web_диске~, ~ovl$N~, ~ovl@строка~. В этих случаях в поток TCP передается номер кода возврата (ошибки).

Параметры инициализации и ответы для всех оверлеев обычно находятся в modbus таблице и имеют доступ к ним с любых интерфейсов web-сервера (см. описание переменных web-сервера).

Web-сервер поддерживает один активный оверлей. Оверлеи можно загружать по очереди, по мере необходимости. При загрузке нового оверлея вызывается команда закрытия текущего оверлея ovl_init(0). Инициализация оверлея ovl_init(1) производится по закрытию Web-HTTP соединения для возможности передачи настроек инициализации в любом порядке, а в случае запроса из websocket – сразу после загрузки.

Текущие ограничения по размеру кода оверлея около 8 килобайт, но если включить опцию IRAM=48к, то 16+8 килобайт. Для rodata/bss используется буфер в области памяти ROM-BIOS до 1 кило (остальные переменные, кратные 4 байт, размешаем в IRAM).

Описания готовых оверлеев даны в их папках проекта.
 
Последнее редактирование:

Alex

Member
Прошился и готовой прошивкой и с исходников. В режиме AP все вроде работает, а в режиме AP+STATION через домашний роутер тормозить стало сильно. Переключился в режим STATION "тормоза" пропали.
Тема очень интересная для меня пополнить знания. С "С" я пока на Вы. Немного под AVR и STM8 писал. Начинал на "асме" под PICи. С WEB вообще никак. Подскажите в чем HTML XML CGI редактировать?
PS: Все с HTML разобрался. Вопрос отпал.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Выйду после праздников на работу попробую написать кросс-платформенную программу создания образа flash диска с файлами, я так понимаю используется mpfs от microchip? а может использовать другую реализацию fs, например из того же esphttpd, там уже есть почти кросс-платформенная утилита создания образа, её нужно допилить под windows, я даже выкладывал проект под visual studio для америкосов тут
 

pvvx

Активный участник сообщества
... я так понимаю используется mpfs от microchip?
Да. Была под рукой и немного изменил, что успел. Она есть и на java... https://yadi.sk/d/EyE2DOlDdoUjS
а может использовать другую реализацию fs, например из того же esphttpd, там уже есть почти кросс-платформенная утилита создания образа
Она не использует GZIP и в ней тоже много лишнего (другой паковщик)...
Подскажите в чем HTML XML CGI редактировать?
PS: Все с HTML разобрался. Вопрос отпал.
Прямо в Eclipse (сборке от CHERTS).
У меня доустановлено http://www.nodeclipse.org/updates/ там много полезного....
 
Последнее редактирование:

pvvx

Активный участник сообщества
Для информации, из местной личной переписки, чтобы не повторять:

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

При UART на 80 000 000 bits/s (<clk_div_reg>00000001</clk_div_reg>) не успевает сам вход/выход порта.
При 20Mbits/s – успевает: https://yadi.sk/i/Hn4-aUAMdnczQ 100ns/500mV клетка.
Показан какой-то из разрозненных ‘аски’ символов (разрозненные, т.к. скорость вывода превышает загрузку в буфер передачи FIFO UART)
<uart1>
<baud>20000000</baud>
<int_raw_reg>00000002</int_raw_reg>
<int_st_reg>00000000</int_st_reg>
<int_ena_reg>00000001</int_ena_reg>
<int_clr_reg>00000000</int_clr_reg>
<clk_div_reg>00000004</clk_div_reg>
<autobaud_reg>00001000</autobaud_reg>
<status_reg>00000000</status_reg>
<config0_reg>0000000c</config0_reg>
<config1_reg>00000001</config1_reg>
<data_reg>00062000</data_reg>
<id_reg>00000500</id_reg>
</uart1>
При 80Mbits - не хватает тактирования ножки порта I/O … https://yadi.sk/i/8lRDjNttdnd3x (на осциллографе и анализаторе выводит импульсы от символов когда пару бит в нуле - биты 1010101... уже не прокачивает -> порт стробируется...)

Досконально проверять какая максимальная скорость без искажений фронтов (внутренними стробами чипа) пока лень.
К ESP8266 у меня подключена FR2232, у неё 2RS с пределом 3Mbits:
300000Baud.gif
На 3Mbits всё стабильно...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Прошился и готовой прошивкой и с исходников. В режиме AP все вроде работает, а в режиме AP+STATION через домашний роутер тормозить стало сильно. Переключился в режим STATION "тормоза" пропали.
В той версии неправильно использовал unrecved в Lwip. Оказалось, что если у соединения Lwip-а не обнулен счетчик вычета размера окна TCP, то он закрывает соединение командой abort (передачей tcp пакета с [RST, ACK]) не дожидаясь передач буферов...
При переключении в режим STATION возникают непонятные тормоза из-за кэщей у роутеров, эксплорера и самой винды. И что-то ещё, связанное с номерами каналов WiFi ESP8266 и WiFi роутеров. Потом, спустя паузу, пробивается. Причину ещё не локализовал.
----------
Переключение настроек WiFi в текущих версиях не полное. Перезагрузки ESP8266 там нет.
Но не всегда при изменении настроек WiFi требуется перезагрузка модуля.
Кому и где это решать - пока не созрело. Перезагрузку модуля можно вызывать командой ~sys.restart~ в текcте thm или передачей в параметрах к HTTP запроcу, а можно в самом запросе HTTP. Т.е. реализуется в файлах HTML сервера или на java или в кодах обработки установок WiFi - ещё не решил.
При настройке часто требуется знать, какой будет новый IP адрес модуля для редиректа с паузой. Пока добавил как ~sys.ip~ - будет выдавать IP в соответствии с заходом пользователя со стороны AP или STATION. Адреса то разные...
Короче - не всё ещё продумано с этим и в стадии разработки/доработки...
Сейчас основная задача доделать и доработать алго загрузки файлов на саму ESP8266. В опубликованных это не работает, т.к. ещё не доделано в связи со множеством вариантов реализации и множеству вариантов форматов передачи у разных эксплореров...


Стандартная передача параметров в HTTP:

Для GET в URI:
http://192.168.4.1/[файл]?команда=значение&команда=значение

Для POST, в заголовке запроса HTTP:
POST /[файл] HTTP/1.1\r\n
Content-Length: x\r\n\r\n
команда=значение&...&команда=значение


Или через cookie в теле заголовка запроса HTTP:
Cookie: команда=значение;...;команда=значение\r\n

Всё это повязано ещё с проверкой на авторизацию и имя файла. По ним вычисляется что и когда принимать к исполнению...
 
Последнее редактирование:

Vit

Member
Правильно ли понимаю, что нужно заливать blank.bin, esp_init_data_default.bin, 00000_eagle.app.v6.bin, 40000_eagle.app.v6.bin, и WEBFiles.bin?
 

pvvx

Активный участник сообщества
Припаял на старый модуль flash побольше W25Q128FVSG.
BIOS ESP8266 и SDK говорит:
FlashID: 0x001640ef
Chip size: 524288 :)
Block size: 65536
Sector size: 4096
Page size: 256
Status mask: 0x0000ffff
Исправил. Вышли все 16 Мегабайт. Закинул на диск web-а PDFв 1.34Megдля тестов…
Всё работает:
Кино дети снимать мешали. По тому так дергано и муторно :) Fifo UART (3Мбита в сек) с таким кол-вом отладочной инфы переполняется, а pritf-ы тормозят поток - пока они там создадут строку... У мониторов COM портов тоже переполняются буфера и тормозят, да пропускают символы, через размер буфера :mad:
Как исправлять и что, и связанные с Flash приколы в SDK пока замну. Большие flash теперь поддерживаются в данном Web-сервере! :p (Запись/чтение проверил на всю 16Мег)
Много переписал. Загрузку файлов сделал. Готовить новый пакет для демы лень...o_O Буду ждать кто даст программу для создания диска (желательно на питоне – там вроде это проще, впрочем можно на любом языке с исходниками - мне всё равно какой язык, лиш-бы транслятор был :) )... Заодно препроверю всё и допишу ещё всякого :)
Правильно ли понимаю, что нужно заливать blank.bin, esp_init_data_default.bin, 00000_eagle.app.v6.bin, 40000_eagle.app.v6.bin, и WEBFiles.bin?
Да. Но там ещё всё кривое.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
Припаял на старый модуль flash побольше W25Q128FVSG.
Всё работает:
Круто, но ценник в 100 р. на aliexpress за W25Q128FVSG не гуманный, учитывая, что сама плата с ESP стоит 170 р. :( Да и куда такие объемы... хотя если долго долго очень долго собирать показания в оффлайне, а потом скопом все отправлять.

Буду ждать кто даст программу для создания диска (желательно на питоне – там вроде это проще)...
Питон не знаю, поэтому буду писать на си, хотя и в нем я не силен, но на delphi будет не кросс-платформенно это уж точно.
 

Vit

Member
Да. Но там ещё всё кривое.
Жаль. Собралось и уже "закомбайнилось":)
Далее следующий файл... и терминатор - размер файла = 0.
Не понял зачем терминатор (если есть размер файла) и где он
Хеш со сложным алго (более 4-х байт) не требуется - при совпадении проверяется имя из самого заголовка и если не совпало, проверяется следующий хеш.
Как насчет использования хэша Пирсона (если слаб, можно двойной пробег с разными таблицами)?
 

pvvx

Активный участник сообщества
@Vit
Круто, но ценник в 100 р. на aliexpress за W25Q128FVSG не гуманный, учитывая, что сама плата с ESP стоит 170 р.
Прислали с aliexpress за 64 рупь штучка...
Да и куда такие объемы... хотя если долго долго очень долго собирать показания в оффлайне, а потом скопом все отправлять.
Обычно сервер набивается документацией. Печатная стоит дороже и её всегда теряют.
Существует масса датчиков и методик, когда устройство ждет в ждущем режиме, а по событию снимает поток в несколько мегабайт… Да и к примеру карты для навигации и всякое другое для информации пользователя о местоположении объекта нормальным русским языком, а не пару строчками цифр, которые пользователь не знает куда засунуть. Треки GPS тоже не малые….
Ресурсов то ещё много - сервер только временно на прием/обработку/передачу пакетов тратит память (RAM) до 6 кило, а статики там и на кило не наберется при 10 пользователях, если вырубить отладку. Так что память heap вся за минусом кило. Остальное отжирает китай-SDK :mad:. До включения Web-а всего два указателя в памяти = 8 байт. :) Это же не Lua портированная с помойки, а "самиздат" для конкретного чипа...
 
Последнее редактирование:

Vit

Member
Я боюсь промазать с порядком заливки и потому сделал combine во frame_test.
 

pvvx

Активный участник сообщества
Как насчет использования хэша Пирсона (если слаб, можно двойной пробег с разными таблицами)?
//Polynomial: x^16 + x^12 + x^5 + 1 (0x8408)
// Initial value: 0xffff
// Для 16-ти битных MCU
unsigned int CalkCRC16_8408(unsigned char * blk, unsigned int dLen)
{
unsigned int crc = 0xFFFF; // CRC-CCITT (Kermit) =0
do
{
crc ^= *blk++;
crc = (crc >> 8) | (crc << 8);
crc ^= (crc & 0xff00) << 4;
crc ^= crc >> 12;
crc ^= (crc & 0xff00) >> 5;
}while(--dLen);
return crc;
}
// Для 8-ми битных MCU, полином 0x8408
typedef union
{
struct {
unsigned char l;
unsigned char h;
} ch;
unsigned int w;
} ucrc;
ucrc crc;
void UpdateCRC(unsigned char c)
{
c ^= crc.ch.l;
crc.ch.l = crc.ch.h;
crc.ch.h = c;
crc.ch.h ^= crc.ch.h << 4;
c = crc.ch.h >> 4;
crc.ch.l ^= c;
crc.ch.l ^= crc.ch.h << 3;
crc.ch.h ^= c >> 1;
}
В MPFS2 ещё проще -
// Calculate the name hash to speed up searching
for(nameHash = 0, ptr = cFile; *ptr != '\0'; ptr++)
{
nameHash += *ptr;
nameHash <<= 1;
}
:)
Нам требуется отличить десяток имен файлов, а совпадение затормаживает на пару микросекунд, пока по QSPI шине скачается десяток байт на 40x4MHz...
Актуальность ХЕШа только в энергопотреблении системы.
Тут даже если у чипа есть своё устройство подсчета разных полиномов, его дольше заряжать на задачу... Тем более доступен ассемблер - можно оптимизировать какой 32-х битный полиномчик под данный проц на десяток команд... Нам с МикроСофтом и Lua совместимость тут не нужна.
Имя файла в среднем 10..16 байт. Проц 32-х битный – 4 сравнения :) Можно просто сложить в один DWORD. Дольше разбираться в длине имени побайтно....
 
Последнее редактирование:

Vit

Member
Хеш Пирсона 8 бит
// This assumes that name always ends with NULL character (\0).
unsigned char phash_wikipedia(const char *name) {
char *key = name;
unsigned char hash = 0;
for (char c = *key++; c; c = *key++)
{
hash = T[hash ^ c];
}
return hash;
}
// T table for Pearson hashing from RFC3074, хотя не думаю, что это принципиально:)
unsigned char T[256] = {
251, 175, 119, 215, 81, 14, 79, 191, 103, 49, 181, 143, 186, 157, 0,
232, 31, 32, 55, 60, 152, 58, 17, 237, 174, 70, 160, 144, 220, 90, 57,
223, 59, 3, 18, 140, 111, 166, 203, 196, 134, 243, 124, 95, 222, 179,
197, 65, 180, 48, 36, 15, 107, 46, 233, 130, 165, 30, 123, 161, 209, 23,
97, 16, 40, 91, 219, 61, 100, 10, 210, 109, 250, 127, 22, 138, 29, 108,
244, 67, 207, 9, 178, 204, 74, 98, 126, 249, 167, 116, 34, 77, 193,
200, 121, 5, 20, 113, 71, 35, 128, 13, 182, 94, 25, 226, 227, 199, 75,
27, 41, 245, 230, 224, 43, 225, 177, 26, 155, 150, 212, 142, 218, 115,
241, 73, 88, 105, 39, 114, 62, 255, 192, 201, 145, 214, 168, 158, 221,
148, 154, 122, 12, 84, 82, 163, 44, 139, 228, 236, 205, 242, 217, 11,
187, 146, 159, 64, 86, 239, 195, 42, 106, 198, 118, 112, 184, 172, 87,
2, 173, 117, 176, 229, 247, 253, 137, 185, 99, 164, 102, 147, 45, 66,
231, 52, 141, 211, 194, 206, 246, 238, 56, 110, 78, 248, 63, 240, 189,
93, 92, 51, 53, 183, 19, 171, 72, 50, 33, 104, 101, 69, 8, 252, 83, 120,
76, 135, 85, 54, 202, 125, 188, 213, 96, 235, 136, 208, 162, 129, 190,
132, 156, 38, 47, 1, 7, 254, 24, 4, 216, 131, 89, 21, 28, 133, 37, 153,
149, 80, 170, 68, 6, 169, 234, 151
};
Как по мне, по быстродействию вполне сравнимо с MPFS2

Из 32-х-битных припоминается простой Adler-32, но там длина строки всё-равно нужна
 

goodwin

Member
Я боюсь промазать с порядком заливки и потому сделал combine во frame_test.
Бояться не стОит ;) Эта утилитка (FLASH DOWNLOAD TOOLS) корректно шьет все *.bin файлы проекта , при условии отсутствия русских имен в путях. К тому же модифицирует их в зависимости от установленных галочек. Например, можно заюзать флэш в режиме SPI.
 

Vit

Member
Эта утилитка (FLASH DOWNLOAD TOOLS) корректно шьет
Я не уверен. Причем эта неуверенность появилась после того, как combine при разной последовательности включения файлов дало неполный размер выходного bin - что-то вроде 506 с копейками вместо 520 с копейками
 

A_D

Active member
pvvx, Спасибо за Ваши труды, очень интересный проект Вы делаете. Посмотрел видео и залил тестовую прошивку из первого поста - посмотрел чего это за зверь получился. Пока не писал ни разу под данный камень код, но как выйдет первый релиз - точно начну с Вашего проекта :) т.к. уже есть пару идей, куда можно было бы попробовать применить данный чип, сначала пытался на стоковой прошивке сделать что то наподобие веб морды с управлением, управляющим МК - был атмега, но итоговый вариант выходил больно громоздким, глюченным (тут еще добавляло прилично глюченности сама стоковая прошивка ESP) и уж больно медленным... в итоге забросил это дело.
И по поводу компилятора - а этот вариант под Win x64 подойдед для того, что бы начать или посоветуете что то другое? И последний вопрос - а когда ждать альфа релиза исходников прошивки ? :)
 

goodwin

Member
Я не уверен. Причем эта неуверенность появилась после того, как combine при разной последовательности включения файлов дало неполный размер выходного bin - что-то вроде 506 с копейками вместо 520 с копейками
Я ни разу такого не замечал. Всегда 508 КБ (520 192 байт)
 
Сверху Снизу