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

SPI для flash для других устройств

wbeam

New member
Трудно. Т.к. надо перепаивать flash на модуле для правильного сравнения.
Зачем перепаивать на модуле? Только выводы к внешней flash и всё. Интересуют два тока потребления (на шине 0x55555555):
1) стандартный модуль с отключенным программно WiFi
2) стандартный модуль с отключенным программно WiFi и подключенной второй (внешней) flash
(само собой я этот тест и сам проведу если что)

Существуют различия в командах: Set Burst with Wrap 0x77 влияющая на Word Read Quad I/O 0xE7, Octal Word Read Quad I/O 0xE3. У Octal Word Read Quad нет Dummy цикла. Этого нет в GD flash.
Этот режим появляется от 16Мбайт-ной серии Winbond и выше, в меньших моделях его производитель заблокировал почему-то. Надо заметить, что подобный блочный кэш есть во всех моделях памяти SST, но по цене они проигрывают Winbond.

Да и для второй flash придется использовать второй CS, а пинов i/o у чипа и так мало.
Если есть опция, то может появиться и задача, где ради её решения этим пином придётся пожертвовать. Хотя в нынешней топологии модулей ESP без металлического экрана можно считать что такой опции нет, понятно что помехи будут мешать сигналу WiFi.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Зачем перепаивать на модуле? Только выводы к внешней flash и всё. Интересуют два тока потребления (на шине 0x55555555):
1) стандартный модуль с отключенным программно WiFi
2) стандартный модуль с отключенным программно WiFi и подключенной второй (внешней) flash
(само собой я этот тест и сам проведу если что)
Программа в из flash "кэшируется". Для "кэша" используются верхние 32 килобайта (2 банка по 16 кило) 64-х килобайтной IRAM. Отключение одного банка дает увеличение IRAM до 48 кило, но "кэш" справляется и тормоза на QSPI 80MHz не возникает. Проверено на массе различных особо требовательных прошивок (MP3, Web с открытием/закрытием до 200 файлов в секунду c 60 одновременно открытых соединений TCP/HTTP). Повесите вторую Flash, придется снижать QSPI до 40 MHz.
Если "кэша" хватает для текущих исполняемых процедур (а это без WiFi = 100%), то flash не читается.
Будете проверять чтение через регистры QSPI? Оно тормозное, если правильно не настроить...
Этот режим появляется от 16Мбайт-ной серии Winbond и выше,
Есть и в W25Q40BV, которая ставится на модули ESP12E DEVKIT
Если есть опция, то может появиться и задача, где ради её решения этим пином придётся пожертвовать.
Тогда внешняя Flash успешно вешается на другой SPI.
Иначе достаточно сложно работать с QSPI на которой находится и сама прошивка. Обращаться только из IRAM к внешней flash, запретив всё - не дело.
Единственное преимущество второй flash - расширение размера кода охватываемого "кэшем", т.к. он всего 1 Мегабайт от начального адреса flash. Но и то при переключении на другой банк (другую flash) придется сбрасывать "кэш" и написание программ по одному адресу в имеющихся UDK и прочих компиляторах очень сложно... В итоге этот плюс нивелируется в нуль.
Короче все рекомендации вам выданы - хотите испортить свой модуль двумя Flash - никто не запрещает :)
 
Последнее редактирование:

wbeam

New member
он всего 1 Мегабайт от начального адреса flash. Но и то при переключении на другой банк (другую flash) придется сбрасывать "кэш" и написание программ по одному адресу в имеющихся UDK и прочих компиляторах очень сложно... В итоге этот плюс нивелируется в нуль.
С этого и надо было начинать, а не про помехи ))) этот аргумент - наповал! Тогда все вопросы снимаю. Придётся пока ставить дубовый корпус от Winbond...
 

pvvx

Активный участник сообщества
Придётся пока ставить дубовый корпус от Winbond...
Зато в нем организуется диск и/или записи данных на 15 Мегабайт.
Ресурс перезаписи всё равно выжрет китай-SDK. У них сектор с настройкам WiFi стирается переписывается при каждом старте 2 раза и при следующих сменах конфигурации, подключения к AP и т.д...
Итог рассчитан китайцами на вымирание flash за год (до года работы) при частых deep-sleep, чтобы вы купили новый модуль.
 

wbeam

New member
Какие хитрожопые... значит надо заглушки повставлять на процедуры записи и конфигурировать сеть один раз при прошивке. Похоже с этими братьями не расслабишься... и сдаётся мне, что инфу про 1МБайт вы тоже не из даташитов получили? Что-то я не встречал там никаких подробностей про кэширование.
 

pvvx

