Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пинк.doc
Скачиваний:
9
Добавлен:
03.11.2018
Размер:
1.08 Mб
Скачать

4. Описание симулятора adSim812

ADSim812 поставляется фирмой Analog Devices, чтобы помочь в оценке, разработке и отладке кода для микроконтроллера AduC812. В то время как не возможно полностью смоделировать AduC812 платформу ,этот симулятор подходит так близко как приемлемо возможно к моделированию платформы и сможет сделать работу по оценке и разработке программ для AduC812 намного проще. ADSim812 был разработан для Analog Devices фирмой Vault Information Services в Littleton, Colorado , США.

Рассмотрим состав , основы организации и функционирования основных модулей микроконтроллера , используемых в курсовой работе. Для разработки программного обеспечения контроллера пользователь симулятора должен выбрать набор модулей , необходимых для выполнения заданных функций и их отладки. Модули выбираются из меню симулятора View.

Основным модулем любого контроллера является центральное процессорное устройство (ЦПУ), обеспечивающее выполнение логических и арифметических операций и обозначенное в симуляторе как SFR Window (рис.10) .

Рис10 Модули ЦПУ и портов симулятора

ЦПУ представлен множеством регистров R0…R7, программно доступных пользователю посредством системы команд. В любой из регистров ЦПУ можно записать или изменить значение операнда на любой стадии отладки программы . Для этого необходимо подвести курсор мыши к регистру , кликнуть левой клавишей и затем записать требуемое значение.

Основной рабочий регистр ЦПУ – аккумулятор Acc ,используемый всегда для хранения результата операции и одного из операндов при выполнении операций , а также для обмена информацией с периферийными устройствами, подключаемыми к контроллеру через порты P0…P3 .

Регистр B используется в основном при выполнении операций умножения , деления и некоторых других действий.

PSWрегистр признаков результата операции , хранит флажки (Flags) – признаки результата операции, используемые для выполнения разветвлений в программе командами условных переходов. Наиболее активно используемым флажком в курсовой работе является флажок переноса(CY) из старшего разряда аккумулятора.

SP – указатель стековой памяти, в котором хранится адрес верхней ячейки стека. Отличием стековой памяти от памяти с произвольным доступом к ячейкам памяти является то, что в стеке используется следующий принцип доступа: данное , записанное в стек первым , можно прочитать только последним, а указатель стека SP ,выполняющий функцию регистра адреса стека , изменяется автоматически при обращении к стеку для формирования адреса следующей ячейки памяти. Подобный механизм доступа к стеку называют сокращенно LIFO (Last Input First Output – «последним записан первым прочитан»).

Регистр PC используется для хранения адреса выполняемой команды программы, после выполнения которой в PC будет сформирован адрес следующей команды.

Регистры IP иIE используются при обработке запросов прерывания и позволяют задать приоритеты каждому из прерываний и разрешить их обработку в ЦПУ соответственно.

Остальные регистры ЦПУ в данной работе не используются и поэтому здесь не обсуждаются.

Для подключения к контроллеру датчиков и устройств ввода и вывода данных в модели имеются порты ввода (Input Ports) и порты вывода (Output Ports). При отладке программы в порты ввода можно загрузить входные данные и стартовать выполнение программы. Выходные сигналы , поступающие в порты вывода, к которым подключены ИМ, формируются моделируемой программой. Основной набор периферийных устройств контроллера можно классифицировать следующим образом:

ПУ для связи с пользователем: клавиатура, индикаторы, принтеры, кнопки сброса контроллера и т.п.

Для хранения основного набора данных в контроллере имеется резидентная память данных (РПД) , модель которой приведена на Рис.11.

