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

Sming Open Source Framework для нативной разработки прошивок ESP8266

codavr

New member
ну вот и доигрался:
Set AP configuration in background
mode : sta(18:fe:34:fc:a3:50) + softAP(1a:fe:34:fc:a3:50)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
addUser: me 123
'/' registered
'/ipconfig' registered
'/ajax/get-networks' registered
'/ajax/connect' registered
AP configuration was updated on system ready event
f 0, Fatal exception (9):epc1=0x40002c76, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000003, depc=0x00000000
и ничего же вроде не трогал...

вылечилось очень странным способом:
прошивкой проекта pvvx и обратно sming. что у pvvx такое есть, чего не хватает в sming?

сейчас все файлы (70кб) на фтп залились и браузером видятся.

попытался увеличить размер ФС (флеш 4МБ), пока безрезультатно...

вернуться назад к рабочему состоянию тоже больше не получилось. по фтп грузится 4 файла, на пятом вылезает ошибка write errno -10004, после чего ФС на запись не работает (в т.ч. не удаляет файлы)
 
Последнее редактирование:

Casper

Member
Подскажите пожалуйста, есть модуль esp-12e и там должно быть 4мб памяти, как это проверить и как в настройках прописать, что бы использовалась вся память. Второй вопрос, в эклипс импортирую пример HttpServer_ConfigNetwork, в Make файле настраиваю com port, и там прописан SPIFF_FILES = web/build но файлы не заливаются при подключении пишет "Please connect to FTP and upload files from folder 'web/build' (details in code)" Подскажите, как это дело подправить?!
 
1. Чтоб выяснить что за флешка стоит в модуле не разбирая можно запустить esptool -p port -b baudrate flash_id
Port & bauderate согласно вашим настройкам. Затем оно выдаст ид производителя и ид флехи в рамках производителя. Затем смотрим
http://code.coreboot.org/svn/flashrom/trunk/flashchips.h и находим там по ид производителя и по ид флеху. Опционально в гугле находим даташит на флеху.

2. Чтоб файлы заливались вместе со смннговым софтом, надо поставить spiffy https://github.com/alonewolfx2/spiffy.git собрать это под свою платформу и сделать доступной через PATH.
 

Casper

Member
2. Чтоб файлы заливались вместе со смннговым софтом, надо поставить spiffy https://github.com/alonewolfx2/spiffy.git собрать это под свою платформу и сделать доступной через PATH.
А когда ставится Sming автоматический, через Chocolatey, то там в списке того что будет установленно уже есть spiffy, последним пунктом...
 
