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

Расширение флеш-памяти

brig

New member
Значит вы не знаете как работает ESP8266EX.
В деталях - нет. Но это же микроконтроллер? А принципы работы микроконтроллеров знаю. Разрабатываю схемотехнические решения и программирую AVR на ассемблере и микропаскале.
Так что там с кэшированием? Зачем оно в данном модуле? Чем не устраивает непосредственная запись/чтение данных?
Для ESP8266 есть SDK. Больше пока ничего
Значит, это не ко мне...
 

pvvx

Активный участник сообщества
Возможно, но это уровнем ниже. Нужно что задает загрузчик и расшифровка процедур из ld\eagle.rom.addr.v6.ld :)

Остальное задается в трансляторе си. Типа:

Configuration Overview

Core Name lx106
Core Description 106Micro with large local memory
Configuration Detail

TIE source(s) for configuration
Xtensa ISA version
LX3.0
Instruction options
16-bit MAC with 40 bit Accumulator no
MUL16 yes
MUL32 Iterative
32 bit integer divider no
Single Precision FP (coprocessor id 0) no
Double Precision FP Accelerator no
CLAMPS no
NSA/NSAU yes
MIN/MAX and MINU/MAXU no
SEXT no
Boolean Registers no
Number of Coprocessors (NCP) 0
Enable Density Instructions yes
Enable Processor ID yes
Zero-overhead loop instructions no
Synchronize instruction no
Conditional store synchronize instruction no
TIE arbitrary byte enables no
Count of Load/Store units 1
Max instruction width (bytes) 3
L32R hardware support Extended L32R
Pipeline length 5
FLIX3: 3-way FLIX no
Vectra LX DSP coprocessor instruction family no
VectraVMB: Extra DSP Instructions no
ConnX D2 DSP no
HiFi2 Audio Engine DSP coprocessor instruction family no
Thread Pointer no
GPIO32: 32-bit GPIO interface no
QIF32: 32-bit Queue Interface no
Interrupts enabled ? yes
Interrupt count 15
Int 0 type / priority level ExtLevel / 1
Int 1 type / priority level ExtLevel / 1
Int 2 type / priority level ExtLevel / 1
Int 3 type / priority level ExtLevel / 1
Int 4 type / priority level ExtLevel / 1
Int 5 type / priority level ExtLevel / 1
Int 6 type / priority level Timer / 1
Int 7 type / priority level Software / 1
Int 8 type / priority level ExtEdge / 1
Int 9 type / priority level ExtEdge / 1
Int 10 type / priority level ExtEdge / 1
Int 11 type / priority level ExtEdge / 1
Int 12 type / priority level ExtEdge / 1
Int 13 type / priority level ExtEdge / 1
Int 14 type / priority level NMI / 3
High Priority Interrupts yes
Interrupt Level count 2
Medium Level Interrupts no
Timer count yes
Timer count 1
Timer 0 6
Byte ordering (endianness) Little Endian
Address registers available for call windows 16
Miscellaneous Special Register count 0
Generate exception on unaligned load/store address exception
Enable Processor Interface (PIF) yes
Write buffer entries 1
Enable PIF Write Responses no
Prioritize Load Before Store no
Widths of Cache and Memory Interfaces
Width of Instruction Fetch Interface 32
Width of Data Memory/Cache interface 32
Width of PIF interface 32
Width of Interface to instruction cache 0
Instruction Cache Not Selected
Data Cache Not Selected
Debug yes
Data address breakpoint registers 1
Instruction address breakpoint registers 1
Debug interrupt level 2
Trace port (address trace and pipeline status) yes
Add data trace no
On Chip Debug(OCD) yes
Use array of 4 Debug Instruction Registers (DIRs) no
External Debug Interrupt yes
Full scan yes
Make latches transparent no
Xtensa Exception Architecture XEA2
Memory Protection/MMU Region Protection
System RAM start address / size 0x60000000 / 64M
System ROM start address / size 0x50000000 / 16M
Local Memory
Instruction RAM [0] start address / size 0x40000000 / 1M [busy]
Instruction RAM [1] start address / size 0x40100000 / 1M [busy]
Instruction ROM start address / size 0x40200000 / 1M [busy]
Data RAM [0] start address / size 0x3ffc0000 / 256K [busy]
Data RAM [1] start address / size 0x3ff80000 / 256K [busy]
Data ROM start address / size 0x3ff40000 / 256K [busy]
XLMI start address / size 0x3ff00000 / 256K [busy]
Vector configuration
Reset Vector start address / size 0x50000000 / 0x300
Kernel (Stacked) Exception Vector start address / size 0x40000030 / 0x1c
User (Program) Exception Vector start address / size 0x40000050 / 0x1c
Double Exception Vector start address / size 0x40000070 / 0x10
Level 2 Interrupt Vector start address / size 0x40000010 / 0xc
Level 3 Interrupt Vector (NMI vector) start address / size 0x40000020 / 0xc
Relocatable Vectors yes
Selected Static Vector set Primary
Primary Static Vector Group Base Address 0x50000000
Alternate Static Vector Group Base Address 0x40000080
Alternate Reset Vector Address 0x40000080
Default Dynamic Vector Group Base Address (VECBASE) 0x40000000
Target & CAD options
Functional Unit Clock Gating yes
Global Clock Gating yes
Register file implementation block (Latches are deprecated) Flip-flops
Asynchronous Reset no
Software Target Options
Xtensa Tools should use Extended L32R no
Software ABI call0
C Libraries newlib
Compatibility Checking
Generic RTOS compatibility no
Target Linux compatibility no
Variant no
-------------
Т.е. вот это всё есть из китайского утекшего SDK:
Tensilica RC-2010.1 Documentation Index