В меню View РПД обозначена как IRAM (Internal RAM). В любой из адресов РПД также ,как и в регистр, можно записать 8-битные исходные данные. Дело в том , что в симуляторе нельзя моделировать входные данные, поэтому они предварительно должны быть записаны или в ячейки памяти РПД , или в порт ввода , к которому в реальной системе подключены датчики цифровых и аналоговых сигналов, а также другие устройства ввода. Таким образом разработчик программ сам определяет набор исходных данных, имитируя ,тем самым , работу датчиков.

Адреса ячеек РПД начинаются с кода 00, в первой строке представлено 16 ячеек памяти (00H –0FH), в следующей строке – следующие 16 ячеек(10H-1FH) и т.д. Следует заметить, что в симуляторе все данные и адреса представлены в 16-ричной системе счисления (H –Hexidecimal).

Команды программы хранятся в резидентной памяти программ РПП, обозначенной в симуляторе Code Memory (Рис. 12), являющейся постоянной памятью. Каждая команда в РПП хранится в следующем формате:

Адрес РПД(Address):Метка (Label):Код Операции(Op Codes):Инструкция(Instruction).

Следует отметить, что команда может занимать в РПП от одного до трех байтов, что необходимо учитывать при оценке длины программы. Отлаживаемую в симуляторе программу можно выполнять в следующих режимах:

автоматический режим выполнения программы полностью;

выполнение программы отдельными фрагментами до точки останова (Breakpoint), количество точек останова неограниченно. Для определения точки останова необходимо выделить требуемый адрес команды и кликнуть мышью на кнопке (Toggle Breakpoint). При этом адрес команды останова будет помещен в квадратные скобки;

Рис.11 Модель резидентной памяти данных РПД.

Пошаговый режим выполнения команд программы.

Время выполнения моделируемой программы определяется симулятором автоматически. Для оценки времени необходимо вызвать из меню View программу анализа (Program Analysis) и снять показание.

Рис.12. Модуль резидентной памяти программ контроллера РПД.

Меню File

Следующие опции доступны во всплывающем меню File:

Open Intel-Standard File

Import Map File

Open Simulation

Save Current Simulation

Open XRAM Memory File

Save XRAM Memory

Exit

Опция Open Simulation допускает, чтобы Вы загрузили программы моделирования, которые предварительно были сохранены с опцией Save Current Simulation.

Опция Save Current Simulation дает возможность Вам сохранить ваше отлаживаемые программы моделирования так, чтобы Вы могли продолжить позже отладку.

Опция Open Intel-Standard File используется для первоначальной загрузки программы, но если ваша программа длинная, и ваша работа требует, чтобы Вы прервали моделирование на середине пути, Save Current Simulation обеспечивает способ сохранить ваше место в действующем моделировании и возвратиться к этому позже. Когда Вы сохраняете моделирование, все 64Кб памяти программ, 64Кб внешней памяти, 256 байтов внутреннего ОЗУ, все SFRS, счетчик команд, порты, и все другие аспекты текущего моделирования сохраняются. Когда Вы впоследствии перезагружаете моделирование, выполнение может продолжаться, как будто оно никогда не было прервано.

Опции Open XRAM Memory File и Save XRAM Memory открывают и сохраняют файлы содержащие данные для заполнения внешней памяти данных.

Меню Run

Следующие опции доступны на всплывающем меню Run:

Execute Program

Stop

Reset Program

Опция Execute Program заставит Симулятор начать (или продолжить) выполнение загруженной программы с команды, указанной счетчиком команд. Если только выполнение программы начато (или продолжено), оно продолжится, пока не будет прервано в соответствии с предупреждающим сообщением, контрольной точкой, или в соответствии с пользователем, вручную прерывающим выполнение кнопкой Stop. В то время как программа выполняется, изменения для SFRS на основном экране могут показываться или нет в зависимости от того, действительно ли Вы выбрали Refresh Screen After Every Instruction (Регенерация Экрана После Каждой Команды).

Поле дисплея Next Instruction ( следующая команда) отобразит Running ( Выполнение), когда программа выполняется.

