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

Проблема со свежим SDK

x8973

Member
Всем доброго времени суток.
Мигрировал я на Дебиан и решил сделать себе нормальную среду разработки под ESP8266. Взял самый свежий SDK, версии 3.0.1. Так вот мои старые исходники, работавшие на esp_open_sdk, теперь работать отказываются.
Проект собирается, но esptool теперь определяет размер флешки моего модуля как 1МБ, хотя раньше писал 8. Сама прошивка останавливает выполнение где-то в бутлоадере. Делаю defpart следующим образом:
[inline]
$(XTENSABIN)/esptool.py --port $(PORT) write_flash 0x0FE000 $(BASESDK)/bin/blank.bin 0x0FD000 $(BASESDK)/bin/esp_init_data_default_v05.bin
[/inline]
Саму прошивку заливаю так:
[inline]
$(XTENSABIN)/esptool.py --port $(PORT) write_flash 0 $(BINDIR)/$(TARGET)-0x00000.bin 0x10000 $(BINDIR)/$(TARGET)-0x10000.bin
[/inline]

Результат вывода в терминал на скорости 74880:
Код:
ets Jan  8 2013,rst cause:1, boot mode:(3,7)


load 0x3ffe8000, len 2436, room 16

tail 4
chksum 0x83
load 0x3ffe8990, len 7532, room 4

tail 8
chksum 0xb3
load 0x40100000, len 27880, room 0

tail 8
chksum 0xaf
csum 0xaf

rf cal sector: 251
freq trace enable 1
rf[112]P�jP��n`X��ׯX�������*P�l *�,�t��tp�h�m�k��Pk�%r�m�@n���@�v���B�Pk���|���
Что я не так делаю?
 

x8973

Member
Продолжаю ковыряния. Очистил флешку через erase_flash. Лог загрузки:
Код:
ets Jan  8 2013,rst cause:1, boot mode:(3,7)

ets_main.c
Зашил разделы согласно ESP8266 SDK getting started guide следующим образом:

0x0FB000 blank.bin
0x0FC000 esp_init_data_default_v08.bin
0x0FE000 blank.bin

Лог загрузки не изменился.
Зашил прикладную программу следующим образом:

0x00000 eagle.flash.bin
0x10000 eagle.irom0text.bin

Получил лог загрузки такой же, как до стирания флешки.
 

x8973

Member
Похоже, никакой проблемы не было. Убрал из начала user_main() настройку битрейта УАРТа на 115200 и получил рабочий лог на 74880. Видимо, он и раньше запускался, просто я, видя в терминале кракозябры, не лез смотреть список доступных сетей. Но в любом случае, это полезный опыт.
Остается вопрос: как теперь перенастроить УАРТ на 115200? Раньше я делал это через вызов
[inline]uart_div_modify(0, UART_CLK_FREQ / 115200);[/inline]. Теперь, похоже, этот способ не работает.
 

x8973

Member
Как перенастроить скорость в Дебиане, я и так знаю) Впрочем, мне это не нужно, ибо я специально для работы с ЕСП подобие терминала написал с управлением линиями RTS/DTR и заданием произвольного битрейта, чего minicom не умеет)
 

pvvx

Активный участник сообщества
uart.h:
void uart_init(UartBautRate uart0_br, UartBautRate uart1_br);

ESP8266_NONOS_SDK-master\examples\esp_mqtt_proj\user\user_main.c:
uart_init(BIT_RATE_115200, BIT_RATE_115200);
 

x8973

Member
Понял, спасибо.
Интересно, почему теперь тот способ, которым я пользовался, перестал работать?
 

pvvx

Активный участник сообщества
Ранее в eagle.....ld было:
[inline]PROVIDE (uart_div_modify = 0x400039d8);[/inline]
Теперь не стало - вынули и выкинули, а в user_interface.h оставили.

Espressif - что с них взять?
Bug Bounty у них не работает - сплошной обман...
 

pvvx

Активный участник сообщества
SDK, Arduino и IDF кишат ошибками, алгоритмическими, да в самих чипах. Можно было бы озолотиться, но они сразу закрыли Bug Bounty | Espressif Systems
 

x8973

Member
Вот это разве не 115200 по вашему коду?
Явно нет. Я пытался грузиться со скоростью терминала 115200 - там вообще ничего осмысленного не вываливалось.
Не знаю, я что-то сходства не вижу)
 

pvvx

Активный участник сообщества
Не знаю, я что-то сходства не вижу)
Это описание вызова:
Раньше я делал это через вызов
[inline]uart_div_modify(0, UART_CLK_FREQ / 115200);[/inline]. Теперь, похоже, этот способ не работает.
Причина по чему не работает указана - ошибки в SDK.
Вырезали указание линковщику на адрес функции в ROM, но описание функции оставили.
В Espressif наняты безграмотные программеры, а нанять нормальных менеджмент жидится...
Ждут когда им бесплатно всё сделают и исправят сторонние пользователи.
 

pvvx

Активный участник сообщества
В современном мире уже дано образовался такой метод:
Находите чужую идею. Столбите её громкой объявой с названием. Ставите свой (с) на неё и начинаете пиарить. Кидаете наброски кода с любыми ошибками и бездарное описание – чем больше ошибок – тем больше пиара в сми. Далее, по лицензии GNU все пользователи и желающие использовать идею обязаны написать вам рабочий код и восхвалить пиарщика.
 

pvvx

Активный участник сообщества
Ну а т.к. чипы Espressif уже безнадежно устарели и требуют более активный пиар, то задача Espressif в текущей ситуации – наплодить побольше новых ошибок, чтобы создать больший шум в интернете. Чтобы поиск давал чаще выпадение ESP8266, указывая его липовую популярность.

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

Это и есть все новшества в каждом новом SDK от Espressif.
 
Сверху Снизу