Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1158

.pdf
Скачиваний:
5
Добавлен:
07.01.2021
Размер:
922.79 Кб
Скачать

Окно Data Memory показывает изменением цвета позиции изменение информации:

позиции, которые принадлежат пространству ввода/вывода или контролируются некоторым внешним устройством;

позиции неиспользуемые или резервированные;

позиции, которые только читаются или только записываются;

позиции, которые читаются и записываются;

адрес указателя стека.

Цвет символов и фона позиции можно изменить в меню Options | Display Control | Colors.

VMLAB поддерживает три логических состояния битов в ячейке памяти: 1, 0 и X (неопределенное). Если в ячейке памяти биты полностью не определены, то в окне она показывается как ?? (см. рис. 10).

Окно Data Memory содержит местное всплывающее меню, которое позволяет устанавливать значения в диапазоне 00,…,FF. Это окно динамически модифицируется при моделировании.

Чтобы вызвать диалог для модификации (Modify dialog), дважды щелкните по позиции ячейки памяти (рис. 11). Вы можете также использовать стрелки на клавиатуре, чтобы передвигаться вдоль и поперек окна памяти. Нет никакой необходимости закрыть диалог модификации, чтобы двигаться в другую позицию.

Рис. 11. Окно для модификации ячеек памяти

Изменяющийся диалог является общим для окна Memory, окна просмотра регистров, окна Watch и переменных в редакторе: двойной щелчок по любому отображенному в этих окнах значению вызывает диалог модификации.

2.11. Окно регистров и флагов Registers

Это окно показывает все регистры, флажки и другие детали центрального процессора.

Вы можете выбирать мышью регистр, чтобы изменить его формат, содержание и т.д. Для этого правой кнопкой мыши вызовите

Рис. 12. Окно модификации

всплывающее меню, которое позволит сделать это. Это меню динамически модифицируется в процессе моделирования и является общим для окна Memory, окна Watch и др. Если вы выбрали двоичный формат для отображения регистра, то можно производить бит-операции. Синий прямоугольник указывает бит, который выбран и может быть изменен. Двойной щелчок по любому из выделенных битов инвертирует его.

2.12. Окна внешних устройств Peripherals

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

выполнять бит-операции. Щелкая мышью, вы выделяете бит. Этот бит подсвечивается синим прямоугольником. Вызывая всплывающее меню (правой кнопкой мыши) и указывая в меню на строчку Byte operations, вы можете выполнить байт-разрядные операции.

2.13. Окно портов ввода/вывода I/O Ports

Отображает состояние портов ввода/вывода: содержание регистров с указанием направления передачи (I/O) для каждого бита.

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

2.14. Диалог модификации Modify Dialog

Диалог модификации – маленькое окно (рис. 12), которое позволяет просмотреть и изменять переменные в позициях памяти. Этот диалог одинаков в окнах памяти, регистров процессора, внешних устройств/портов, просмотра переменных, текстового редактора.

В заголовке окна отображается название устройства, к которому оно относится.

Чтобы изменять формат числа, используется кнопка As.

Доступные форматы:

-uint – целое число без знака в диапазоне от 0 до 255;

-int – целое число со знаком в диапазоне от -128 до 127;

-char – символ (ASCII);

-hex – шестнадцатеричный;

-bin – двоичный.

Чтобы изменять значение, отредактируйте его. Значение будет установлено после нажатия кнопки Apply.

2.15. Менеджер просмотра Watch Manager

Окно (рис. 13) открывается из меню Debug | Watch Manager или быстрой клавишей F10. Это окно показывает список всех доступных символов в коде, тематические категории с его локальными контекстами (для локальных переменных языка Cи).

Рис. 13. Окно менеджера просмотра

Каждая переменная показывается с ее свойствами:

Отображается или нет в окне просмотра Watch.

Формат вывода. Этот формат изменяется при помощи щелчка мыши по символу (в литературе употребляется термин мышь-По-символу).

Контрольные точки при доступе к переменной (чтение и запись). Это доступно для статических переменных.

Аналоговая величина отображается полосой. Доступно только для ASM-файлов. Позволяет видеть 1-байтовую переменную как полоску длиной 0 - 255 пунктов.

Вокне Code Notebook можно выполнить следующие действия:

Просмотр – мышь-По-символу. Поместите курсор мыши поверх выбранной переменной, ее значение обнаружится в маленьком окне подсказки. Это свойство называется чувствительный контекст. В Cи только локальные переменные отображаются в контексте. Это свойство

может быть включено/отключено в меню Options | Editors | Enable mouse- over-symbol watch.

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

Местное всплывающее меню. Поместите указатель мыши в желательную переменную, затем откройте местное всплывающее меню (щелкните правой кнопкой мыши). Вход в меню позволяют открыть инспектор отладки или расположить переменную в менеджере просмотра. Быстрая клавиша F10 (менеджер просмотра). Поместите указатель мыши в желательную переменную, затем нажмите F10. Окно Watch Manager расположит символ, для изменения формата отображения.

