Calliope 2 stürzt ab bei bestimmten Array und Buffer Größen

Fortsetzung der Diskussion von Maximale Array-Größe:

Seit der Diskussion im August haben sich die Einstellungen geändert: Es gibt z.B. den Bluetooth Schalter nicht mehr. Der wäre hierfür entscheidend.

Bei Calliope 2.x mit der Standard-Konfiguration in Projekteinstellungen pxt.json:

    "yotta": {
        "config": {
            "microbit-dal": {
                "bluetooth": {
                    "pairing_mode": 1,
                    "partial_flashing": 1,
                    "dfu_service": 1,
                    "event_service": 1,
                    "device_info_service": 1
                },
                "stack_size": 2048,
                "gatt_table_size": "0x800",
                "sram_end": "0x20008000",
                "RAM_SIZE": "\"32K\""
            }
        }
    }

funktioniert

let arrayNumber: number[] // max. 32 Elemente im Array
arrayNumber = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

let bu = pins.createBuffer(240); // max. Buffer.length 240

bei 33 Array-Elementen oder Buffer.length 241 stürzt Calliope 2.x sofort nach Übertragung des Programms ab. Das ist konstant und passiert immer bei genau diesen Werten.
Es ist aber möglich, viele Arrays oder Buffer von jeweils bis zu dieser Größe 32 bzw. 240 gleichzeitig zu definieren.

let size = 240
let arrayBuffer: Buffer[] // Array aus 8 Buffern je 240 Byte
arrayBuffer = [
Buffer.create(size),
Buffer.create(size),
Buffer.create(size),
Buffer.create(size),
Buffer.create(size),
Buffer.create(size),
Buffer.create(size),
Buffer.create(size)
]

let array1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array3 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array4 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array5 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array6 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array7 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
let array8 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

Ist irgendwo nur 1 Element zu viel (241 oder 33), stürzt Calliope 2.x sofort nach Übertragung des Programms ab.

Wenn es doch irgendwo funktioniert, dann ist die Konfiguration anders. Geladene Erweiterungen haben eine eigene Datei pxt.json. Darin versteckt sich z.B.:

    "yotta": {
        "config": {
            "microbit-dal": {
                "bluetooth": {
                    "enabled": 0
                }
            }
        }
    }

Dieser Ausschnitt ist zum Beispiel in der Erweiterung radio enthalten, welche die Blöcke Funk bereit stellt.
Das wirkt auf die Projekteinstellungen, ohne dass es dort sichtbar ist.

Die Zeile

"enabled": 0

kann man auch oben in die Projekteinstellungen hinzu fügen, ohne eine Erweiterung zu laden. Das Ergebnis ist, dass die Array- und Buffer-Grenzen aufgehoben sind. Es sind Buffer mit 1025 und mehr Bytes sowie Arrays mit beliebiger Größe (eine Grenze habe ich nicht erreicht) möglich.

Die Array Grenze von 32 und die Buffer Grenze von 240 bei Calliope 2.x lässt sich nicht mit zu wenig Speicherplatz begründen. Dann wären nämlich nicht (mit der selben Konfiguration) 8 und mehr verschiedene Arrays und Buffer bis zu dieser Grenze gleichzeitig möglich.

Mehr Speicherkapazität in der Hardware löst das Problem nicht, weil es in der Software liegt.

Ich möchte das als Fehler melden und eine Lösung beantragen.

FG Lutz