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

Разбивка Flash памяти в Platfomio, помогите разобраться с LD скриптами

Oktan89

New member
Добрый день!

Проясните пожалуйста кто знает, что означает в LD скрипте строчка Empty
Доступные LD-скрипты‎: https://github.com/esp8266/Arduino/tree/master/tools/sdk/ld

Почему размер под sketch всегда равен 1 Мб для флешек в 4 Мб. Например https://github.com/esp8266/Arduino/blob/master/tools/sdk/ld/eagle.flash.4m2m.ld

К чему собственно этот вопрос, я пишу прошивку с обновлением OTA, но если место под скетч и OTA всего 1 Мб то этого мало! или я чего то не понимаю.
Во всех источниках что я находил флешь делиться без этого Empty.
Вот пример:
|-----Скетч----|-----OTA---------|--------SPIFFS-----------|-EEPROM-|--|--|--|--|

Судя по данному скрипту память делиться на 1 Мб под скетч и OTA, 2 Мб под SPIFFS, а еще 1МБ для пустышки...(что это такое? 🤪) или я не прав?
 

Oktan89

New member
Добрый день!

Вы меня сильно не пинайте, я пытаюсь разобраться.
Поправьте меня если я неправильно понял, данное чтиво. J

И так если мы имеем на пример ESP с флешкой размером в 4096 KB. При использовании OTA обновления наш объем делиться на 2 раздела по 1024 KB (user1.bin и user2.bin соответственно) при условии, что User data (я так понимаю user data можно использовать под SPIFFS), будет не больше 2048 KB. Так же из документа следует, что сам скетч при любом раскладе не может превышать 1024 KB!!!! (обидно)

Далее при использовании OTA если уже первая прошивка по проводу проведена. То скетч записывается во второй раздел user2.bin) ну и потом он переписывается в первый раздел user1.bin при этом user data тоже затирается.

Итого: к чему я все это вел, то есть полноценное место для нашей программы в итоге мы имеем :

Для Flash 4 МБ и user data 2 мега = 1 мегабайт + 1 мегабайт для обновления.

Для Flash 1 МБ (в этом случае flash на разделы не бьётся) и user data например 256KB = (512 KB +256) для работы программы (это при условии что сама программа не превысит 512 KB что бы обновление по воздуху прошло нормально)

То есть user data при обновлении учитывать не нужно? Это первый вопрос.

Ну и второй вопрос почему ограничение в 1 МБ? (то есть если наше устройство не предполагает работу с большим объемом данных пользователя (WebServer например) то смысла в больших объемах flash карты нету? А если программный код превысит 1 МБ?
 

nikolz

Well-known member
Добрый день!

Вы меня сильно не пинайте, я пытаюсь разобраться.
Поправьте меня если я неправильно понял, данное чтиво. J

И так если мы имеем на пример ESP с флешкой размером в 4096 KB. При использовании OTA обновления наш объем делиться на 2 раздела по 1024 KB (user1.bin и user2.bin соответственно) при условии, что User data (я так понимаю user data можно использовать под SPIFFS), будет не больше 2048 KB. Так же из документа следует, что сам скетч при любом раскладе не может превышать 1024 KB!!!! (обидно)

Далее при использовании OTA если уже первая прошивка по проводу проведена. То скетч записывается во второй раздел user2.bin) ну и потом он переписывается в первый раздел user1.bin при этом user data тоже затирается.

Итого: к чему я все это вел, то есть полноценное место для нашей программы в итоге мы имеем :

Для Flash 4 МБ и user data 2 мега = 1 мегабайт + 1 мегабайт для обновления.

Для Flash 1 МБ (в этом случае flash на разделы не бьётся) и user data например 256KB = (512 KB +256) для работы программы (это при условии что сама программа не превысит 512 KB что бы обновление по воздуху прошло нормально)

То есть user data при обновлении учитывать не нужно? Это первый вопрос.

Ну и второй вопрос почему ограничение в 1 МБ? (то есть если наше устройство не предполагает работу с большим объемом данных пользователя (WebServer например) то смысла в больших объемах flash карты нету? А если программный код превысит 1 МБ?
На первый вопрос ответ - да. Да Вы все правильно поняли.
На второй вопрос ответ - нет.
Сомневаюсь, что код веб сервера у вас будет большой. У вас будет много различной хрени, в виде всевозможных текcтов или рюшечек на страничках.
Вы можете хранить константы и текстовые сообщения либо во флеш выше области кода,
либо в файловой системе, которая будет создана выше кода.
------------------------
Относительно мало памяти, замечу,
что мечтать за 100 рублей поиметь суперкопьютер не вредно, но бесполезно.
 
Сверху Снизу