среда, 4 января 2012 г.

Изучение arm - Обзор AT91RM9200

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


Для начала обновим имеющиеся у нас исходные коды.

nis@jane ~/arm-dev $ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 4 (delta 0)
Unpacking objects: 100% (4/4), done.
From git://github.com/no111u3/dive-into-arm-env
   a030d8f..9064c25  master     -> origin/master
Merge made by recursive.
 doc/at91rm9200.pdf |95681 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95681 insertions(+), 0 deletions(-)
 create mode 100755 doc/at91rm9200.pdf

У нас появилась папка doc, в ней будут храниться все необходимые для разработки документы. В этой папке есть файл at91rm9200.pdf. Файл является полной версией datasheet(далее дш.) на Soc. В дальнейшем мы будем часто обращаться к этому документу.
Не будем долго водить по воде а откроем этот файл.

На первой странице дано краткое описание основных опций Soc.
Многие из перечисленных блоков и характеристик должны быть знакомы, в любом случае мы их рассмотрим по мере необходимости. Изучение будет проходить постепенно, блок за блоком мы разберём сначала основные, а затем и дополнительне юниты в нашем Soc. Как отмечалось ранее данный Soc является первенцем, поэтому он чувствителен к внешним воздействиям, таким как температура(отмечены проблемы запуска при температуре ниже 10 градусов цельсия, и это не проблема кварцевых резонаторов), статика, наведённое эмп. Поэтому все коммутации следует проводить на заземлённой подложке и при ВЫКЛЮЧЕННОМ ПИТАНИИ ПЛАТЫ.

Перейдём на третью страницу дш. Изображённая диаграмма Soc в масштабе блоков.

Soc подразделяется на:
1) Ядро arm процессора вместе с кэшами данных и кода, а также сопроцессором управления cp15 и блоком управления памятью MMU. Также в ядро интегрировам модуль отладки ICE, с интерфейсом JTAG
2) Основной блок контроля памяти и главной шиной обмена данных.
3) Статического ОЗУ - 16 КБ, ПЗУ - 128 КБ(в нём хранится загрузчик, набор сервисных функций и пр.)
4) Мост м/у контроллером памяти и шиной переферии.
5) Контроллер пересылки памать-память для переферии.
6) Контроллер управления генерацией частоты Soc.
7) Много уровневый векторный контроллер прерываний(внешних и внутренних, быстрых и стандартных)
8) Системный таймер, таймер переодических событий и watchdog.
9) Контроллер сброса, от внутренних и внешних источников.
10) Контроллер 4-х параллельных портов(3-х в нашем случае или для pqfp корпуса)
11) Интерфейс внешней шины с контроллерами sdram, brust flash, sram
12) Контроллеры хоста и устройства для usb
13) Отладочный (dbgu) и мультифунциональные (usart, 4шт) контроллеры сериных интерфейсов
14) Контроллеры шин spi/twi
15) Контроллер для (mmc/sd)card
16) Контроллеры для серийных интерфесов мультимедиа системы(3шт)
17) Интерфейс EMAC для 100/10BASE T сетевой системы
18) Блоки многофункциональных таймеров-счетчиков(2 по 3)

Даже беглый обзор Soc позволяет понять насколько сложной СБИС он является. Но в тоже время поблочное разделение позволяет достаточно просто программировать Soc под нужные задачи.
Многие из этих блоков в начале нам даже не понадобятся, поэтому не стоит пугаться размеров Soc. Наличие заголовочного файла позволяет помнить только мнемоническое определение конкретного узла, а не его точный адрес. В общем начнём изучение.

Комментариев нет:

Отправить комментарий