Робота з пам’яттю мікроконтролерів AVR ATxmega

Пам’ять мікроконтролерів сімейства AVR ATxmega

Організація пам’яті сімейства ATxmega

Перш за все потрібно відмітити, робочі регістри адресуються не залежно від області даних, яка тепер включає в себе і область вводу/виводу. Пам’ять EEPROM за замовчуванням адресується незалежно, як і в традиційній організації пам’яті мікроконтролерів AVR, проте може адресуватися і в просторі пам’яті даних.

Мікроконтролери сімейства ATxmega оснащені внутрішньою пам’яттю SRAM розміром 2, 4, 8, 16 або 32 Кбайт, а також пам’яттю EEPROM розміром 1, 2 або 4 Кбайт.

До чотирьох портів мікроконтролерів презначені для підключення модулів зовнішньої пам’яті типу SRAM (до 16 Мбайт) або SDRAM (до 128 Мбайт), а також периферійних пристроїв з відображенням в пам’яті даних (ЖК-дисплеї).

Область вводу/виводу як і в традиційному варіанті містить всі регістри станів і конфігурування периферійних пристроїв та модулів мікротонтролера, включаючи процесор. Але тим не менше тут присутній ряд відмінностей:

–    молодші 16 адрес області вводу/виводу – це спеціальні регістри даних, що використовуються для зберігання інформації, на кшталт глобальних змінних і флагів;

–    команди асемблера порозрядної обробки і різноманітних перевірок доступні тільки для діапазону адрес $00..$1F, тобто до 16 регістрів даних і 16 регістрів, що відповідають за роботу з віртуальними портами;

–    змінено розміщення регістрів в області вводу/виводу.

Пам’ять програм традиційно виконана по технології Flash, і кожна комірка в ній являє собою 16-розрядне слово. Основна відмінність пам’яті програм даного сімейства від «традиційного» полягає в тому, що вона розбита на два розділи: програм та завантажувача.

Команда асемблера spm, яка служить для запису в Flash-пам’ять в ході виконання програми, ефективна тільки в тому випадку, якщо вона знаходиться в розділі завантажувача. Ця команда може звертатися до всієї пам’яті програм, включаючи і сам розділ завантажувача. Якщо завантажувач не використовується, то в даному розділі можна розмістити код програми.

Розділ програми містить розділ таблиці, який можна використовувати для зберігання даних. Його розмір співпадає з розміром завантажувача. Суть таблиці полягає в тому, що для неї можна застосовувати рівень захисту, відмінний від рівня захисту програми. Це дозволяє безпечно зберігати в пам’яті програм довготермінові дані. Якщо розділ таблиці не використовується для зберігання даних, в ньому може розміщуватися програний код. Розмір розділів фіксований і залежить від типу мікроконтролера. Їм відповідають різноманітні набори розрядів блокування, що забезпечує незалежність налаштування захисту.

Контролер прямого доступу до пам’яті ATxmega

Контролер прямого доступу до пам’яті (DMA – Direct Memory Access) сімейства ATxmega організовує передачу даних між різними модулями пам’яті, а також пам’яті і периферії з мінімальним втручанням центрального процесора. В ньому реалізована гнучка система вибору пріоритетності каналів, декілька режимів адресації, можливість подвійної буферизації і передачі даних великими блоками.

Завантаженість центрального процесора з та без DMA

Контролер DMA використовує 4 канали, кожному з яких відповідає власне джерело даних, пункт призначення і розміри блоків, а також – настройки передачі і переривань. Запити на переривання можуть формуватися в момент закінчення передачі даних або коли контролер знайде помилку в одному з каналів. Коли деякий канал DMA запитує передачу даних, арбітр очікує звільнення шини центральним процесором, після чого дозволяє розпочати процес передачі, який протікає порціями по одному, два, чотири або вісім байт. Адресація може бути статичною, з інкриментом або декриментом адреси. Передачу по каналу DMA може ініціювати програма, периферійний пристрій або система обробки подій.

Структурна схема контролера DMA

Закінчена операція читання або запису по каналу DMA називається транзакцією. Кількість байт, що передаються протягом одної транзакції, встановлюється програмно і визначається розмірами блока і налаштуваннями лічильника повторень. Кожний блок передається меншими порціями по одному, два, чотири або вісім байт.

Література:

  1. Программирование на языке С для AVR и PIC микроконтроллеров. Изд. 2е, переработаное и дополниное / Сост. Ю.А. Шпак—К.: «МК-Пресс», СПб.: «КОРОНА-ВЕК», 2011. – 544 с., ил.
  2. AVR XMEGA – 8/16-битные высокоэффективные маломощные флэш-микроконтроллеры. 
  3. Начинаем работать с микроконтроллерами XMEGA.
  4. AVR 8-bit XMMEGA А Manual. – 2012. – Rev. 1. – p. 432.

Автор: Чернишов В.О., ДК-12. ФЕЛ, КЕОА, НТУУ «КПІ».