Опция Stop заставит симулятор прекратить выполнение программы,. После чего, она может быть продолжена выбором опции Execute Program.

Опция Reset Program моделирует полный «Сброс Системы». Счетчик команд PC сбрасывается в 0 (выполнение начнется с адреса 0000). Инициализируются все 256 ячеек внутреннего ОЗУ в 0, инициализируются все 64КБ внешней ОЗУ в 0, инициализируются все регистры SFRS в 0, кроме указателя вершины стека, который устанавливается в 07H и порты ввода-вывода , которые устанавливаются в FFH.

Если Симулятор конфигурирован так, чтобы пространства памяти программ и данных перекрывались и если загруженная программа была изменена во время выполнения, записываясь поверх с новыми данными, то будет восстановлена первоначально загруженная программа.

Меню Debug

Следующие опции доступны на всплывающее меню Debug:

Single Step

Procedure Step

Skip Step

Toggle Breakpoint

Clear All Breakpoints

View/Edit Current Breakpoints

Опция Single Step (пошаговый режим) заставляет Симулятор выполнить только одну команду (команда, отображаемая как Next Instruction внизу основного экрана) и затем остановиться. Все регистры на всех экранах будут немедленно модифицированы, чтобы отразить любые изменения, вызванные выполнением одиночной команды.

Опция Procedure Step подобна опции Single Step. Однако, она отличается тем, что если следующая команда является вызовом процедуры CALL будут выполнены все команды внутри вызываемой подпрограммы (и любой вложенной подпрограммы) перед остановом. Это полезно для быстрого выполнения подпрограмм, которые работают правильно и перехода к коду, в отладке которого Вы действительно заинтересованы.

Опция Skip Step позволяет пользователю перейти к следующей команде в программе без того, чтобы выполнить текущую команду. Например, если текущая команда – «JZ CONTINUE» но Вы, ради тестирования не хотите чтобы Симулятор проверил это условие, Вы можете нажать на Skip Step и команда будет пропущена без выполнения.

Опция Toggle Breakpoint используется, чтобы вставить или удалить «контрольную точку» из программы. «Контрольная точка» – отметка в памяти программы, достижение которой в течение нормального выполнения программы, заставит программу прекратить ее выполнение, чтобы программист мог перейти на ручное управление системой или просмотреть текущие переменные, и т.д. Программа может быть затем продолжена, используя Execute Program. Вы будете знать, что достигли контрольной точки, потому что кнопка Next Instruction дисплея будет иметь красный фон вместо белого. Если текущая команда – не контрольная точка и Toggle Breakpoint выбрана, команда станет контрольной точкой и выполнение программы впоследствии остановится перед этой инструкцией.     Если текущая команда – контрольная точка, и Toggle Breakpoint выбрана, команда больше не будет контрольной точкой в будущем.

Опция Clear All Breakpoints дает возможность пользователю быстро удалить все контрольные точки, которые были вставлены в программу. Если в ходе отладки Вы найдете, что вставили много контрольных точек в программе, вместо удаления их « одна за другой «, Вы можете быстро удалять их все, выбирая Clear All Breakpoints.

Опция View/Edit Current Breakpoints открывает окно, отображающее список всех активных в настоящее время контрольных точек. В этом окне пользователь может или удалить контрольную точку, щелкая на адрес в списке и щелкая на Delete Breakpoint, или может добавлять новые контрольные точки, щелкая на Add Breakpoint и вводя шестнадцатеричный адрес команды, где контрольная точка требуется. Дополнительно пользователь может выбрать текущую контрольную точку и нажать на Toggle Breakpoint (или пользователь может дважды нажать на контрольной точке в списке).

Меню View

Следующие опции доступны в меню View:

Terminal Window (Serial I/O)

I2C/SPI Emulation Window

Internal RAM (IRAM)

External RAM (XRAM)

Analog SFRs Window

Flash RAM Window

On-Chip SFR Window

Serial SFR Window