Двойной щелчок по позиции ячейки памяти в окне Data Memory приводит к появлению диалогового окна для данной позиции. Но если позиция ячейки памяти соответствует некоторой статической переменной, ее имя будет отображено в заголовке окна. Для многобайтных переменных только первая позиция в последовательности ячеек оперативной памяти показывает имя переменной.

Описанные действия можно выполнить без остановки моделирования.

2.16. Инспектор отладки Debug Inspector

Во время отладки инспектор отладки позволяет видеть и изменять содержание переменных, массивов и т.п.

Рис. 14. Окно инспектора отладки

На рис. 14 показано окно инспектора отладки для массива символов с именем rbuf, выделенным в тексте программы, написанной на языке Си.

Возможности окна:

многоформатное отображение (HEX + целое число + ASCII);

отображение структур/объединений;

поддержка битных полей;

отображение массивов;

передвижение (навигация) через указатели;

прямой вывод строк символов (char *), законченных пустым окончанием (NULL-terminated);

·структуры/объединения в пределах других структур/объединений;

·модификация переменных или элементов структуры;

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

переменную. На рис. 15 указатель мыши наведен на имя массива символов rbuf. Расположение переменной в памяти можно определить из контекстного меню при помощи команды Go to Program Memory (рис. 16).

Рис. 15. Просмотр значений переменой при помощи наведения указателя мыши

Рис. 16. Расположение переменной в памяти

Как запускать инспектора отладки

В окне Code Notebook дважды щелкните по переменной непосредственно в исходном тексте (см. рис. 15) или используйте соответствующую команду …-> Inspect/Modify в контекстном меню (см. рис. 16), когда курсор расположен на надлежащей переменной.

Навигация через Cи-указатели

Инспектор отладки может быть запущен по указателю переменной. Например, myPointer это адрес, где находится значение переменной целого типа, которая в тексте программы объявлена как

int *myPointer;

Просмотреть фактическое значение целого числа *myPointer можно, нажав по кнопку Descend. Тогда в таблицу инспектора отладки будет добавлена новая строка, названная *myPointer, показывающая значение целого числа.

Кнопка Descend также позволяет наблюдать структуры/объединения в пределах других структур/объединений. Сделайте щелчок на кнопке Descend и новая строка таблицы с выбранной структурой будет добавлена.

Для удаления новых позиций табуляции, созданных с помощью Descend, используйте кнопку Back.

Как изменять переменную

Щелчок на кнопке Modify, когда была выделена переменная (или элемент массива/структуры), позволит редактировать значение в поле, где показана переменная. Щелкните кнопкой Apply для выполнения модификации.

В случае отображения переменных в нескольких форматах (HEX + ASCII и т.д.) только крайний левый будет принят во внимание для модификации, поэтому нет никакой потребности изменять все показанные форматы.

Используйте кнопку Descend, чтобы передвигаться через структуры, содержащие указатели на другие структуры (связанные списки).

По умолчанию переменные типа char* (указатель на символ) отображены как пустой указатель окончания строки символов.

2.17. Сообщения об ошибках и предупреждения

VMLAB предусматривает механизм, обнаруживающий аномальные ситуации в программном коде. Если аномальная ситуация обнаружена,

VMLAB дает предупреждение в окне сообщений (Messages), останавливает моделирование на команде, которая её вызвала.

Пример ошибки в имени метки (рис. 17): в окне сообщений после знака ! указано, что в строке 17 исходного кода производится обращение к неопределенной переменной. В исходном коде напротив строки с ошибкой также ставится знак !. Ошибка заключается в пропуске буквы в слове start.

Рис. 17. Сообщение об ошибке

Пример предупреждающего сообщения в окне сообщений, показывающего PC (значение программного счетчика), время и идентификатор категории ошибки:

![PC = $0BAA, Time = 0.29 ms, {MEM}]: Attempt to read in a write-only position

В переводе на русский:

![PC = $0BAA, Время = 0.29 ms, {MEM}]: Попытка читать в позиции только для записи. {MEM} – категория ошибки (память).

Тематические категории ошибок:

центральный процессор;

память;

стек;

порты ввода/ вывода;

внешние устройства (UARTs, таймеры и т.д.);

АЦП;

таймеры;

ошибка получена из неопределенных битов (X);

сторожевой таймер.

Как локализовать причину предупреждения

Если исходный код написан на Ассемблере (файл *.asm), моделирование остановится на команде, ответственной за ошибку. Однако

если используется язык высокого уровня, команда может быть скрыта в некоторой внутренней части кода (библиотека и т.д.), её не видно в исходном тексте. В таких случаях нужно смотреть окно с листингом исходного текста и окно Program Memory.

Как получить расширенную информацию