А когда ставится Sming автоматический, через Chocolatey, то там в списке того что будет установленно уже есть spiffy, последним пунктом...
а вот не знаю :( у меня окружение не windows, не могу попробовать сам. Однако люди не редко жаловались на форумах и в чате (https://gitter.im/alonewolfx2/Sming) касательно проблем со spiffy и решение проблемы чаще всего было переустановка из выше указанного репозитория методом пересборки под винду в данном случае.
 
@Alexander V. Ribchansky В файлах по пути есть c:\tools\sming\Sming\Services\SpifFS\ Как именно надо прописать путь в Eclipse? Если это то что надо..
не.. это компонент сминга для работы с фс на самом девайсе, а Вам же надо тулзу для компа, чтоб она генерила образы ФС. Ссылку на ту тулзину давал выше, но как это собрать под винду - ненау :(
 

Casper

Member
Нашел и скачал spiffy-1.0.4-win32-x86_64 при запуске его создается файл spiff_rom.bin. Что и где прописать и куда скопировать? В Make файле прописано SPIFF_FILES = web/build
 

Symrak

New member
Приветствую участников данного форума!

Прошу подсказать, как правильно прошить ESP8266, чтобы использовать полный объем SPI FLASH?

На руках имеется ESP-201 с 8 Mbit (1024 kb) памяти (микросхема MK25Q80A), ESP Flash Download Tool версии 1.2 и Sming демо-проект "Temperature_DS18B20".

В файле Makefile-user.mk прописал строчку "SPI_SIZE = 1024".

Eclipse скомпилировал прошивку со следующими адресами:
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x9000
spiff_rom.bin---------->0x3C000

16:24:37 **** Build of configuration Sming for project Temperature_DS1820 ****
make all
C+ app/application.cpp
C+ /c/tools/Sming/Sming/appinit/user_main.cpp
AR out/build/app_app.a
LD out/build/app.out
------------------------------------------------------------------------------
Memory layout info:
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE853C| 1340
rodata| ReadOnly Data (RAM)| 3FFE8540| 3FFE8E40| 2304
bss| Uninitialized Data (RAM)| 3FFE8E48| 3FFF29A0| 39768
text| Cached Code (IRAM)| 40100000| 401050C1| 20673
irom0_text| Uncached Code (SPI)| 40209000| 402380F7| 192759
Total Used RAM : 43412
Free RAM : 38508
Free IRam : 12113
------------------------------------------------------------------------------
Running objcopy, please wait...
Objcopy done
Run gen_appbin
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder out/firmware.
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x9000
Done
Checking for spiffs files
No files found in ./files.
Creating empty spiff_rom.bin (16384 bytes)
spiff_rom.bin---------->0x3C000

FLASH SIZE в ESP Flash Download Tool указан равным 8 Mbit (см. скриншот во вложении).

При этом ESP8266 не запускается, выводя в терминал следующие сообщения (по кругу, видать, restart...):
First init file system
sect_first: 3c, sect_last: fc



ets Jan 8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 20676, room 16
tail 4
chksum 0x76
load 0x3ffe8000, len 1340, room 4
tail 8
chksum 0xcf
load 0x3ffe8540, len 2304, room 0
tail 0
chksum 0xc3
csum 0xc3
rlfs.start: size:768 Kb, offset:4023C000

Если установить FLASH SIZE равным 4 MBit, то ESP8266 спокойно стартует и отрабатывает.

P.S. Вывод лога компиляции (адреса для прошивки файлов) не меняется при отсутствии в файле Makefile-user.mk строчки "SPI_SIZE = 1024".
P.P.S. ESP Flash Download Tool определяет чип памяти как QUAD, 8Mbit.
P.P.P.S. Тестовый проект мини-сервера от pvvx так же сообщает, что объем памяти чипа равен 1048576 байт.

Буду очень признателен за помощь.
 

Вложения

totus72

New member
В своем проекте очень нужно реализовать инфракрасный приемник. Декодированный код необходимо передать по HTTP для обработки другому контролеру. Как мне показалось ESP для этого самое то. Наткнулся на Sming, увидел готовые примеры, думал как с Ардуино все быстро настроить, но че-то пока все туго идет. Прошил пример IR_lib, все отлично принимается, но декодированные коды, от одной и той же кнопки пульта, все время разные. Подскажите куда копать?
---------------------
Проблема решилась, пересобрал с SDK 1.2.0. По умолчанию шоколад ставит 1.3.0. Оказывается не всегда последняя версия самая правильная.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Прошу подсказать, как правильно прошить ESP8266, чтобы использовать полный объем SPI FLASH?
Каким образом предполагается использовать полный объем flash?
Для spiffs?
Creating empty spiff_rom.bin (16384 bytes)
spiff_rom.bin---------->0x3C000
Для этого желательно переписать код Sming со вставкой автоопределения размера flash и проверкой багов инициализации spiffs (+ внутренних патчей spiffs, т.к. spiffs содержит ошибки для порта на ESP8266, которые уже указаны, но никто исправлять не хочет).
Пока вам может помочь очистка всей flash:
C:\Python27\python.exe esptool.py -p COM2 erase_flash
а затем уже запись прошивки, с опциями 8Mbit и без образа spiffs. Его потом создадите или туда закатаете файлы...
 

Symrak

New member
pvvx, спасибо за детальный ответ.
Да, для spiffs.

А есть ли где-то мануал для нубов по созданию пустого проекта на Sming в Eclipse?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Для примера странслировал examples “FtpServer_Files”
В Makefile-user.mk для модуля ESP12E DevKit (Flash 4 Mbytes) указал: [inline]SPI_SIZE = 4096[/inline]
Получил при загрузке: [inline]fs.start: size:240 Kb, offset:40240000[/inline]
Почему 240 Кб - неизвестно...
Открыл FTP - на диске два файла примера.
Записал по FTP файл в 1 Mb. Он прервался на 180 кило.
Считал что стало: старые файлы кто-то стер, лежит только новый обрывок.
Читаю новый обрывок. Лог пишет: TCP sent: 256 , TCP sent: 256, …
Через дцать минут получаю обрывок (скорость ниже килобайта в секунду?).
Стер обрывок по ftp и перезагрузил модуль.
Открываю – там “example.txt” и более ничего.
Читаю “example.txt”:
Код:
 > TYPE: 'I'
> 250 OK
PORT: '192,168,1,2,58,111'
connection to: 192.168.1.2, 14959
> 200 OK
RETR: '/example.txt'
+TCP connection
TcpConnection::connect result:, 0
> 150 Connecting
OnConnected
timeout updating: 70 -> 300
TCP connected
> 250 Transfer started
read errno -10015
> 250 Transfer started
read errno -10015
…
Итого: Spiffs в Sming не конфигурируется для разных размеров flash, имеет жуткий тормоз и содержит кучу ошибок.
Исправить такую ситуацию сложно, но можно...:(
Добавление в C:\tools\sming\Sming\Makefile-project.mk во все строчки с ESPTOOL передачи опций при загрузке прошивки [inline]$(ESPTOOL) -p $(COM_PORT) write_flash $(flashimageoptions)[/inline] исправляет ситуацию с размером spiffs, но приводит к зависанию spiffs при инициализации и перезагрузке по WDT:
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 22556, room 16
tail 12
chksum 0x22
ho 0 tail 12 room 4
load 0x3ffe8000, len 880, room 12
tail 4
chksum 0x3c
load 0x3ffe8370, len 4052, room 4
tail 0
chksum 0x62
csum 0x62
rlS+TCP connection
timeout updating: 70 -> 65535
Server timeout updating: 40 -> 900
fs.start: size:3824 Kb, offset:40240000

First init file system
sect_first: 40, sect_last: 3fc
далее повтор этого-же
Тут уже надо менять систему sming на многопоточную - процессы SDK отдельно от тормоза spiffs или в spiffs вставлять обращения к таскам SDK. Это просто так не исправить без автора sming...
В связи с SDK1.4.0 в Sming:

1) Все обращения WRITE_PERI_REG(0x60000914, 0x73); не корректны - от них никакого толку

2) user_rf_pre_init() устарела (уже для SDK 1.3.0, китайцы исправили подсчет контрольной суммы блока RTC памяти)

3) Использование ets_set_idle_cb() для ‘тасков’ и динамических патчей SDK не возможно. Это запользовали китайцы в процедурах wifi_fpm_xxxx() и надо использовать свою модификацию ets_run() замещая её код в ROM-BIOS в IRAM.
После патча spiffs и вставки run_sdk_tasks(), sming стартовал с диском на 3824 Kb, успешно его форматнув:
Код:
don't use rtc mem data
rl+TCP connection
timeout updating: 70 -> 65535
Server timeout updating: 40 -> 900
fs.start: size: 3824 Kb, offset:40240000
m
Station configuration was updated to: HOME_AP
mode : sta(18:fe:34:fa:39:2d)add if0f r0, scandonestate: 0 -> 2 (b0)state: 2 -> 3 (0)state: 3 -> 5 (10)add 0aid 2cnt chg_B1:-40connected with HOME_AP, channel 1dhcp client start...ip:192.168.1.225,mask:255.255.255.0,gw:192.168.1.1
I'm CONNECTED:
192.168.1.225
addUser: me 123
pm open phy_2,type:2 0 0
Для патча spiffs пришлось его вырезать из C:\tools\sming\Sming\compiler\lib\libsming.a и вложить в проект. Так было проще :)
Но далее всё равно возникают ошибки уже в либах sming (ftp), т.к. не рассчитано на такую простую систему распределения процессов... не переписывать же весь sming :)
Ждем исправлений автора...
 

