B4R Code Snippet [ESP32] flash partitions

Maybe can be useful to work with the partition, result of NVS partition is correct - corresponding to "partitions.csv":
# Name, Type, SubType, Offset, Size
nvs, data, nvs, 0x9000, 0x5000

Module name 'espnvs':
Private Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Private nvsaddress, nvssize As ULong    'ignore
End Sub

Sub Init
End Sub

Private Sub Get_NVS_Start_address
    RunNative("nvsaddress", Null)
    Log("NVS : address = ", nvsaddress, "; size = ", nvssize)
End Sub

#if C
void nvsaddress(B4R::Object* u) {
const esp_partition_t *nvs_partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL);
b4r_espnvs::_nvsaddress = nvs_partition->address;
b4r_espnvs::_nvssize = nvs_partition->size;

#end if

Docs: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html

'write data into NVS memory
Sub WriteNVS(src() As Byte, offset As UInt)
    Dim a As UInt = nvsaddress + offset
    eeprom.WriteBytes(src, a)
End Sub

'write data into NVS memory
Sub ReadNVS(position As UInt, count As UInt) As Byte ()
    Dim a As UInt = nvsaddress + position
    Return eeprom.ReadBytes(a, count)
End Sub

Sub TestW
    Dim t(3) As Byte
    t(0) = 5
    t(1) = 6
    t(2) = 7
    WriteNVS(t, 0)
End Sub

Sub TestR
    Dim t(3) As Byte = ReadNVS(0, 3)
End Sub
Last edited: