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.