Активный участник сообщества
Похоже с этими братьями не расслабишься...
Они просто ничего программировать не умеют. Espressif - шарашкина контора.
И что вы хотите, если даже во встроенной ROM чипа толпа ошибок, как и в части его внутреннего оборудования...
Что-то я не встречал там никаких подробностей про кэширование.
От этого они и ставят 4 Flash на свой макет, чтобы запускать разные прошивки. Походу они этого сами не знали :) Скорее всего, по массе факторов, и доков на чип у них нет (или их программеры совсем импотенты - уже более года отлаживают SDK и отладить не могут). Проблема с 1 Мег проявилась позже (примерно когда и я это описал) и им пришлось всё менять - создавать кривые конфигурации, а не всё в одной большой flash... Сделали для этого кучу загрузчиков и даже driver_lib/driver/spi_overlap.c. Никто же не знает, можно или нет переназначить адрес области "кэшировния" в регистрах чипа.
На коммерческий рынок, в качестве готового изделия, ESP8266 так и не вышел и не выйдет из-за горе программеров в Espressif и их политики не давать документацию на потроха чипа. А связано это наверняка с нарушением патентов... Наворовались и прикрылись липовым листочком - оф. объявив, что боятся WiFi хулиганов, по тому не публикуют исходники WiFi части :)
 
Последнее редактирование:

wbeam

New member
И всё-таки хотелось бы выйти на какой-то конструктивный вариант. А что если на модуль поставить SPI RAM? Ведь явно памяти мало в чипе.
 

pvvx

Активный участник сообщества
А что если на модуль поставить SPI RAM? Ведь явно памяти мало в чипе.
Для этого у чипа есть HSPI входы/выходы. И нужна не RAM, а FRAM. CY15B104Q http://www.cypress.com/file/140591/download
На QSPI корпус большой
CY14V101QS http://www.cypress.com/file/178606/download
CY14V101PS http://www.cypress.com/file/178591/download
А 24-Ball FPGA вы наверняка не сделаете.
 
Последнее редактирование:

wbeam

New member
Мне кажется более логичным вариант с RAM на QSPI и Flash на HSPI. Вопрос в том можно ли будет адаптировать китайский софт под такую конфигурацию.

А 24-Ball FPGA вы наверняка не сделаете.
В моём варианте сейчас это как раз предельный размер корпуса снизу - 6х8мм. Сделать можно было бы, если бы у FRAM большого объёма не был бы такой конский ценник. Один этот корпус будет стоить в 10 раз больше всей комплектации модуля)))
 

pvvx

Активный участник сообщества
В моём варианте сейчас это как раз предельный размер корпуса снизу - 6х8мм. Сделать можно было бы, если бы у FRAM большого объёма не был бы такой конский ценник. Один этот корпус будет стоить в 10 раз больше всей комплектации модуля)))
Там i/o 2V.
A fram на 64 кило не сильно дороже обычной EEPROM.
Но только объясните, зачем это всё нужно ESP8266?
Обычная одиночная flash на 16 мегабайт (4096 секторов на 10000 стираний) дает возможность 500 дней стирать и писать следующий сектор каждую секунду без выхода за пределы расчетного значения кол-ва гарантированных перезаписей. Это объем в 160 Гбайт, если предположить, что это сохранение результатов для периодической отсылки: т.е. 350 мегабайт в сутки при ресурсе в 1.5 года, каждый час передача по 16 секунд на TCP с скоростью 1 Мегабайт в секунду, что и дает ESP8266. 4 кило в секунду с датчика. Если он 16 битный -> опрос в 2 кГц.
 
Последнее редактирование:

wbeam

New member
Если закладывать ресурс на год-два, то может и не надо заморачиваться. А если больше? 5 лет? 10 лет? Расчёт у вас на случай если организовать последовательную запись, чтобы не записывать значения в одно и то же место. Всё время помнить об этом - разве не гемор? Решение в лоб - это поставить FRAM с режимом STORE/RECALL, но у Cypress минимальный чип с таким режимом CY14B101 и стоит он 7usd... что явно небюджетно. Ваш вариант с QSPI - стоит ещё больше, плюс он ещё и низковольтный. А если поставить FRAM например 64КБ, то туда уже не влезет китай-SDK. FRAM на 2МБит (максимальный объём из представленных) будет стоить примерно 10usd - для совместной работы с ESP8266 явно избыточная цена.

Поэтому хотелось бы выполнить классический вариант - все алгоритмы крутить в RAM, обращаясь к flash только при необходимости. Пока я нашёл только один вариант - есть дешёвые SPI RAM от Microchip, но они 20МГц (23LC1024, 1 Mbit, QSPI). Снижение скорости обмена компенсируется бесконечным ресурсом... надо подумать. Но ещё раз хочу спросить - реально ли адаптировать китайский софт под такую конфигурацию памяти? Хотя бы теоретически можете предположить?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Расчёт у вас на случай если организовать последовательную запись, чтобы не записывать значения в одно и то же место. Всё время помнить об этом - разве не гемор?
Неа. Обычный циклический (круговой) буфер.
Но ещё раз хочу спросить - реально ли адаптировать китайский софт под такую конфигурацию памяти? Хотя бы теоретически можете предположить?
Нет.
 

Elik

New member
А что делать, если нужно более 16мб памяти? Подключал СД карту, но скорость загрузки веб страниц с нее черепаший....
 
Сверху Снизу