7. Запоминающие устройства
7.1. Отличительные особенности
- Flash-память программ
- Одно линейное адресное пространство
- Внутрисистемное программирование
- Поддержка самопрограммирования под управлением программы загрузчика
- Сектор прикладной программы для хранения кода программы
- Сектор таблицы приложения для хранения данных или кода прикладной программы
- Загрузочный сектор для хранения прикладной программы или программы загрузчика
- Отдельные биты защиты и защита всех секторов
- Встроенная быстродействующая проверка CRC для выбранного сектора flash-памяти программ
- Память данных
- Одно линейное адресное пространство
- Одноцикловый доступ со стороны ЦПУ
- SRAM
- EEPROM
- Побайтный и постраничный доступ
- Опциональное распределение памяти для прямого чтения и записи
- Память ввода-вывода
- Конфигурационные регистры и регистры статуса для всех УВВ и модулей
- Регистр общего назначения с 16-битным доступом для хранения глобальных переменных или флагов
- Арбитраж шины
- Безопасная и детерминистическая обработка приоритетов ЦПУ и контроллера DMA
- Отдельные шины для SRAM, EEPROM, памяти ввода-вывода и внешней памяти
- Одновременный доступ к шинам для ЦПУ и контроллера DMA
- Область памяти с запрограммированным производителем сигнатурным кодом
- Идентификационный код для каждого типа микроконтроллера
- Серийный номер для каждого микроконтроллера
- Калибровочные байты генератора
- Калибровочные данные АЦП, ЦАП и датчика температуры
- Сигнатурный код пользователя
- Размер равен одной странице flash-памяти
- Возможность программного считывания или программной записи
- Остается неизменным после операции стирания всей памяти
7.2. Обзор
Архитектурой AVR предусматривается два пространства памяти: память программ и память данных. Кроме того, в МК XMEGA A3 интегрировано EEPROM для энергонезависимого хранения данных. Все три пространства памяти являются линейными и не требуют страничной адресации. Информация по размерам встроенной памяти приведена в разделе "Информация для заказа". Кроме того, у каждого микроконтроллера имеется Flash-память с запрограммированным производителем сигнатурным кодом, в т.ч. калибровочные данные, идентификационный код МК, серийный номер и др. Имеется возможность блокировки дальнейших операций записи или чтения/записи применительно к энергонезависимым запоминающим устройствам. Это предотвратит несанкционированный доступ к прикладной программе.
7.3. Внутрисистемно-программируемая Flash-память программ
Микроконтроллеры XMEGA A3 содержат встроенную внутрисистемно-программируемую Flash-память для хранения программы (см. рисунок 7.1). Поскольку все инструкции AVR являются 16- или 32-битными, то и каждая ячейка Flash-памяти является 16-битной.
Пространство Flash-памяти разделено на сектор прикладной программы и загрузочный сектор. Оба сектора имеют отдельные биты защиты для установки ограничений на операции записи или чтения/записи. Для записи Flash-памяти с помощью инструкции записи в память программ (SPM) ее необходимо выполнять из загрузочного сектора.
Третий сектор Flash-памяти называется сектором таблицы приложения, который имеет отдельные биты защиты от записи или от чтения/записи. Сектор таблицы приложения может использоваться для энергонезависимого хранения данных или кода прикладной программы.
Рисунок 7.1. Flash-память программ (шестнадцатиричные адреса)
Сектор таблицы приложения и загрузочный сектор могут также использоваться для хранения кода программы.
7.4. Память данных
Память данных состоит из памяти ввода-вывода, EEPROM и SRAM, которые имеют единое линейное адресное пространство (см. рисунок 7.2). Чтобы проектирование было более простым, карта памяти всех микроконтроллеров в семействе выполнена идентичным образом с пустыми, зарезервированными областями у МК меньших типоразмеров.
Рисунок 7.2. Карта памяти данных (шестнадцатиричные адреса)
7.4.1. Память ввода-вывода
Все УВВ и модули адресуются через ячейки памяти ввода-вывода в пространстве памяти данных. Доступ ко всем ячейкам памяти ввода-вывода можно осуществить с помощью инструкций чтения (LD/LDS/LDD) и записи (ST/STS/STD), которые передают данные между 32 регистрами общего назначения ЦПУ и памятью ввода-вывода.
Инструкции IN и OUT предоставляют возможность прямого доступа к ячейкам памяти ввода-вывода по адресам от 0x00 до 0x3F.
Регистры ввода-вывода с адресами от 0x00 до 0x1F имеют возможность побитного доступа с использованием инструкций SBI и CBI. Для проверки состояния отдельных бит этих регистров предусмотрены инструкции SBIS и SBIC.
Адреса всех УВВ и модулей микроконтроллеров XMEGA A3 в пространстве памяти ввода-вывода представлены в разделе 30 "Распределение адресов модулей и УВВ".
7.4.2. Статическое ОЗУ памяти данных
Для хранения данных у микроконтроллеров XMEGA A3 предусмотрено встроенное статическое ОЗУ (SRAM).
7.4.3. EEPROM памяти данных
Для энергонезависимого хранения данных в микроконтроллеры XMEGA A3 встроено EEPROM, которое адресуется либо в отдельном пространстве памяти, либо в общем пространстве памяти данных. EEPROM поддерживает, как побайтный, так и постраничный доступ.
7.5. Сигнатурный код производителя
Сигнатурный код производителя - отдельный сектор памяти, в котором хранятся запрограммированные производителем данные. К их числу относятся калибровочные данные генераторов и аналоговых модулей. В сигнатурном коде также имеется идентификационный код микроконтроллера и уникальный неповторяющийся серийный номер. Идентификационные коды микроконтроллеров XMEGA A3 показаны в таблице 7.1. Серийный номер получается в результате объединения следующих данных: номер партии, номер пластины и координата кристалла МК на пластине.
Сигнатурный код производителя не поддерживает возможности записи или стирания, но зато он доступен для чтения, как со стороны прикладной программы, так и со стороны внешнего программатора.
Таблица 7.1. Идентификационные байты для микроконтроллеров XMEGA A3
Микроконтроллер |
Идентификационные байты |
Байт 2 |
Байт 1 |
Байт 0 |
ATxmega64A3 |
42 |
96 |
1E |
ATxmega128A3 |
42 |
97 |
1E |
ATxmega192A3 |
44 |
97 |
1E |
ATxmega256A3 |
42 |
98 |
1E |
7.6. Сигнатурный код пользователя
Сигнатурный код пользователя - отдельная область памяти, полностью доступная для чтения и записи со стороны прикладной программы и внешнего программатора. Сигнатурный код пользователя равен по размеру странице flash-памяти и предназначен для хранения такой статической информации пользователя, как калибровочные данные, специальные серийные номера или идентификационные коды, стартовые числа для генерации случайных чисел и др. Данный сектор не стирается при выполнении команды стирания Flash-памяти Chip Erase и требует выполнения отдельной команды стирания. Этим гарантируется сохранность параметров при частом выполнении операций программирования/стирания и во время работы встроенной отладочной системы.
7.7. Размер страницы Flash-памяти и EEPROM
Flash-память программ и EEPROM память данных имеют страничную организацию. Страницы Flash-памяти образуют слова, а EEPROM - байты.
В таблице 7.2 показана организация Flash-памяти программ. Операции записи и стирания Flash-памяти выполняются постранично, а чтения - побайтно. Адресоваться к ячейкам Flash-памяти позволяет Z-указатель (Z[m:n]). Старшие значащие биты адреса (FPAGE) - номер страницы, а младшие значащие биты адреса (FWORD) - адрес слова в странице.
Таблица 7.2. Количество слов и страниц во Flash-памяти
Микроконтроллер |
Flash-память |
FWORD |
FPAGE |
Сектор прикладной программы |
Загрузочный сектор |
Размер |
Размер страницы |
Размер |
Количество страниц |
Размер |
Количество страниц |
ATxmega64A3 |
64 + 4 кбайт |
128 слов |
Z[7:1] |
Z[16:8] |
64 кбайт |
256 |
4 кбайт |
16 |
ATxmega128A3 |
128 + 8 кбайт |
256 слов |
Z[8:1] |
Z[17:9] |
128 кбайт |
256 |
8 кбайт |
16 |
ATxmega192A3 |
192 + 8 кбайт |
256 слов |
Z[8:1] |
Z[18:9] |
192 кбайт |
384 |
8 кбайт |
16 |
ATxmega256A3 |
256 + 8 кбайт |
256 слов |
Z[8:1] |
Z[18:9] |
256 кбайт |
512 |
8 кбайт |
16 |
В таблице 7.3 представлена организация памяти EEPROM микроконтроллеров XMEGA A3.
Операции записи и стирания EEPROM можно выполнять побайтно или постранично, а чтения - побайтно. Адресация EEPROM выполняется с помощью регистра адреса NVM Address Register (ADDR[m:n]). Старшие биты адреса (E2PAGE) - номер страницы, а младшие биты адреса (E2BYTE) - адрес байта в странице.
Таблица 7.3. Количество байт и страниц в EEPROM
Микроконтроллер |
Размер EEPROM |
Размер страницы |
E2BYTE |
E2PAGE |
Количество страниц |
ATxmega64A3 |
2 кбайт |
32 байт |
ADDR[4:0] |
ADDR[10:5] |
64 |
ATxmega128A3 |
2 кбайт |
32 байт |
ADDR[4:0] |
ADDR[10:5] |
64 |
ATxmega192A3 |
2 кбайт |
32 байт |
ADDR[4:0] |
ADDR[10:5] |
64 |
ATxmega256A3 |
4 кбайт |
32 байт |
ADDR[4:0] |
ADDR[11:5] |
128 |
|