General

Xtensa Processors RC-2010.1 Release Note
Tensilica Standard Processors RC-2010.1 Release Note
Xtensa Upgrade Guide
Diamond Series Processors Upgrade Guide
Xtensa Development Tools Installation Guide
Summary of Documentation Changes in RC-2010.1
Architecture

Xtensa Instruction Set Architecture (ISA) Reference Manual
HiFi2/EP Audio Engine ISA Reference Manual
ConnX D2 DSP Engine User's Guide
ConnX Vectra LX DSP Engine Guide
Tensilica Instruction Extension (TIE) Language Reference Manual
Tensilica Instruction Extension (TIE) Language User's Guide
Xtensa Processor Extensions Synthesis (XPRES) Compiler User's Guide
Xtensa Processor Interface Protocol Reference Manual
Xtensa Hardware

Xtensa LX3 Microprocessor Data Book
Xtensa 8 Microprocessor Data Book
Xtensa Hardware User's Guide
Tensilica Processors Bus Bridges Guide
Tensilica Bus Designer's Toolkit Guide
Xtensa System Designer's Guide
Tensilica Avnet LX60 (XT-AV60) Board
Tensilica Avnet LX200 (XT-AV200) Board
Standard DSP and Diamond Controllers

Diamond Series Hardware User's Guide
Tensilica 330HiFi Standard DSP Data Book
ConnX 545CK Standard DSP Data Book
Tensilica Diamond Standard Controllers Data Book
Software Tools

Xtensa Software Development Toolkit User's Guide
Tensilica C Application Programmer's Guide
Xtensa C and C++ Compiler User's Guide
Xtensa Instruction Set Simulator (ISS) User's Guide
Xtensa SystemC (XTSC) User's Guide
Xtensa SystemC in the Carbon SoC Designer Environment User's Guide
Xtensa SystemC (XTSC) Reference Manual
Xtensa SystemC (XTSC) Reference Manual (zip of HTML)
Xtensa Modeling Protocol (XTMP) User's Guide
Xtensa Energy Estimator (Xenergy) User's Guide
Xtensa Linker Support Packages (LSPs) Reference Manual
Xtensa Microprocessor Programmer's Guide
Xtensa System Software Reference Manual
Xtensa OSKit Guide
Tensilica On-Chip Debugging Guide
Tensilica Trace Solutions User's Guide
The Red Hat newlib C Library Reference Manual
The Red Hat newlib C Math Library Reference Manual
GNU Assembler User's Guide
GNU Binary Utilities User's Guide
GNU Debugger User's Guide
GNU Linker User's Guide
GNU Profiler User's Guide
Xtensa Co-Simulation Model for Mentor Graphics Seamless User's Guide
Addenda

