Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическиое пособие_10.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.01 Mб
Скачать

2.2. Память процессора и адресное пространство

Процессор имеет единое адресное пространство для данных и программ. Внутренняя память процессора включает три вида памяти:

1)On-Chip Dual-access Random Access Memory (DARAM) энергозависимая.

2)On-Chip Single-access Random Access Memory (SARAM) энергозависимая.

3)On-Chip Read-only memory (ROM) энергонезависимая

Энергозависимость, означает потерю данных при выключении питания. Энергонезависимая память сохраняет данные.

RAM означает память с произвольным доступом (и чтение и запись). ROM означает, что в процессе работу процессора эта память может только читаться, а для записи как правило используются либо специальные программаторы, либо особые режимы (не рабочие) работы процессора.

Как правило, адресное пространство указывается в шестнадцатеричной системе.

Память DARAM занимает байтовое адресное пространство 00 00C0h - 00 FFFFh и включает 8-мь блоков (DARAM0-DARAM7) по 4К слов. Особенностью данной памяти является то, что за один цикл возможно два вида доступа: двойное чтение, двойная запись или одновременно чтение и запись, что значительно повышает быстродействие.

SARAM - память с одним типом доступа. Т.е. за один цикл возможно только одно чтение или одна запись. Адресное пространство занимает диапазон байтовых адресов 01 0000h–04 FFFFh и разделено на 32-а блока (SARAM0-SARAM31) по 4К слов в каждом.

SARAM и DARAM может быть сконфигурированы как память программ и как память данных. Эта же память используется для режима прямого доступа к памяти (ПДП).

Память ROM занимает адреса FE 0000h – FFF FFFh и разделена на 4-е блока по 16К слов. Всего 128К байт. Это адресное пространство может быть отведено под ROM или под внешнюю память. Если бит MPNMC в регистре ST3 очищен (по умолчанию), то процессор имеет доступ к ROM. В этой памяти хранится загрузочный код, который включается при сбросе процессора и различные программы и данные. В частности в этой области находится программа вычисления FFT. (Описание других программ и данных отсутствует.)

Внешняя память имеет адресное пространство 05 0000h – FFF FFFh. Обмен по EMIF может быть организован по 8-мь или 16-ть бит. Адресная шина при этом будет иметь 21бит и может использоваться до 5-ти сигналов выбора микросхемы памяти.

Процессор имеет дополнительное адресное пространство 64K байт (I/O space) для регистров управления, отделённое от адресного пространства программ и данных. Доступ к этим регистрам осуществляется с помощью отдельных инструкций. Не всё это адресное пространство занято, есть резервные ячейки. В таблице 2.1 приведены адреса и назначение управляющих регистров.

Таблица 2.1 адреса управляющих регистров

WORLD ADDRESS

PERIPHERAL

0x0000 – 0x0004

Idle Control

0x0C00 – 0x0C7F

DMA0

0x0D00 – 0x0D7F

DMA1

0x0E00 – 0x0E7F

DMA2

0x0F00 – 0x0F7F

DMA3

0x1000 – 0x10DD

EMIF

0x1800 – 0x181F

Timer0

0x1840 – 0x185F

Timer1

0x1880 – 0x189F

Timer2

0x1900 – 0x197F

Real Time Clock

0x1A00 – 0x1A6C

I2C

0x1B00 – 0x1B1F

UART

0x1C00 – 0x1CFF

System Control

0x2800 – 0x2840

I2S0

0x2900 – 0x2940

I2S1

0x2A00 – 0x2A40

I2S2

0x2B00 – 0x2B40

I2S3

0x2E00 – 0x2E40

LCD

0x3000 – 0x300F

SPI

0x3A00 – 0x3A7F

MMC/SD0

0x3B00 – 0x3B7F

MMC/SD1

0x7000 – 0x70FF

SAR and Analog Control Registers

0x8000 – 0xFFFF

USB

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

При трансляции проекта необходимо контролировать распределение памяти. На учебном диске распределение памяти контролирует командный файл lnkx.cmd.

Директива MEMORY в этом файле идентифицирует диапазоны адресов памяти, которые присутствуют физически и могут быть использованы программой. Каждый такой диапазон памяти имеет имя, стартовый адрес и длину. По умолчанию линковщик может использовать единое адресное пространство с названием PAGE 0. В процессорах C55x могут быть использовано до 255 страниц в зависимости от необходимости. Когда заполняется директива MEMORY необходимо указать все диапазоны адресов памяти, доступные в задаче. В качестве примера можно предложить следующий вид директивы Рис.2.1:

MEMORY

{

PAGE 0: /* ---- Unified Program/Data Address Space ---- */

MMR (RWIX): origin = 0x000000, length = 0x0000c0 /* MMRs */

DARAM0 (RWIX): origin = 0x0000c0, length = 0x00ff40 /* 64KB - MMRs */

SARAM0 (RWIX): origin = 0x010000, length = 0x010000 /* 64KB */

SARAM1 (RWIX): origin = 0x020000, length = 0x020000 /* 128KB */

SARAM2 (RWIX): origin = 0x040000, length = 0x00FE00 /* 64KB */

VECS (RWIX): origin = 0x04FE00, length = 0x000200 /* 512B */

PDROM (RIX): origin = 0xff8000, length = 0x008000 /* 32KB */

PAGE 2: /* -------- 64K-word I/O Address Space -------- */

IOPORT (RWI) : origin = 0x000000, length = 0x020000

}

Рис.2.1 Пример директивы MEMORY

Индексы RWIX означают следующее:

R-означает, что эта память может читаться.

W-означает, что в эту память можно писать.

I-означает, что эта память может содержать исполняемый код.

X-означает, что эта память может быть инициализирована.

После директивы MEMORY можно использовать директиву SECTIONS для более детального распределения памяти.