• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 байт)
 
Сверху Снизу