Size: a a a

ESP8266 & ESP32 [RU]

2020 November 11

EG

Eduard Gilmutdinov (... in ESP8266 & ESP32 [RU]
Макс
В чем разница, стереть флешь и записать файл с единицами размером в память?
разницы мне кажется не какой что файл что esptool просто заполняет с 0x000000 адреса все ячейки памяти FF и всё.
источник

AV

Alexey Volkov in ESP8266 & ESP32 [RU]
Макс
Перед записью ведь сначала стирается флеш, потом пишется.
нет, это не так. Стирается полностью только если есть команда на это. Легко убедиться, если взять есп с флешкой на 16М и стереть ее. Там по времени заметно будет, что просто прошивка намного быстрее
источник

AV

Alexey Volkov in ESP8266 & ESP32 [RU]
Кроме того, если на флешке есть NVS или образ файловой системы, то при перепрошивке они не затираются
источник

М

Макс in ESP8266 & ESP32 [RU]
Не понимаю. У флеш памяти есть команды: стереть сектор, стереть блок секторов, стереть всю. Это команды которые исполнят флеш чип самостоятельно. После стирания в ячейках получается 0xFF. Да, команды эти исполняются довольно долго, но все равно быстрей записи. При записи поверх FF записываются байты данных. Запись идёт постранично или какой буфер есть в чипе. Но в любом случае запись происходит побайтно
источник

М

Макс in ESP8266 & ESP32 [RU]
В зависимости от чипа может быть разный набор команд стирания, но постраничное стирание как бы сама суть флеш-памяти
источник

М

Макс in ESP8266 & ESP32 [RU]
Ну и сама запись в флеш-память без стирания довольно безсмысленное занятие, получается новые данные ложатся поверх старых,
источник

М

Макс in ESP8266 & ESP32 [RU]
Хотя может быть команда записи странницы  со стиранием сразу
источник

D

Dmitrij in ESP8266 & ESP32 [RU]
Я прошу прощение. а может быть что во время стирания просто записывается, что ячейки с такими адресами пустые, а во время записи пустых строк они становятся реально пустыми. Может поэтому?
источник

М

Макс in ESP8266 & ESP32 [RU]
Перед записью во флеш-памяти должны быть FF , это состояние стёртой ячейки. Но конструктивно, для увеличения плотности памяти, отдельно каждая ячейка не имеет адресации при стирании, а адресуется сразу страница.

Во время записи 0xAC
Получится 0xFF & 0xAC = 0xAC
источник

М

Макс in ESP8266 & ESP32 [RU]
При записи большинство чипов тоже не дают адресовать данную ячейку,  адресуется страница. Команда 'записать страницу' и заполняешь буфер. А потом смотришь статус исполнения  в регистре статуса
источник

М

Макс in ESP8266 & ESP32 [RU]
У а есп ведь есть память на кристалле и отдельный флеш чип. Может в этом дело
источник

AV

Alexey Volkov in ESP8266 & ESP32 [RU]
Макс
У а есп ведь есть память на кристалле и отдельный флеш чип. Может в этом дело
У есп на кристалле только ROM. Все, что касается прошивки, файловой системы и даже второго бутлодера - лежит на внешней NOR флешке
источник

М

Макс in ESP8266 & ESP32 [RU]
Alexey Volkov
У есп на кристалле только ROM. Все, что касается прошивки, файловой системы и даже второго бутлодера - лежит на внешней NOR флешке
тогда лоадер может грузить данные во флеш как ему вздумается
источник

AV

Alexey Volkov in ESP8266 & ESP32 [RU]
Макс
тогда лоадер может грузить данные во флеш как ему вздумается
Он так и делает, это и задаётся в аргументах esptool. Так же в документации на esp есть такая штука как esp memory map - где что должно лежать, чтобы все работало как надо.
Я уже не помню низкоуровневое апи самой флешки, но в даташите точно написано, необходимо ли стирание перед новой записью.
источник

SR

Sergey Romanov in ESP8266 & ESP32 [RU]
Макс
Не понимаю. У флеш памяти есть команды: стереть сектор, стереть блок секторов, стереть всю. Это команды которые исполнят флеш чип самостоятельно. После стирания в ячейках получается 0xFF. Да, команды эти исполняются довольно долго, но все равно быстрей записи. При записи поверх FF записываются байты данных. Запись идёт постранично или какой буфер есть в чипе. Но в любом случае запись происходит побайтно
нет таких команд у 25QXXX
источник

М

Макс in ESP8266 & ESP32 [RU]
Sergey Romanov
нет таких команд у 25QXXX
Зачем вы это написали? Нет команд записи и нет команд стирания?
источник

М

Макс in ESP8266 & ESP32 [RU]
И прям так в вашем даташите написано? Команд для стирания памяти нет, команд для записи нет?
источник

М

Макс in ESP8266 & ESP32 [RU]
источник

М

Макс in ESP8266 & ESP32 [RU]
В строчках указан код команды
источник

D

Dmitrij in ESP8266 & ESP32 [RU]
Не хочу беспокоить на ночь глядя. но у меня новый ребус. BME280 не могу подконектить. Я уже  прочитал адрес 0х76 и вставил его в библиотеку, а тест показывает ничего.  есть какойто секрет?
источник