Xtensa LX3 Data Book Prefetch Addendum

По ld\eagle.rom.addr.v6.ld есть это:
http://df.lth.se/~kongo/esp8266.bin/
 
Последнее редактирование:

brig

New member
Завален работой, к сожалению... почти без выходных приходится пахать. Удается урвать немного времени за счет сна. А жаль. Прибыли, наконец, из Китая новые модули и микросхемы флеш-памяти 25q32 и 25q64. Попробую модуль с микросхемой 25q32 на последней прошивке LUA nodeMCU, которая теоретически должна поддерживать 32Мбит. Результат вряд ли будет положительным, судя по тому, как эта прошивка "поддерживает" W25Q128. Но попробовать все же следует...



 

brig

New member
Испытания произвел. Здесь отчет.
В программировании на СИ и в использовании-компиляции SDK я полный нуль, поэтому испытать смог только скомпилированную прошивку для 512К-флеш (а хорошо бы для 4М) версии 0.9.4.

Как и ожидалось, проблемы все еще присутствуют. Хотя есть и положительные сдвиги: прошивка уже не разрушается при переполнении доступной области флеш-памяти и не происходит связанной с этим самопроизвольной перезагрузки модуля.

Будем надеяться, что разработчики со временем доведут работу с файлами в NodeMCU до ума...
 

pvvx

Активный участник сообщества
http://www.esp8266.com/viewtopic.php?f=24&t=749&start=20#p6299
Извините, но эти данные из вашего теста ни о чем не говорят, кроме того, что в Flash записано 768+256+1024+20480+19456+20480+20480+20480=103424байта. Пустая область в стандартной flash на 512 кбайт и то больше...
Будем надеяться, что разработчики со временем доведут работу с файлами в NodeMCU до ума...
Надейтесь :) Мне flash ещё не пришла - застряла на почте.
 

brig

New member
......эти данные из вашего теста ни о чем не говорят.......
Неверно. Полезная информация здесь получена.
Разработчики NodeMCU не потрудились информировать пользователей о том, каков размер флеш-памяти, доступный для размещения пользовательских данных. Тест показал, что в случае прошивки 512k-flash пользователю доступны до 100Кбайт. На это и следует рассчитывать пока при написании LUA-скриптов. Ранее я выяснил, что при прошивке 4M-flash и установленной на модуле микросхеме 25q32 пользователю доступны 1,68Mбайт.
 

pvvx

Активный участник сообщества
Неверно. Полезная информация здесь получена.
Разработчики NodeMCU не потрудились информировать пользователей о том, каков размер флеш-памяти, доступный для размещения пользовательских данных. Тест показал, что в случае прошивки 512k-flash пользователю доступны до 100Кбайт. На это и следует рассчитывать пока при написании LUA-скриптов. Ранее я выяснил, что при прошивке 4M-flash и установленной на модуле микросхеме 25q32 пользователю доступны 1,68Mбайт.
100Кбайт имеют большое различие с 103424 байта?
"Тест показал," точно 102400 байта? Или +- километр :)
У NodeLua Currentversion: 1.0.20150102 Download я наблюдаю примерно 524288-277188+20272-16384-16384 = 234604 свободных байта во flash, с учетом зон сохранения настроек. :) Это 2 по 16к в областях с 0x3C000..0x40000 и 0x7C000..0x80000 (использует SDK)
С резервом для будущих изменений (увеличения кода) и учетом шага секторов flash в 4к, обеспечить 200кбайт на стандартной flash они вполне бы могли... Но...
Прошивка NodeLuaсоздана исключительно ради бесплатных тестов пользователями, того чего написали авторы, а не для использования пользователями. Не забывайте это.:) Пишите им.
 
Последнее редактирование:

brig

