Разработка программного обеспечения и отладка микропроцессорного устройства (МПУ). Система команд. Способы адресации.
Разработка программного обеспечения МПСУ имеет особенности, которые обусловлены следующими причинами:
- необходимость реализации программ управления в реальном масштабе времени, т.е. со строго ограниченным временем выполнения;
- необходимость синхронизации выполнения программ с внешними событиями;
- большая связанность программ, т. е. наличие большого числа переменных общих для различных функциональных задач.
Кроме этого к программам управления в МПСУ предъявляются повышенные требования в отношении устойчивости к различного рода сбоям и ошибкам.
Процесс разработки прикладного программного обеспечения обычно выполняется в следующей последовательности: на первом этапе производится разработка алгоритмов решения задач управления, затем осуществляется кодирование программы на языке программирования, ее трансляция в машинные коды микропроцессора и отладка.
Разработка алгоритмов управления является наиболее ответственным этапом, от которого существенно зависит качество процесса управления и технические параметры разрабатываемой МПСУ. Даже для относительно простой системы трудно разработать алгоритм, охватывающий все детали и особенности управления объектом, поэтому рекомендуется использовать последовательные уровни детализации алгоритма:
- концептуальная блок-схема программного обеспечения;
- функциональная блок-схема решения отдельных задач;
- машинно-ориентированные блок-схемы.
Концептуальная блок-схема содержит небольшое количество блоков, отделяющих состав программного обеспечения и основные задачи, решаемые программными средствами, которые можно разделить на два класса:
- прикладные, связанные с формированием управления по заданным алгоритмам регулирования;
- системные, связанные с организацией вычислений, управления техническими средствами МПСУ и обслуживанием пульта.
Две первые схемы могут быть сделаны безотносительно к какому-либо микропроцессорному комплекту, третья же схема должна учитывать особенности архитектуры конкретного микропроцессора, на базе которого реализована МПСУ.
Трудоемкость программирования и качество разрабатываемой программы в значительной степени определяется используемым языком программирования. При использовании машинного языка все элементы программы: коды операций, адреса ячеек памяти и регистров, - представляются в двоичной форме, иногда для более компактной записи в восьмеричной или шестнадцатеричной. При этом программист имеет возможность непосредственно управлять всеми программно-доступными элементами МПСУ, полностью контролировать каждый шаг, выполняемый системой. Это позволяет оптимизировать программу с точки зрения времени её выполнения и требуемого для её размещения объёма памяти.
Однако программирование на машинном языке – утомительный и трудоёмкий процесс, требующий от программиста запоминания кодов многочисленных команд, входящих в систему команд микропроцессора, использование абсолютных адресов ячеек памяти, что не удобно в особенности при протяженных программах, содержащих большое число переходов. Программа, составленная в машинных кодах, трудна для понимания и модификации. Поэтому машинный язык применяется редко и, как правило, при составлении коротких программ.
При программировании на языке ассемблера вместо двоичных кодов операций используются их символические буквенные обозначения - мнемокоды. Кроме этого ассемблер позволяет записать в символическом виде данные и адреса, используемые в программе, что существенно облегчает процесс программирования и чтения программ. Язык ассемблера, как и машинный язык, требует от программиста свободного владения архитектурой соответствующего МПК. В этом смысле оба языка являются машинно-ориентированными.
Программа на языке ассемблера состоит из ряда строк, каждая из которых имеет четыре поля: поле метки, поле кода операции, поле операндов и поле комментариев. Назначение полей следующее:
- поле метки содержит символическое имя, состоящее из букв и цифр, однозначно определяющее абсолютный адрес, по которому хранится оператор. Метка позволяет обращаться к данному оператору из любой точки программы в ходе её выполнения и может отсутствовать, если в программе нет ссылок на оператор. Поле метки отделяется от поля кода операции двоеточием;
- поле кода операции содержит мнемоническое обозначение кода операции, приводимое в системе команд микропроцессора, или символическое обозначение директивы ассемблера (псевдокоманды), которая используется при трансляции программы;
- поле операнда содержит один или два операнда, разделенных запятой, и отражает информационное содержание команд микропроцессора и директив ассемблера, указанных в поле кода операции. В качестве операндов могут использоваться численные или символьные константы, имена, выражения;
- поле комментария служит для записи информации, поясняющей выполняемые действия. Комментарии нужны программисту, они не воспринимаются МПСУ, а лишь повышают удобство чтения. Поле комментариев обычно отделено от предыдущего поля точкой с запятой.
Программирование на языке высокого уровня существенно повышает производительность работы программиста, обеспечивает естественную форму записи вычислительного процесса, но не всегда позволяет использовать технические возможности МПСУ, а полученные после трансляции результирующие машинные программы значительно медленнее и длиннее аналогичной программы на машинном языке.
Для проведения этапа трансляции и отладки разработанных программ используются различные инструментальные средства (редакторы, трансляторы, компоновщики, отладчики), которые делятся на резидентные и кросс-средства. Кросс-средства – это программы, которые выполняются не на микроЭВМ, для которой разрабатываются программы, а на какой-либо другой машине. Резидентные средства – это те инструментальные программы, которые выполняются на тех же микропроцессорных системах, для которых и разрабатываются программы.
Отладка микропроцессорных систем – это процесс обнаружения ошибок, допущенных на предыдущих этапах проектирования, их исправления и обеспечения правильности функционирования системы в реальных условиях. Отладка может быть разделена на несколько этапов, в ходе выполнения которых осуществляется автономная отладка аппаратной части и программного обеспечения, и также комплексная отладка всей системы в целом.
Отладка аппаратуры предполагает статическую и динамическую проверку. В статике проверяются целостность электрических соединений, работоспособность элементов и величина напряжений в контрольных точках. Динамическая проверка позволяет выявить основной процент неисправностей в аппаратуре. Она проводится при выполнении процессором тестовой программы. При этом проверяется происхождение данных в системе, временные диаграммы сигналов в контрольных точках и взаимодействие отдельных устройств МПСУ. Для локализации неисправностей широко используются различные приборы: осциллографы, вольтметры, амперметры, частотомеры, генераторы тестовых сигналов, логические и сигнатурные анализаторы.
Этап отладки программ МПСУ производится с использованием специальных средств: программных и аппаратно-программных. Программные средства отладки – комплекс программ, позволяющих выводить на дисплей содержимое ячеек памяти и регистров микропроцессора, изменить содержимое регистров и любой ячейки оперативной памяти; начинать выполнение программы с любой ячейки памяти; останавливать выполнение программы по достижению команды, находящейся в определенной ячейке памяти или при выполнении какого-либо условия. Все это дает возможность выполнять прикладную программу в пошаговом режиме, в режиме трассировки, в режиме остановки программы в контрольных точках. При работе прикладных программ в этих режимах эффективно обнаруживаются ошибки и анализируются их причины.
В пошаговом режиме выполнение отлаживаемой программы прекращается после каждой команды микропроцессора и возобновляется вновь по команде оператора, при этом на дисплее отображается информация о состоянии регистров микропроцессора, ячеек памяти, используемых в последней команде, и несколько следующих команд.
В режиме трассировки автоматически выполняется вся или часть программы до останова извне, при этом на дисплее отображается содержимое регистров после выполнения каждой команды. Программист, анализируя эти данные, может обнаружить ошибку.
В режиме остановки на контрольной точке место останова выполнения программы задается в виде адреса, кода команды, слова состояния микропроцессора, содержимого регистров и комбинации кодовых слов. Это дает возможность контролировать порядок выполнения произвольных ветвей прикладной программы.
Отладка программного обеспечения только программными средствами происходит без связи с соответствующими аппаратными средствами МПСУ, что снижает эффективность этих средств и не позволяет выявить все ошибки программирования.
Аппаратно-программные средства обеспечивают комплексную отладку прикладных программ и аппаратуры, соответствующей МПСУ, путем моделирования работы аппаратных средств микропроцессорной системы. При этом пошаговый метод, трассировка и остановка по контрольным точкам позволяют постепенно вовлекать в работу все большую часть программных средств, а средства имитации аппаратуры МПСУ помогают последовательно охватывать отладкой все большую часть соответствующих аппаратных средств. Этим достигается высокая эффективность комплексной отладки всей МПСУ.
Рассмотрим кратко возможности микропроцессора в отношении выполнения различных арифметических, логических и прочих команд.
Методы адресации. Код команды состоит из кода операции (КО) и сведений об операндах. Операнды в команде могут быть обозначены по-разному, в зависимости от чего и говорят о разных методах адресации:
-первый метод предусматривает довольно много однобайтных команд, в которой сам код операции несет информацию о внутренних регистрах МП, куда записаны операнды (регистровая адресация); в этом случае регистрам А, В, С, D, E, H, L соответствуют шестнадцатиричные одноразрядные коды 7, 0, 1, 2, 3, 4, 5;
-второй метод заключается в том, что в двухбайтных командах второй байт может представлять собой непосредственно код операнда (непосредственная адресация);
-третий метод заключается в том, что в этом случае второй и третий байты трехбайтной команды представляют собой адрес ячейки памяти, в которой находится операнд (прямая адресация);
-четвертый метод заключается в том, что код команды содержит информацию о 16-разрядном регистре, содержащем адрес ячейки памяти, в которой находится операнд (косвенная адресация);
-пятый метод используется в МП 8080 (стековая адресация); в этом случае однобайтная команда работы со стеком не несет информации об адресе, просто используется очередная ячейка стековой памяти.
Состав команд разделяют по следующим группам: передачи данных; арифметические, логические, ветвления, стека, ввода/вывода и машинного управления.
Группа передачи предназначена для передачи данных между регистрами или ячейками памяти и регистрами. Она содержит команды передачи (MOV, MVI), загрузки (LXI), размещения данных (LD, ST).
Арифметическая группа выполняет команды сложения (ADD, ADC), вычитания (SUB, SBB), инкремента (увеличения на единицу)(DCR, DCX) над данными в регистрах или в памяти.
Логическая группа выполняет операции И (ANA), ИЛИ (ORA), ИЛИ ИСКЛЮЧАЮЩЕЕ (XRA), сравнения (CMP, CPI), перемещение (сдвиг)(RLC, RRC), инвертирование (CMA, CMC) данных.
Группа ветвления вызывает условные переходы (JZ, JNZ, и др.) или безусловные (JMP), вызов программ (CALL, CZ и др.), возвраты (RET, RZ и др.) и повторные запуски (RST).
Группа стека, ВВ и машинного управления выполняет команды операций со стеком (PUSH, POP), ввода-вывода (IN, OUT), обработки прерываний (EI, DI), останова МП (HLT).
Программирование микропроцессорных системы заключается в составлении программы и последующем помещении кодов команд в ячейки памяти системы. Программа может составляться в виде последовательности двоичных машинных кодов команд. Однако она будет ненаглядна. Более удобно пользоваться при написании программ мнемоническими обозначениями команд. Существует специальная программа – ассемблер, с помощью которой можно на ЭВМ перевести написанную таким образом программу в машинные коды.
Выбор метода программирования микропроцессорной системы зависит от наличия и стоимости запоминающих устройств и от резерва времени для выполнения в системе более длинной программы.
Программа записывается на микро-ЭВМ в последовательных ячейках в виде кодов операций. Рассмотрим простейшую программу, извлекающую число из адреса 8400, инвертирующую его и записывающую результат в адрес памяти 8401.
Адрес | Содержимое | Метка | Код операции | Операнд | Комментарий |
3А | LDA | A,M | Передать в аккумулятор число из памяти с адресом 8400 | ||
2F | CMA | A | Инвертировать аккумулятор | ||
STA | M,A | Передать в ячейку 8401 данные из аккумулятор | |||
E7 | RST | Остановка программы,вызов монитора |
Здесь используется прямой способ адресации.
Дата добавления: 2017-01-26; просмотров: 2270;