Введение
Характерной чертой современных микроконтроллеров является улучшенная программируемость ресурсов и периферии. В специальных внутренних регистрах конфигурации сразу же после сброса должны быть установлены параметры для шины и памяти. Вслед за этим для корректной работы должны бытьзаданы характеристики периферии.
В начале процесса разработки у программиста из-за недостатка информации и навыка может возникнуть ряд серьезных проблем, что приводит к потерям времени. Затрачиваются многие часы работы по конфигурированию кристалла прежде, чем будет написана первая строка реального прикладного кода. Целью статьи является помощь на первых шагах конфигурирования микроконтроллеров семейства Infineon C166, используя C- компилятор Keil. Поскольку C-компилятор инициирует специальные регистры конфигурации значениями, действующими по умолчанию, следует изменить эти значений в соответствии с контекстом конкретного проекта.
Микроконтроллеры C166 легко настраиваются на любое управляющее приложение. На начальном этапе в качестве отладочного средства для тестирования начальных установок могут быть использованы оценочные платы фирм Keil и Phytec. Хотя в статье речь идет о самом мощном микроконтроллере C167CR, все изложенное в равной степени справедливо для других членов семейства C166. Оценочную версию C-компилятора Keil можно получить в Интернете по адресу www.keil.com.
Возможности конфигурирования
При конфигурировании микроконтроллеров семейства С166 используется два метода для
конфигурации. Первый метод состоит в задании содержимого регистров SYSCON и BUSCON0 путем считывании состояний линий 16-разрядного Порта 0 на момент сброса для задания параметров при считывании первых команд из памяти. Для этой цели на оценочной плате Pull-down резисторы
через джамперы подключены к линиям Порта 0. Конфигурация может быть изменена и программным путем после сброса. На конец фазы инициализации указывает выполнение специальной команды EINIT, после чего некоторые параметры уже не могут быть изменены (например, SYSCON и запрет сторожевого таймера). Скажем несколько слов о специальных регистрах конфигурации.
SYSCON - 16
разрядный побитно-адресуемый
регистр, расположенный по адресу
FF12, который не может быть
модифицирован после выполнения
команды EINIT. SYSCON содержит следующие
управляющие биты: разрешение
доступа к внутренней Х-шине (XBUS),
разрешение и мэппинг встроенного
ПЗУ, разрешение линии выходного
такта (CLKOUT), разрешение сегментации
памяти и размер системного стека.
Шина XBUS является внутренним
представлением внешней шины и
используется для доступа к
расширению встроенного ОЗУ и
периферии. Адресация кода
происходит путем разбиения
адресного пространства на сегменты
в 64 Кбайт.
BUSCON - это пять
16-разрядных регистров, которые
управляют временами обращения к
памяти, ожидания и задержки,
генерацией сигналов выборки
кристалла (chip select) при чтении и
записи из памяти и задают режим
работы системной шины: разрядность
шины данных (16 или 8 бит) и
мультиплексный/демультиплексный
режим. Регистры BUSCON расположены по
адресам FF0C-FF1A. Четыре регистра
BUSCON1-BUSCON4 задают характеристики
четырех областей памяти, которые
могут иметь разные режимы работы.
Размер и начальный адрес этих окон
задается в регистрах ADDRSEL1-ADDRSEL4.
Характеристики системной шины для
областей памяти, не перекрываемых
данными четырьмя адресными
диапазонами, задаются в регистре
BUSCON0 и устанавливаются аппаратно
при считывании линий порта 0 во
время сброса. Поскольку содержимое
регистров BUSCON1-BUSCON4 может быть
изменено и после выполнения
команды конца инициализации EINIT, в
статье рассматривается только
изменение параметров регистра BUSCON0.
STKOV -
16-разрядный регистр для фиксации
переполнения системного стека. Он
расположен по адресу FE14, его
состояние по умолчанию - FA00, т.е.
старшие 5 разрядов установлены в
"1", а младшие 11 разрядов могут
быть изменены.
Data Page Pointers (указатели
на страницу данных) - это четыре
10 разрядных регистра DPP0-DPP3,
используемые для доступа к одной из
1024 страниц памяти размером по 16
Кбайт. Регистры DPP расположены по
адресам FE00-FE06 и в них после сброса
выставляются номера страниц от 0 до
3 соответственно. С помощью
указателя на страницу данных
16-разрядному адресу ставится в
соответствии 24-разрядный
физический адрес. Полный
физический адрес формируется
следующим образом: 14 младших
разрядов адреса повторяются в 14
младших разрядах физического
адреса, а 2 старших разряда выбирают
один из четырех регистров DPP,
содержащий соответствующий номер
страницы, который и образует
старшие 10 разрядов физического
адреса.
Context Pointer (CP) - 16
разрядный регистр-указатель (11
разрядов могут быть
модифицированы), определяющий
расположение активного
регистрового банка. Регистровый
банк произвольно размещается во
встроенном ОЗУ, и для его
переключения достаточно изменить
содержимое CP. Регистровый банк
составляют до 16 регистров общего
назначения (general purpose register).
Микроконтроллеры
семейства Infineon C166 отличаются
гибкостью и легко адаптируемы ко
многим приложениям. Многие
характеристики здесь не
обсуждаются, но они подробно
описаны в соответствующих
руководствах пользователя, которые
доступны на сайте Infineon
www.infineon.com/products/micro/micro.htm. Эти параметры также
легко программируются при
использовании C-компилятора Keil.
Инструментальные средства Keil
Инструментальные
средства Keil полностью поддерживают
все микроконтроллеры семейства
Infineon C166 (С161, С163, С164-CI, С165, 80С166, С167 и
167CR). Пакет инструментальных
средств PK166 включает C-компилятор,
макроассемблер, компоновщик,
интегрированную среду разработки
µVision, отладчик/симулятор dScope и
отладочный монитор. Отладчик dScope
может работать как с виртуальной,
так и с реальной отлаживаемой
системой (например, оценочными
платами фирм Keil и Phytec), используя
ядро монитора, которое находится в
отладочном ОЗУ или ПЗУ.
Ниже приведена простая программа
генерации меандра выводами порта 7,
для запуска которой следует ввести
ее текст в интегрированной среде
разработки µVision и указать
физический адрес. Заметим, что
включенный файл заголовка stdio.h в
данном случае не нужен. Указания по
компиляции содержатся в
руководстве по демо-версии, которое
можно найти на сайте Keil по
указанному выше адресу или
запросить у нас.
После компиляции
этого файла и вызова dScope, на экране
отображается ассемблерный текст
инициирующей программы С_ STARTUP. По
адресу памяти 0 записана не
отображенная на рисунке команда JMPS
перехода на адрес 0BC.
Первая
отображенная команда DISWDT запрещает
сторожевой таймер. В противном
случае следует программно
активировать таймер каждые
несколько миллисекунд или будет
сгенерирован сигнал trap. Затем идут
команды установки специальных
регистров SYSCON, BUSCON0, STKOV, CP, трех
регистров DPP, которые заканчиваются
командой EINIT. Для установок
регистров использованы значения по
умолчанию, содержащиеся в
библиотеках. Команды BFLDL и BFLDH
используются для модификации
младшего или старшего байта 16
разрядного регистра. Синтаксис
команд следующий: BFLDx регистр
назначения, AND-маска, OR -маска. Бит
из регистра, на который указывает
"1" в AND- маске заменяется
соответствующим битом из OR-маски. В
зависимости от выбранной команды
модифицируется младший или старший
байт регистра. В выделенной строке
0C8H обнуляется старший байт
регистра SYSCON, а команда в строке 0CCH
обнуляет биты на позициях 7 и 2 в
младшем байте.
Изменение параметров конфигурации
Начальная
конфигурация микроконтроллера
описывается в файле start167.a66,
расположенном в директории c:\c166eval\lib.
Для изменения параметров
конфигурации следует
отредактировать содержимое этого
файла с помощью любого ASCII
редактора, например,
интегрированного в mVision. Поскольку start167.a66
является шаблоном для создания
собственной процедуры
инициализации, его следует
скопировать в директорию проекта и
изменить уже там. Затем новый файл
следует включить в файл проекта
вместе с исходным С кодом, чтобы во
время компиляции и компоновки mVision
использовала не библиотечный, а
откорректированный файл.
Размер системного
стека, изменяемый в пределах от 32 до
1024 слов, задают 3 старших бита
регистра SYSCON. Размер стека по
умолчанию после сброса равен 256
слов - старшие 3 бита регистра SYSCON
равны 0. Эти биты могут быть
изменены командой BFLDH. . Чтобы
установить стек размером 128 слов,
необходимо следующим образом
модифицировать файл start167.a66:
Единственным
изменением является замена "0"
- на "1"! Результат рекомпиляции
и загрузки в dScope приведен ниже.
OR-маска на строке 0C8H теперь равна 20H,
что соответствует установке бита 13
регистра SYSCON в "1". Таким
образом при использовании
инструментальных средств Keil
параметры конфигурации легко
модифицировать. Это в равной
степени относится и к модификации
других регистров.
Следует обратить
внимание, что поле AND команды в
строке 0CCH изменило значение с 84H на
04H по сравнению с первым экраном.
Это вызвано тем, что при генерации
кода для бита WRCFG (" write configuration
control" - 7-ой бит регистра SYSCON)
первоначально было использовано
значение по умолчанию "0".
Чтобы изменить этот бит на "1"
следует лишь внести следующее
изменение:
При этом OR-маска в
cтроке 0CCH становится нулевой.
По умолчанию
системная шина C166
сконфигурирована, как 16-разрядная,
демультиплексная. При работе с
мультиплексной шиной, следует
внести изменения в регистр SYSCON . Для
этого в строке _BTYP0 EQU 2 "2" заменяется на
"3", и после рекомпиляции и
загрузки в отладчик dScope тип шины
станет мультиплексным.
Универсальность C166 достигается
большим числом таких настроек.
Заключение
Программное
обеспечение Keil позволяет загружать
и выполнять программы,
устанавливать контрольные точки,
просматривать состояние памяти в
режиме симуляции или ведя отладку
на реальных аппаратных средствах. В
состав пакета входит отладочный
монитор, ядро которого может быть
сконфигурировано для каждой из
плат. Пакет инструментальных
средств Keil поддерживает
практически все оценочные платы, в
том числе фирм Keil и Phytec, информацию
о которых можно получить либо на
наших страницах, либо по адресам www.phytec.de и
www.keil.com. Оценочные платы
особенно полезны на начальном
этапе разработки для определения
требуемого размера памяти и
конфигурации шины. При этом
тестируются различные варианты
конфигурации шины и памяти и
проводится их сравнение для
дальнейшего использования в
реальных разработках.
Инструментальных средство Keil
вместе с оценочной платой,
подключенной через монитор dScope,
представляют мощный и экономичный
комплекс разработки, предлагающим
простой механизм конфигурирования
микроконтроллеров. Семейство Infineon
C166 предлагает гибкую настройку и
подходит практически для любого
приложения. У микроконтроллеров
этого семейства есть множество
других возможностей, с которыми
можно ознакомиться на наших
страницах.