RAM -, Heap-und Stack-Speicher für ein STM32 board

Arbeite ich an einem Projekt, das erfordert, dass mindestens 500 kB Speicher verwendet werden. Ich habe ein SDK mit diesem code definieren, der stack und dem heap, und es funktioniert gut.

Stack_Size      EQU     0x00004000

            AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00200000

            AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

Aber ich versuche mich zu integrieren, eine Kamera und LCD-Bildschirm Funktion in dieser SDK, und wenn ich das mache, dass die höchsten Werte von stack und heap, zumindest bringen Sie den LCD-Bildschirm wie unten gezeigt. Alle Werte, die höher als dieser und der LCD-Bildschirm bleibt schwarz und der Anwendung nicht erscheint, um zu laufen.

Stack_Size      EQU     0x00004000

            AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00002B50

            AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

Brauche ich die Größe des stack und heap in der zweiten code-Beispiel entsprechen die Größen in der ersten code-Beispiel so, dass ich nicht stecken bleiben in einen hard-fault exception-Schleife, da kein Speicher vorhanden ist. Warum hat die Erhöhung der heap-Größe ist mein Projekt noch schlimmer? Also wie kommen Sie nicht scheinen sogar zu laufen, wenn ich erhöhe den heap-Größe?

Ich habe anbei einen screenshot von meinem Projekt-Optionen, so können Sie die Konfiguration der RAM.

RAM -, Heap-und Stack-Speicher für ein STM32 board

Unten ist die Menge an Speicher, die ich habe. Tut dieser Mittelwert, dass ich 2 MB RAM?

8 M x 32-bit-SDRAM verbunden ist SDRAM Bank1 des STM32F439NIH6 FMC
- Schnittstelle.

1 Mbit x 16 SRAM verbunden ist bank1 NOCH/
PSRAM2 der FMC-Schnittstelle und 8-bit
und 16-bit-Zugriff ist erlaubt BLN0 & BLN1 verbunden BLE & BHE von SRAM
bzw.

Können Sie bitte erklären, "die höchsten Werte, zumindest bis der LCD-Bildschirm"? Außerdem, was meinst du mit "die Erhöhung der heap-Größe ist mein Projekt noch schlimmer"? Die heap-Größe gewesen zu sein scheint, nahm von 0x00200000 bytes 0x00002B50 bytes. Ihre Beschreibungen ist äußerst unklar.
ja, es war reduziert, da wenn ich es die 0x00200000 Wert, der erforderlich ist, dann wird das Projekt nicht ausgeführt.
0x00200000 sind 2097152 bytes des heap - Ihre controller gar nicht so viel Speicher. Heap-und Stack-Auswahl ist eine wichtige und schwierige Aufgabe für STM32. Sie sollten denken, wie viel Speicher erforderlich ist, und legen Sie dann Ihren stack 'und, heap' zu den passenden Größen. Auch du brauchst auf jeden Fall wissen, wo Sie Ihre Variablen oder arrays deklariert werden. Machen Sie ein Betriebssystem verwenden?

InformationsquelleAutor Dude | 2014-07-24

Schreibe einen Kommentar