Используется платформа STM32F4, которая имеет 192kBytes SRAM, что мне достаточно.
Я пытаюсь создать справочную таблицу. LUT будет использоваться в расчетах несколько раз. И я хочу положить его в SRAM в процессе расчета, вместо FLASH, так как чтение SRAM происходит быстрее, чем чтение FLASH для ядра.
И я прочитал этот пост, в котором упоминается размещение LUT во флэш-памяти, что меня смущает. Что мне делать, чтобы записать данные во флэш-память для первой загрузки, а затем данные будут храниться в ОЗУ для последующих расчетов?
И если кто-нибудь знает CCM, стоит ли ставить LUT в CCM во время вычислений?
Простое определение таблицы без ключевого слова const приведет к тому, что таблица будет скопирована из Flash в RAM при запуске вашей программы; например
const short ax [] = { 1, 2, 3, 4 }; // stays in Flash
short bx [] = { 5, 6, 7, 8 }; // starts in Flash, copied to RAM
Вы можете проверить это поведение с помощью следующих двух строк кода:
bx[0] = ax[0]; // allowed, since you are modifying a RAM variable
ax[0] = bx[0]; // not allowed, ax is const
Я проверил это с помощью компилятора IAR для семейства STM32F10. Я не знаю, что такое CCM, извините.
Программисты встраиваемых систем нередко определяют большую инициализированную таблицу, забыв ключевое слово const, а затем удивляются, почему им не хватает оперативной памяти.
Дэмиен
ричичианле
Пол А. Клейтон
Дэмиен
ричичианле
ричичианле
Дэмиен
Дэмиен
Дэмиен
ричичианле
Дэмиен
ричичианле
Пол А. Клейтон
Дэмиен
Дэмиен
Пол А. Клейтон