MicroPython:Библиотеки/esp/esp.set native code location(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 5: Строка 5:
=esp.set_native_code_location(start, length)<ref>[http://docs.micropython.org/en/latest/library/esp.html docs.micropython.org - esp — functions related to the ESP8266 and ESP32]</ref>=
=esp.set_native_code_location(start, length)<ref>[http://docs.micropython.org/en/latest/library/esp.html docs.micropython.org - esp — functions related to the ESP8266 and ESP32]</ref>=


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
esp.set_native_code_location(start, length)
esp.set_native_code_location(start, length)
</syntaxhighlight>
</syntaxhighlight>

Текущая версия от 18:13, 14 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


esp.set_native_code_location(start, length)[1]

esp.set_native_code_location(start, length)
Примечание

Это функции только для ESP8266.

Задает место, где будет размещаться и выполняться нативный код после его компиляции. Нативный код генерируется, когда в функции применяются декораторы @micropython.native, @micropython.viper и @micropython.asm_xtensa. ESP8266 должна выполнять код либо из iRAM, либо из flash-памяти размером менее 1 Мб (которая отображена в память), и эта функция как раз управляет тем, где будет находиться этот код.

Если в аргументах start и length будет None, нативный код будет расположен в неиспользуемой области памяти в конце участка iRAM1. Размер этой неиспользуемой области зависит от прошивки и обычно невелик (около 500 байт), но его достаточно для хранения нескольких очень маленьких функций. Преимущество использования этого участка iRAM1 в том, что он не изнашивается из-за записи на него.

Если в start или length будет не None, то это должны быть целые числа. В start задается байтовое смещение с начала flash-памяти, куда будет сохраняться нативный код. В length задается, сколько байтов flash-памяти, начиная со start, можно использовать для хранения нативного кода. Значения в start и length должны быть кратны размеру сектора (4096 байт). Перед записью flash-память будет автоматически стерта, так что убедитесь, что используете участок, который больше никак не используется (например, прошивкой файловой системы).

При использовании flash-памяти для хранения нативного кода сумма значений в start и length должна быть меньше или равна 1 мегабайту. Помните, что после многократных стираний (и записей) flash-память может износиться, так что пользуйтесь этой функцией по минимуму. В частности, нативный код должен быть перекомпилирован и перезаписан на flash-память при каждом запуске (включая выход из режима глубокого сна).

В обоих сценариях выше (будь то iRAM1 или flash-память), если в заданной области не будет свободного места, то использование нативного декоратора в функции приведет к тому, что во время ее компиляции будет возбуждено исключение MemoryError.

См.также

Внешние ссылки