Timer SFR Window

Disassembly (Code Memory)

Program Analysis

Terminal Window – одно из отдельных окон, которое может помочь Вам в текущем контроле выполнения вашей программы. Многие из контроллеров имеют встроенный последовательный порт, который допускает последовательный ввод и вывод 8- или 9-разрядных данных. Любые данные , которые Вы записываете в регистр SBUF, записываются в последовательный порт, и любые данные поступающие в последовательный порт, могут быть загружены путем чтения SBUF. Таким образом, необходимо, чтобы Симулятор также моделировал эту возможность , что делается через Окно Терминала. Данные, которые программа посылает в последовательный порт через SBUF, будут отображаться в Окне Терминала. С другой стороны, когда Окно Терминала активное, то, что Вы напечатаете, будет передано вашему контроллеру ,как если бы оно было получено через последовательный порт. Окно Терминала будет также пытаться сообщать Вам виртуальную скорость в бодах, которую Вы конфигурировали для последовательного канала..

I2C/SPI Emulation Window – одно из отдельных окон, которое может помочь Вам в текущем контроле выполнения вашей программы ,полученное через I2C или SPI последовательные порты.

Internal RAM (IRAM) дает возможность просмотреть и редактировать содержимое любого из 256 байтов Internal RAM, которые являются доступными Вам . Когда IRAM Окно открыто, оно будет постоянно модифицироваться в течение выполнения программы, если Вы конфигурировали имитатор, чтобы Refresh Screen After Each Instruction Batch. Для редактирования значений в ячейке IRAM нужно кликнуть в ячейке, значение которой требуется изменить. .Обратите внимание, что первые 32 байта (первые две строки в IRAM Окне) используются четырьмя банками регистров. В зависимости от набора регистров, который в настоящее время выбран, изменяя эти байты можно также изменять значение регистров R0…R7. Например, если Вы используете заданный по умолчанию набор регистров, байты от 00 – 07 Internal RAM соответствуют R0 – R7, соответственно. Таким образом если Вы изменяете значение байта 00 IRAM в «45» , Вы найдете, что также изменили значение R0 в «45.

XRAM (External RAM) дает возможность редактировать содержимое внешней памяти данных. Когда XRAM Окно открыто, оно будет постоянно модифицироваться в течение выполнения программы, если регенерация экрана после каждого пакета команд допускается. Если регенерация не допускается, изменения для XRAM не будут видны в окне, пока выполнение программы не прервано. Для редактирования значения в XRAM, просто выделяют поле, которое содержит значение. Откроется окно редактирования, который даст возможность Вам изменить значение байта, непосредственно вводя новое значение или выбирая индивидуальные биты, которые Вы желаете изменить.

Analog SFRs дает возможность просмотреть и редактировать содержание SFRS, касающихся АЦП и ЦАП. Любой из SFRS внутри окна может быть отредактирован, щелкая на текущее значение SFR и вводя новое значение. Пожалуйста, обратите внимание, что те функциональные регистры, которые содержат устанавливаемые биты, объединены в одиночные регистры на экране, чтобы оценить полное значение функционального регистра. Вы можете также изменять моделируемую внешнюю температуру, изменяя External Temperature регистр. Это поле не является SFR, но изменение значения этого поля будет воздействовать на результаты A/D преобразований, которые используют канал считающий температуру. Температура может быть определена или в градусах Цельсия или градусах шкалы Фаренгейта, выбирая соответствующую опцию.

Flash RAM дает возможность просмотреть и редактировать содержимое SFRS, связанных с Flash ОЗУ, а также Flash ОЗУ непосредственно. SFR Window дает возможность просмотреть и редактировать содержимое любого регистра ЦПУ. . Любой из регистров внутри окна может быть отредактирован, щелкая на текущее значение регистра и вводя новое значение.

