• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

AlexMelven

New member
В моем meSDK весь код инициализации библиотек SDK есть и можно перед этим вписать что угодно - хоть запуск спутника на луну. Так что смысла в этих загрузчиках нет.
хорошо, как сделать, чтобы стартовала нужная прошивка (0x7000 либо 0x87000), используя ваш Rapid loader?
Хотя только сейчас нашел ссылку на исходники RapidLoader, попытаюсь разобраться в данном вопросе пока сам :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
хорошо, как сделать, чтобы стартовала нужная прошивка (0x7000 либо 0x87000), используя ваш Rapid loader?
Написать опрос байта в flash, который указывает на загрузчик для "прошивка (0x7000 либо 0x87000)". Но дописывать это не в загружаемое тело, а уже в код находящийся в Flash. Иначе это увеличит размер и время тормозной загрузки ROM-BIOS. Т.е. вставку делать где-то здесь https://github.com/pvvx/Rapid_Loader/blob/master/app/loader/loder_flash_boot.s, перед данным кодом.
И я дописал прошлое сообщение, для большего понимания как работает RapidLoader.
 
Последнее редактирование:

pvvx

Активный участник сообщества
пока не вижу откуда Rapid Loader берет адрес 0x07000..
А он и сделан по другому. Не для Ардуринщиков и жалеет размер flash.
Он прилепляется к проекту простым копированием к первому блоку стандартного загрузчика и грузит код, находящийся за собой, чтобы не тратить целый сектор на 4096 байт.
[HASHTAG]#define[/HASHTAG] next_flash_header_addr 0x402000c0 - это указатель от куда грузить и передается процедуре https://github.com/pvvx/Rapid_Loader/blob/master/app/loader/loder_flash_boot.s#L8 в регистре a2.
0x402000c0 - это выходит адрес в flash стандартного загрузчика, после копирования в начало к нему RapidLoader-а.
Вы предлагаете написать вам загрузчик под ваши условия?
Китайский вариант с выбором загрузчика мне не нравиться - он имеет недостаток: стирает/пишет сектора и если на ходу выключить питание, то модуль становиться мертвым. Кроме того, он в некоторых случаях переписывает байты в заголовке последних секторов с WiFi конфигурацией, но контрольную сумму не исправляет. Это приводит к потере прошлой WiFi конфигурации и прочего для SDK.
Так-же мне не нравиться подход содержания дублей SDK библиотек в и так малой "кешируемой" области flash в 1 мегабайт. Это обходиться, но пока не сделано... Больше склоняюсь к созданию системы подгрузки оверлев в IRAM с едиными SDK либами во Flash...
 
Последнее редактирование:

AlexMelven

New member
спасибо за детальное описание. Правда я в конец запутался кто и кого грузит и откуда берутся какие адреса :( Файл 0.bin - сам по себе содержит уже загрузчик? Я переименовал его в 0x00000.bin и прошил - прошивка работает нормально.
 

AlexMelven

New member
"call_user_start" вызывает код на ассемблере по адресу "loader_flash_boot_addr" с адресом заголовка "next_flash_header_addr", тот разбирает заголовок, берет адрес для старта и делает переход "jx a7". Но судя по содержимому заголовка, там адрес 0х40100000. Так откуда берется адрес 0х07000? И только ли в файле 0x07000.bin находится часть кода, которую предположительно нужно будет переключать или она также есть еще и в готовом 0x00000.bin?
 

pvvx

Активный участник сообщества
"call_user_start" вызывает код на ассемблере по адресу "loader_flash_boot_addr" с адресом заголовка "next_flash_header_addr", тот разбирает заголовок, берет адрес для старта и делает переход "jx a7". Но судя по содержимому заголовка, там адрес 0х40100000. Так откуда берется адрес 0х07000? И только ли в файле 0x07000.bin находится часть кода, которую предположительно нужно будет переключать или она также есть еще и в готовом 0x00000.bin?
Коды запуска отдельного SDK находятся в их загрузчиках. Обычно это файл 0x00000.bin от проекта. Его пишут куда угодно во flash. И от другого проекта аналогично. Но у каждого проекта свои блоки с кодами во flash и разные eagle.app.v6.ld (
irom0_0_seg : org = 0x402xxxxx, len = 0xxxxxx )

Первый лоадер выбирает какой из них грузить далее.
 

AlexMelven

New member
Но у каждого проекта свои блоки с кодами во flash и разные eagle.app.v6.ld
с этим более-менее разобрался. Но у вас итак два файла - 0x00000.bin и 0x07000.bin - и это не два разных проекта для загрузки, а один. Или же мне нужно сделать сначала так, чтобы был один файл, как у китайцев?
 

pvvx

Активный участник сообщества
с этим более-менее разобрался. Но у вас итак два файла - 0x00000.bin и 0x07000.bin - и это не два разных проекта для загрузки, а один.
Ну и пишутся всегда два. Только первый файл - куда угодно во flash и его выбирает стартовый загрузчик.
Мы уже тут исписали больше, чем написать полный код спец. загрузчика. :) Многа букав.
 

AlexMelven

New member
ну если бы это помогло мне написать спецзагрузчик, я бы не плодил текст :) Пока туплю не по детски. Как же в случае с тем же пресловутым rboot? Там ведь один файл для одного проекта? Или он объединил в одном файле два, поэтому? Я его esptool2 создаю такой файл, но он не стартует, выдает исключения..
 

pvvx

Активный участник сообщества
Я не изучаю поделки rboot, т.к. они бесполезные и ничего хорошего не несут.
Я описываю как надо сделать правильно.
C rboot разбирался СHETS - но не знаю, вышло у него или нет. Попробуйте спросить у него про этот rboot...
 

AlexMelven

New member
так отдельно он работает и у меня. Я же пытаюсь его прикрутить к web_base. Ну или в идеале сделать чтобы был свой мультизагрузчик, правильный :) Пока ничего не понятно.
 

vad7

Active member
pvvx, А как вы отлаживаете, если CHERTS говорит, что в UDK отладчик еще не прикручен?
 

vad7

Active member
Ясно, будем ждать пока кто-нибудь не сподобиться поделиться знаниями....

У вас в новой версии, если по-отключать в user_config все кроме веб сервера - при компиляции ругается на "tcp_client_url" и т.д.
 

pvvx

Активный участник сообщества
Ясно, будем ждать пока кто-нибудь не сподобиться поделиться знаниями....

У вас в новой версии, если по-отключать в user_config все кроме веб сервера - при компиляции ругается на "tcp_client_url" и т.д.
Ну поправьте или укажите что. Я все варианты проверить не имею возможности по времени...
----
Исправил. И слил вместе оба проекта TCP2UART и MODBUS RS-485 в единую свалку.
Выбор проекта в user_config.h
[HASHTAG]#define[/HASHTAG] PROGECT_NUMBER 0
// 0 -> проект "TCP2UART"
// 1 -> проект MODBUS-"RS485"
Файлы для web-диска для проектов находятся в разных папках.
Желательно переместить используемые для проекта в папку WEBFiles.
Но возможно использование и make_webfs_rs485.bat или make_webfs_tcp2uart.bat.
 
Последнее редактирование:

AlexMelven

New member
у меня заработал rboot с малым вебсервером :) pvvx конечно будет ругаться и все такое.. Ну не шмогла я, не шмогла сделать правильно. Мозгов пока не достаточно. Единственно что добавил - это из Rapid Loader всякие отключалки wifi, вывода частоты на пин. Надеюсь он стал немного лучше :) Ну и обновляется по wifi (код+вебфайлы).
 
Последнее редактирование:
Сверху Снизу