Вложения

Последнее редактирование:

Symrak

New member
dimakein, пока так и поступаю.
pvvx, спасибо за развернутый отчет, как всегда на высоте.
Ждем исправлений от автора.
 

aliaksei

New member
Подскажите по сборке в среде WinXP

Поставил как описано здесь http://geektimes.ru/post/241842/. Не ставил только богомерзкий эклипс.
С гитхаба скачал последний Sming. Из него папку Sming положил в корень C:\
Переменные среды настроил:
Код:
ESP_HOME=c:/Espressif
SMING_HOME=c:/Sming
Разумеется командой SET проследил что переменные среды подхватились.

Запускаю make и получаю ссобщение: make: *** c:/Sming: Invalid request code. Stop.
Но! Берем файл C:\Sming\Makefile-project.mk, кладем его в папку с примером и переименовываем в Makefile. Запускаем make и даже что-то собирается в out/firmware/ без ошибок:

Код:
0x00000.bin
0x09000.bin
firmware.map
fwMeminfo.new
spiff_rom.bin
Это был пример Basic_Blink

Куда смотреть, как чинить?

MinGW в данном случаем зачем нужен - только из-за make?
 

aliaksei

New member
Блин, вот так всегда )) Напишешь на форуме и сразу находишь решение.

Вобщем, в файле Basic_Blink\Makefile-user.mk строка номер 17 (# SMING_HOME = c:/tools/sming/Sming ) оканчивается пробелом.
И именно отуда я скопипастил в настройки переменных окружения путь с пробелом.
Make же утилита интеллектуальная, не первый раз сталкиваюсь что из-за пробела перестает собираться.
 

Kabron

Member
Теперь выдает ошибку
Makefile:20: C:\tools\sming\Sming;c:/tools/sming/Sming/Makefile-project.mk: No such file or directory
make: *** No rule to make target `C:\tools\sming\Sming;c:/tools/sming/Sming/Makefile-project.mk'. Stop.
Путь правильный, но там и в правду нет такого файла.
Ну это как я понимаю еще цветочки.
Но вот это то явная шиза:
make clean
C:\tools\sming\Sming/Makefile-project.mk:49: /C/tools/sming/Sming/Makefile-windows.mk: No such file or directory
make: *** No rule to make target `/C/tools/sming/Sming/Makefile-windows.mk'. Stop.


Причем установка без сучка и задоринки прошла.
И файл этот на месте
 
Сверху Снизу