Спецификации типа памяти

MikroPascal PRO для ARM поддерживает использование всех областей памяти.
Каждая переменная может быть явно назначена определенному пространству памяти, включая спецификатор типа памяти в объявлении или неявно назначенный.

Можно использовать следующие спецификаторы типа памяти:

code

Описание

Тип памяти code может быть использован для размещения констант в памяти программы.

Пример
// текст размещается в программной памяти 
const txt = 'ENTER PARAMETER:'; code;

data

Описание

Этот спецификатор памяти используется при хранении переменной в ОЗУ данных.

Пример
// помещает data_buffer в памяти данных
var data_buffer : char; data;

rx

Описание

Этот спецификатор памяти позволяет хранить переменную в пространстве рабочих регистров (зарезервировано только для целей компилятора).

Пример
// помещает y в Rx пространство  	
var y : char; rx;

sfr

Описание

Этот спецификатор памяти позволяет пользователю получить доступ к специальным регистрам функций. Он также инструктирует компилятор поддерживать такое же имя идентификатора в источнике и сборке.

  Примечание :Переменные могут быть выделены только в пространстве sfr с помощью абсолютной директивы или по директиве переменной, уже выделенной в пространстве sfr.
Пример
// Extern y in sfr space
var y : byte; sfr; external;

// Puts y in sfr space by absolute (sfr addresses are MCU specific)
var y : byte; absolute 0x40004000; sfr;

// Puts y in sfr space by at
var y: char at GPIO_PORTA;

ccm

Описание

Этот спецификатор памяти позволяет пользователю выделять переменные в Core Coupled Memory (CCM).
Он доступен только для MCU, которые обладают этим типом памяти (в настоящее время только семейство STM32 Cortex M4).

Пример
// Put variable y in CCM space :
var y : byte; ccm

far

Описание

Этот спецификатор памяти используется, если регистры SFR находятся за пределами обычного пространства SFR. Он доступен только для подсемейства STM32F3xx MCU.

Пример
var GPIOA_BASE : dword; absolute 0x48000000; volatile; sfr; far;

  Примечание : Если ни один из спецификаторов памяти не используется при объявлении переменной, спецификатор данных будет установлен по умолчанию компилятором.