Хочу разместить внешнюю sdram в общее адресное пространство, чтобы в него автоматически могли размещаться переменные или еще лучше, если бы я мог объявлять массивы в заданной секции и чтобы там ничего неявно не размещалось. То есть на данный момент я нормально обращаюсь к памяти напрямую, а если конкретно создаю указатель, присваивая ему адрес вручную, размещаю там массив пикселей и вывожу его через LTDC все нормально, но хорошо бы, чтобы адрес массива не приходилось бы контролировать и массив размещался автоматически, но в заданном диапазоне адресов. На данный момент, перенес инит внешней sdram и инит системы тактирования в system_init. Думал это поможет, но все равно возникает такая проблема при запуске дебага пишет cannot access memory. Это происходит, если при диалоге я указываю линкеру о существовании памяти (ставлю галочку на RAM1, указываю диапазон адресов, ставлю no init). В скаттер файле пишется:
Код: Выделить всё
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00200000 { ; load region size_region
ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_RAM1 0xD0000000 UNINIT 0xD07FFFFF { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM1 0x20000000 0x00030000 {
.ANY (+RW +ZI)
}
}