New member
100Кбайт имеют большое различие с 103424 байта?
Что означает сия фраза?
Бывает, что наличие/отсутствие нескольких байт имеет критически важное значение, а бывает и не принципиальным. Какой вариант ответа вас устроит?
"Тест показал," точно 102400 байта? Или +- километр :)
Хороший вопрос (в данном случае)...
Именно "+-", поскольку странным образом зависит от размеров записываемых файлов В качестве примера, предлагаю посмотреть результаты тестов для 1M-flash firmware здесь.
Впрочем, не обязательно верить мне на слово. Можно воспроизвести эти тесты на любом модуле с прошивкой 512k-flash.
Прошивка NodeLuaсоздана исключительно ради бесплатных тестов пользователями, того чего написали авторы, а не для использования пользователями.
Не согласен.
Люди уже сделали на ней ряд практически работающих устройств. И совсем скоро этих решений будет много (больше, чем на всяких других прошивках). Почему? Да очень просто: не являясь профи в SDK, не вдаваясь в головоломные сложности, пользуясь простым бейсик-подобным языком сценариев, можно создавать устройства с весьма сложными и разнообразными функциями.
Вам об этом уже говорили, советую прислушаться.

Мне, к примеру, (на сегодня) всего лишь требуется вот такого типа устройство, которым я мог бы управлять через интернет дистанционно через простейший веб-интерфейс.
Ну а если ребята доведут NodeMCU до безглючного состояния, если сделают беспроблемный доступ к флеш-памяти объемом хотя бы 32Мбит, то попробую реализовать решение по беспроводной сети управления кассовыми аппаратами (кассовый сервер). Опыт в подобных разработках имею.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Люди уже сделали на ней ряд практически работающих устройств. И совсем скоро этих решений будет много (больше, чем на всяких других прошивках). Почему? Да очень просто: не являясь профи в SDK, не вдаваясь в головоломные сложности, пользуясь простым бейсик-подобным языком сценариев, можно создавать устройства с весьма сложными и разнообразными функциями.
Они ещё работают? :) Каким образом, если она базируется на SDK у которого главные функции - прием/передача по TCP/IP не работают и приводят к зависанию? :)
:)
Работает - это прошивка грузится в UART порт? :)
Могу вас ещё огорчить - BIOS не поддерживает flash более 524288 байт.
Нашел какие-то W25Q128FVSG и припаял в старый модуль:
W25Q128FVSG.jpg
Прошивка прошивается и работает. Остальное - потом, в теме для работы с ошибками SDK, чтобы вам было не понятно :)
 
Последнее редактирование:

NeoroN

Member
Из всего выше перечисленного я понял что припаивали разные микросхемы, но памяти от этого больше не стало - потому что она ограниченна логически в прошивках...
 

pvvx

Активный участник сообщества
Из всего выше перечисленного я понял что припаивали разные микросхемы, но памяти от этого больше не стало - потому что она ограниченна логически в прошивках...
Да. Но это обходится и проблем не вызывает - паять дольше, чем писать что надо изменить.
Причина - в SDK Espressif и её горе программистах...
 

pvvx

Активный участник сообщества
В данных модулях площадки немного больше и паять туда 16M flash проще:
ESP8266ex_mod12.jpg
На типе 1 модуля, приходится откусывать выводы. Изгибать их нельзя - они входят в пластик на о.1 мм и они выпадают :)
fl032pif.jpg
 
Последнее редактирование:

brig

New member
На типе 1 модуля, приходится откусывать выводы. Изгибать их нельзя - они входят в пластик на о.1 мм и они выпадают :)
Можно и откусывать, если кривость рук не позволяет подогнуть на 0,5 мм с каждой стороны. Из многих десятков таких операций у меня не повредилась ни одна микросхема.
А это...

...просто ужас какой-то! Результат теракта? :)
 

PIKI

New member
"...просто ужас какой-то! Результат теракта?"
Зачем сразу в крайности?! Всякая судьба у таких микросхем, не все их новыми достают из ящика.
Вопрос как раз по FL032. Пробовал ставить их (выпаяны из TP-LINK MR3020), дважды - работают ненормально, не то что 4М, виснут на первых 30-50 кб записи. Команда Format() выполняется за полсекунды, т.е. стирания 4М нет. Может, кто-то знает существенные их отличия от W25Q32,64 и т.д.?
Потом на их место поставил W25Q64, с последней прошивкой под 4 Мб работают как у BRIG, тоже пишется максимум 1,74Мб.
 
