War ein Paar Tage unterwegs, nun gehts weiter :)
In den Projekt-Optionen in VisualDSP habe ich einen neuen Heap im SDRAM
(L3) angelegt und "HEAP_SDRAM" genannt. Ich falls du nicht die
automatisch erzeugten LDF-Files benutzt musst du da ggf. selbst Hand
anlegen.
In dem Neuen Heap kannst du dann wie folgt Speicher reservieren:
1 | uint16_t *fb;
|
2 | int heap_index;
|
3 |
|
4 | heap_index = heap_lookup(HEAP_SDRAM);
|
5 |
|
6 | if (heap_index < 0) {
|
7 | printf("Heap %d is not setup\n", HEAP_SDRAM);
|
8 | exit(EXIT_FAILURE);
|
9 | }
|
10 |
|
11 | printf("L1: % 8u bytes free\n", heap_space_unused(0));
|
12 | printf("SDRAM: % 8u bytes free\n", heap_space_unused(heap_index));
|
13 |
|
14 | fb = heap_malloc(heap_index, TFT_WIDTH * TFT_HEIGHT * sizeof(uint16_t));
|
15 | if(fb == NULL)
|
16 | {
|
17 | printf("ERROR: Not enough memory in SDRAM!\n");
|
18 | exit(EXIT_FAILURE);
|
19 | }
|
Danach habe ich einfach einen Breakpoint gesetzt, die Adresse in fb
ausgelesen und das Bild per Memory Fill an die entsprechende Adresse
geschrieben.