В настоящее время очень актуальной является проблема разработки средств проектирования и отладки микропроцессоров и микроконтроллеров (МП/МК). Подобные средства должны быть обеспечены адекватными моделями МП/МК. Данная заявка посвящена технологии создания описаний таких моделей на язы-ках высокого уровня.
Для получения описания модели МП/МК, в соответствии с предлагаемой к рассмотрению технологией, требуется создать описание объектов процессора, описание алгоритма работы ядра, описание алгоритма работы периферийных устройств и описание взаимодействия с окружением.
Рассмотрим каждое из этих описаний подробно.
ОПИСАНИЕ ОБЪЕКТОВ МП/МКОписание объектов памяти. Для описания объектов памяти МП/МК ис-пользуется массив записей, в которых определены следующие поля:
Описание переменных. Под переменными будем понимать набор регист-ров, флагов и битов, имеющих символьные идентификаторы. Каждая из пере-менных имеет принадлежность к одному из объектов памяти МП/МК. Подобные переменные при отладке удобно видеть в составе соответствующих окон, поэто-му для них создается описание. Для описания переменных используются масси-вы записей, в которых определены следующие поля:
ОПИСАНИЕ АЛГОРИТМА РАБОТЫ ЯДРА
Инициализация. Для инициализации МП/МК используется соответствую-щая процедура. Здесь происходит начальная установка объектов МП/МК и вспомогательных переменных модели, а так же подача на контакты МП/МК значений, устанавливаемых по включению или сбросу.
Описание циклов. Как известно, МП/МК выполняют команды согласно различным типам машинных циклов, которые в свою очередь, состоят из тактов. Машинные циклы различаются между собой действиями, которые происходят в те или иные моменты времени, а также состоянием внешних контактов во время их выполнения. Машинные циклы удобно описывать в виде наборов массивов. Количество и состав массивов в наборе определяется числом объектов, изме-няющихся в процессе выполнения того или иного машинного цикла. Число эле-ментов массива равно числу тактов, из которых состоит машинный цикл. Каждый элемент массива описывает то или иное действие над соответствующим объектом. Такая форма представления позволяет легко и наглядно описывать поцикловое и потактовое выполнение инструкций.
Выполнение инструкций. Набор инструкций описывается при помощи массива записей, в которых определены следующие поля:
В процедуре, отвечающей за выполнение, происходит выборка инструкций из внутренней памяти программ, инкремент программного счетчика, а также инициируется обработка внутренних счетчиков, если модель была вызвана из программного симулятора. Затем вызывается функция, в которой происходит непосредственное выполнение инструкций, установка флагов и вызов функций обработки периферийных устройств.
Установка значений в регистры. Для некоторых регистров изменение значений битов должно приводить к тем или иным действиям. Это наиболее ха-рактерно для набора регистров специальных функций. Для отслеживания подоб-ных ситуаций в модели предусмотрена специальная функция, которая вызывает-ся после установки значений в соответствующую ячейку памяти и обрабатывает значение по установленному алгоритму. Предусмотрена также функция для об-работки чтения из регистра.
ОПИСАНИЕ АЛГОРИТМА РАБОТЫ ПЕРИФЕРИЙНЫХ УСТРОЙСТВ
Для удобства описания множества параллельных процессов в модели МП/МК вводятся понятия событий и счетчиков
События.
События могут быть инициированы при записи определенных данных в те или иные регистры или биты. Каждому событию соответствует пе-ременная булевого типа, состояние которой определяет, активность события в тот или иной момент времени. Например, при записи данных в регистр управле-ния прерываниями происходит установка соответствующей переменной. При выполнении процедуры, отвечающей за выполнение инструкций, происходит анализ активности событий и вызов соответствующих процедур обработки ак-тивных событий.Счетчики.
При описании модели периферийных устройств часто возникает необходимость отслеживать количество проходов через те или иные участки программы для корректной обработки. Например, при включенном таймере с предделителем нужно при выполнении каждого такта, машинного цикла или инструкции отслеживать состояние предделителя и таймера и в случае переполне-ния выполнять определенные действия. Таких устройств в МП/МК может быть много. Для упрощения обработки параллельных процессов предусмотрен механизм счетчиков.Для описания счетчиков используется массив записей, в котором определены следующие поля:
Для обработки счетчиков служит процедура, которая вызывается при вы-полнении каждой инструкции или каждого машинного цикла. В процессе работы процедуры анализируется состояние каждого счетчика и, при выполнении опре-деленных условий, инкрементируются активные в данный момент времени. Ус-ловием инкремента счетчика является переполнение его источника.
Для инкремента счетчика используется процедура инкремента с параметрами идентификатора счетчика и приращения. При достижении лимита счетчика эта процедура автоматически устанавливает флаг переполнения.
Прерывания. Прерывания вызываются при выполнении определенных ус-ловий. Как правило, такими условиями являются изменение битов в определен-ных регистрах или приход на внешние контакты МП/МК импульсов определенной полярности. При возникновении такого условия в модели активизируется событие и, после выполнения очередной инструкции, происходит вызов процедуры обработки прерываний.
В теле процедуры происходит проверка истинности условия, идентификация прерывания, сохранение определенных данных в стеке и переход к выполнению инструкции, на которую указывает вектор соответствующего прерывания.
Таймеры - счетчики. Вызов обработчика таймеров - счетчиков происходит по аналогии с вызовом обработчика прерываний. При выполнении определенного условия активизируется событие и, после выполнения очередной инструкции, вызывается обработчик таймеров.
ОПИСАНИЕ ВЗАИМОДЕЙСТВИЯ С ОКРУЖЕНИЕМСинхронизация МП/МК осуществляется путем подачи на специальные входы тактовых импульсов. Адекватная модель должна изменять свое состояние при изменении сигналов на тактовых входах. Таким образом, достигается потак товая точность моделирования.
Для отслеживания тактовых входов в модели используется процедура, которая проверяет подан ли на соответствующий контакт МП/МК сигнал сброса, и если работа МП/МК разрешена, проверяет изменения на входах синхронизации. При приходе очередного тактового импульса вызывается процедура потактового выполнения, внутри которой происходит обработка машинных циклов в соответствии с описанием. Здесь происходит подача на внешние контакты сигналов для доступа к внешней памяти, отслеживание изменений внешних контактов на предмет обнаружения условий прерываний, инкремента счетчиков и пр., выполнение инструкций.
Для описания взаимодействия с внешними устройствами создаются описания контактов корпуса МП/МК. Для этого определен массив записей, в которых определены следующие поля:
Описанная технология прошла апробацию при реализации моделей микроконтроллеров Intel 8051 и Atmel AVR для систем проектирования Winter и IEESD-2000, разработанных в ГГУ им. Ф. Скорины. На разработку моделей ушло примерно по две человеко-недели. С помощью этих моделей были разработаны промышленный измерительный прибор И-160М и электронный ключ для защиты программного обеспечения от несанкционированного запуска.