Timers дает возможность просмотреть и редактировать содержание таймеров и счетчиков. Любой из регистров или счетчиков внутри окна может быть отредактирован, щелкая на текущее значение и вводя новое.

Окно портов (IO ports) позволяет отслеживать и редактировать состояние входных портов.

Окно Дизассемблера. Обеспечивает просмотр памяти программ при ее выполнении, имеется ряд опций, доступных в данном окне.

Опция Toggle Breakpoint устанавливает контрольную точку в адресе, выбранном в РПП. Это позволяет Вам переключать контрольные точки непосредственно в программе.

Go To Address.. Для выбора другой области памяти щелкают на кнопку Go To Address и вводят адрес, с которого Вы желаете дизассемблировать. Окно Дизассемблера будет отображаться, начиная с адреса, который Вы определяете.

Set Next Instruction. Нажатии на кнопку Set Next Instruction установит Счетчик команд PC ,равный адресу памяти, который в настоящее время выбран в Окне Дизассемблера. Выполнение программы продолжится с нового положения в памяти. Это простой способ пересылки потока программы к различным разделам программы.

Back To Last Screen. Так как имеется возможность двигаться через память в Окне Дизассемблера, то возможно, что Вы, следуя за кодом к некоторой отметке, затем желаете возвратиться к тому месту, где Вы начали при нажатии на Back To Last Screen.Произойдёт «отмена» переходов, которые Вы выполняли, чтобы возвратиться к началу. «

Double-Clicking. Вы можете также выполнить двойной щелчок на команде, которая отображается в Окне Дизассемблера. Это так заставит адрес памяти, вызванный в этой команде, стать началом текущей дизассемблированной страницы.

Keypad 4x5 (Окно клавиатуры). Нажимая на кнопку в этом окне, можно выдавать сигналы на линии портов ввода-вывода.

Program Analysis (Анализ Программы). Данное окно обеспечивает разработчика программы набором полезной информации:

Instructions: указывает, сколько команд было выполнены, начиная с последнего «сброса» (или с начала выполнения, если никакого «сброса» не было).

Cycles: указывает, сколько циклов ЦПУ были использованы, чтобы выполнить команды. В зависимости от команд, которые выполнялись, это значение будет равно значению Instructions или больше.

CPU Time: указывает, фактически, как долго ЦПУ работал бы, чтобы выполнить команды. Время выражено в часах, минутах, секундах, и долях секунд. Это значение вычисляется основываясь на Cycles и пункте CPU Clock Speed , который может быть конфигурирован в Опциях Проекта.

Stack Initialized To: указывает значение, в которое программа инициализировала стек. Во многих простых программах стек никогда специально не инициализируется. Однако в более сложных программах стек полезно инициализировать , чтобы защитить банки регистров и поля битов. Это поле модифицируется всякий раз, когда выполняется команда , которая изменяет значение SP .

Execution History: Это подокно покажет 500 последних выполненных команд. Самая старая команда находится наверху списка, а последняя выполненная команда – внизу списка.

Симулятор для Windows допускает, чтобы Вы загрузили программы, которые были сохранены в стандартном формате Intel.

Стандартный формат Intel – популярный формат, используемый для прожигания программируемых ПЗУ .

Вообще, процесс обычно выглядит так: создайте вашу программу, транслируйте компилятором, который создает файл в стандартном формате Intel с расширением «.HEX», затем загрузите файл «HEX» в программу, которая фактически прожигает ПЗУ.

При использовании Симулятора, вместо того, чтобы прожигать ПЗУ Вы просто загружаете файл HEX в Симулятор и тестируете / отлаживаете вашу программу в Симуляторе. Как только все окажется работающим, Вы можете закончить процесс, прожигая ПЗУ, которое, в этой стадии процесса, должны быть в основном свободны от ошибок, так как отладка имеет место в стадии моделирования.

Чтобы загрузить программу в стандартном формате Intel в Симулятор, просто открывают меню File и выбирают Open Intel-Standard File.

40