CCM dataram - что за дичь? Пережиток прошлого..

STM32F4 имеет в своём составе огромный блок оперативной памяти, который может быть использован для любых целей, кроме исполнения из него программного кода. По сути это оперативная память для хранения констант, таблиц и стека... Даже невозможно представить, если вы ассемблерщик, для чего может пригодится столько оперативки, из которой нельзя выполнять код...

Но мало ли. Вдруг нужна. По умолчанию эта память обесточена, чтоб электричество не трескала. Она же бесполезная!
Но сейчас мы её включим.

Для инициализации CCM нужно выполнить один простой шаг: затактировать её.

    MOV32 R0, RCC_BASE+RCC_AHB1ENR @ Загрузим адрес регистра AHB1ENR
    LDR R1, [R0] @ Считали регистр
    ORR R1, R1, RCC_AHB1ENR_CCMDATARAMEN @ Установили бит CCMDATARAMEN
    STR R1, [R0] @ Сохранили
    DSB


Всё, заработала. Теперь вы можете спихать туда 64 килобайта констант. А мы посмотрим :-)

    MOV32 R0, CCMDATARAM_BASE
    MOV32 R1, 0xA5A5A5A5
    STR R1, [R0]

    @ Можно натравить на CCM вершину стека
    .word    CCMDATARAM_BASE+65536
    .word    Start+1

    @ Всё просто


p.s. Хорошая новость заключается в том, что этот косяк уже поправили. Код из CCM исполнять теперь можно! Начиная с серии F3, которая появилась следом за F4. Бросаемся на F3!! И тут нас ждёт засада... F3 медлительные, как тинки..

Вся надежда на F7.