Иногда короткого сообщения недостаточно, чтобы понять, что не так. В этом случае используется команда Explain error (Объяснение ошибки) в контекстном меню, которая открывает окно Help с разъяснениями по поводу полученного краткого сообщения.

Вы можете не согласиться с выданными VMLAB сообщениями, если хорошо принимаете ситуацию. Меню Options | Errors reporting даёт возможность включить/отключить такие сообщения об ошибках и предупреждения по тематическим категориям, а также выбрать действия, выполняемые при обнаружении ошибок: остановка, регистрация, звуковой сигнал и т.д.

Как распознать ошибки во время трансляции

Во время трансляции ошибки/предупреждения расположены в окне сообщений в разделе Code maker. Дважды щелкните по линии ошибки/ предупреждения, строка с ошибкой автоматически выделится красным в соответствующем редакторе.

Сообщения об ошибках во время выполнения программы

Сообщения, выдаваемые при появлении ошибок (по категориям): Центральный процессор / Память

Conditional jump referred to an unknown flag условный переход отослал неизвестный флажок.

Write to read-only position and vice-versa позиции только для чтения и наоборот.

Access to reserved or unimplemented positions обращение к резервным или неосуществленным позициям.

Stack overflow / underflow переполнение стека. Comparing unknown data сравнение неизвестных данных. Периферия

Writing into peripherals registers with unknown data запись в периферийные регистры с неизвестными данными.

Write in a read-only address or vice-versa запись в адрес только для чтения или наоборот.

АЦП (аналого-цифровой преобразователь)

Conversion issued while other taking place пропущенное преобразование.

A/D node changed while converting A/D-узел (узел, к которому подключен аналогово-цифровой преобразователь) изменен при преобразовании.

Reference voltage out of range напряжение выходит из допустимого диапазона.

ADMUX register access while working доступ к регистру ADMUX при работе.

Selected inexistent channel in ADMUX выбран несуществующий канал в ADMUX.

ADC clock out of recommended range синхронизация АЦП вышла из рекомендованного диапазона.

UART

Overrun – заполнено.

Data register (UDR) not empty регистр данных (UDR) не пустой. UART is busy UART занят.

Таймеры

No pin defined as output in PWM mode – не определен никакой вывод в режиме вывода от PWM.

Сторожевой таймер

RESET caused by the Watchdog сброс вызван сторожевым таймером. WDTOE bit cleared by hardware WDTOE бит очищен аппаратными

средствами.

Watchdog must be disabled or reset before changing the Prescale Select

сторожевой таймер должен быть заблокирован или сброшен перед изменением Prescale Select.

Watchdog Reset (WDR) must always be executed before the Watchdog Timer is enabled сброс сторожевого таймера (WDR) должен всегда выполняться прежде, чем сторожевой таймер допускает.

SPI

Attempt to write into SPCR register while a transfer is in progress

попытка записи в регистр SPCR во время передачи информации по каналу.

If configured as master, MOSI and SCK pin must be outputs если MOSI

сконфигурирован как мастер, вывод SCK должен быть выходом. EEPROM

Specified address out of range указанный адрес выходит из допустимого диапазона.

Attempt to read or write data register while is busy попытка чтения или записи в регистр данных, в то время как присутствует сигнал «Занят».

Interrupts enabled during write cycle – попытка осуществить прерывания в течение цикла записи.

Команда меню Options | Error reporting позволяет маскировать специфическую ошибку, т.е. если, несмотря на получение сообщения об ошибках, вы считаете, что в вашем приложении своя специфика и с полученным сообщением нельзя соглашаться.

Общая синтаксическая ошибка путаница в суффиксах MEG и М. М обозначает Mili, а не Mega.

3. ОСНОВНЫЕ ДИРЕКТИВЫ

Список директив, используемых в VMLab:

.CLICKTOOL

.TRACE

.CLOCK

.SOURCE

.MICRO

.STATS

.PLOT

Директива трансляции:

.POWER

.PROGRAM

.RAMINIT

Директивы GNU Cи компилятора (GCC):

.STORE

.GCCPATH

.TAB

.GCCMAKE

.TARGET

.BAT

.TOOLCHAIN

.COFF

.CLICKTOOL-директива

Эта директива позволяет запускать процесс console MS-ДОСа, щелкая кнопку "Молоток с отверткой", доступную в панели инструментов. Она используется, когда МК программируется при помощи внешних программ.

Чтобы запускать команду, определенную .CLICKTOOL, необходимо успешное выполнение команды Project | Build.

Синтаксис:

.CLICKTOOL < командная строка консоли MS DOS >

Пример:

.CLICKTOOL " burn.exe - FmyFile.hex-X-Y"

.CLOCK-директива

Указывает VMLAB частоту синхронизации, которую нужно использовать в начале моделирования.

Синтаксис:

.CLOCK <значение>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]