Последнее редактирование:

pvvx

Активный участник сообщества
"...просто ужас какой-то! Результат теракта?"
Зачем сразу в крайности?! Всякая судьба у таких микросхем, не все их новыми достают из ящика.
Вопрос как раз по FL032. Пробовал ставить их (выпаяны из TP-LINK MR3020), дважды - работают ненормально, не то что 4М, виснут на первых 30-50 кб записи.
На фото flash именно от туда. Пытался осторожно подогнуть ноги - треснула. Измерил - реально 0.2 мм всего в пластиковый корпус нога заходит, пытался припаять к проводку (от этого она такая страшная стала), который уходи к кристаллу - он торчит, но плюнул и выкинул. 16Мегабайтных теперь куча...
Под рукой есть ещё один TP-LINK MR3020 - потом сниму с него и проверю, а в него 16М...
Команда Format() выполняется за полсекунды, т.е. стирания 4М нет. Может, кто-то знает существенные их отличия от W25Q32,64 и т.д.?
Потом на их место поставил W25Q64, с последней прошивкой под 4 Мб работают как у BRIG, тоже пишется максимум 1,74Мб.
Где пишется - небось в криво-портированной Lua? У меня все 16М пишутся-читаются.
Большая половина прошивки (кодов), которая никуда не лезит и тормозит в NodeLua занимается дисковыми операциями с Flash :) Т.е. кода, занимающегося раскидыванием клочков по flash, почти к половине объема самой flash на 512кб. :) :) А что вы хотите на той Lua запрограмить, если там всего 10кило памяти? Установки WiFi? TCP/IP там с стандартными ошибками SDK от Espressif. Исправлять их Espressif не хочет. Они приводят к зависанию при приеме-передаче...
Flash не виновата - это писатели NodaLua "не умет её говить" :(
 
Последнее редактирование:

brig

New member
У меня все 16М пишутся-читаются
Можно только позавидовать. Жаль только, что кроме вас да еще нескольких подобных вам "SDK-шаманов" никто этим воспользоваться в своих разработках не сможет.
что вы хотите на той Lua запрограмить, если там всего 10кило памяти?
Следите за новостями. Уже более 20-ти "кило".
...... с стандартными ошибками SDK от Espressif. Исправлять их Espressif не хочет.......писатели NodaLua "не умет её говить"
Ну, может быть, научатся со временем. Самое главное преимущество данной разработки - её открытость и доступность рядовым пользователям. Ваше же дело бесперспективно... игрушка для "закрытого клуба". Чем в этом плане вы отличаетесь от Espressif? И про вас со временем будут говорить такое: "....стандартные ошибки....исправлять их не хотят...".

Таково (на сегодня) - мое личное мнение.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Таково (на сегодня) - мое личное мнение.
Оно никого не интересует. Причина - NodeLua не работает и имеет множество неисправимых ошибок в главной части - коммуникации по TCP/IP.
Lau без 1Мегобайта памяти бесперспективна. Только для настроек WiFi.
Вставить в прошивку Lau + Web = один день проф. программиста (я таковым не являюсь - у меня другие задачи).
Lau код готов изначально http://www.lua.org/ - его надо только скопировать и сочленить в нескольких местах.
Тема с расширением памяти закрыта. Как работать с большими Flash давно указал http://www.esp8266.com/viewtopic.php?f=9&t=1065#p6738
 
Последнее редактирование:

Strelok

New member
Надейтесь. Мне заказ флэшек и новых модулей ещё не пришел.
А пока единственная программа, которая говорит о размере flash и дает её считать и другие потроха - эта: TestRx.zip
Посмотреть вложение 16Посмотреть вложение 17
Посмотреть вложение 18
Опишите пожалуйста (для нубов), как пользоваться встроенными тестами. И еще при попытке зайти в "Debug Function" просит логин и пароль. В терминал вообще каша валится.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Сверху Снизу