Программирование микропроцессорных систем

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

личают по их позиции в строке. Так первые два знака занимает шестнадцатеричное число, означающее длину цепочки.

В нашем случае длина обеих цепочек равна 0x10 (то есть 16) байт. Следующие четыре символа - это начальный адрес, куда эти байты должны быть помещены. Первая цепочка будет размещена в памяти, начиная с нулевого адреса. Вторая цепочка - с адреса 0x0010. Очередные два знака занимает код вида строки. В интересующих нас строках он равен 00, что означает, что эти строки предназначены для записи данных (в первой строке такой код равен 02, а в последней 01).

Сразу после кода вида строки начинаются собственно данные. Каждый байт данных занимает два знака. Самые последние два символа - это контрольная сумма. Она рассчитывается по специальной формуле с использованием значений всех байтов цепочки и служит для проверки на отсутствие ошибок.

Процедура трансляции

 

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

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

ошибки синтаксиса (неправильное написание имени команды);

неверное количество параметров у оператора;

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

Например, сообщение Unknown instruction or macro означает, что найдена Неизвестная инструкция или макрокоманда.

Предупреждения - это тоже ошибки, но некритические. При возникновении некритической ошибки процесс трансляции завершается как обычно. Все результирующие файлы создаются в полном объеме. Однако прежде чем зашивать такую программу в микроконтроллер, тщательно проанализируйте сообщение и постарайтесь определить, как оно повлияет на результаты работы. В любом случае, лучше изменить программу таким образом, чтобы устранить все предупреждения.

Все сообщения во вкладке Build появляются по мере их поступления. Для наглядности каждое сообщение помечено цветным кружочком в начале строки:

сообщения об ошибках помечаются кружочком красного цвета;

предупреждения - желтым кружочком;

сообщения об успешном выполнении каждого очередного этапа трансляции помечаются зеленым кружочком.

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

имя файла;

номер строки;

фрагмент текста программы, содержащий ошибку;

ее расшифровка.

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

Иногда программа неверно определяет место, где возникла ошибка. Это происходит из-за несовершенства анализатора синтаксиса. Дело в том, что очень сложно разработать идеальный алгоритм анализа ошибок. Если в какой-либо строке транслятор показывает ошибку, а вы ошибок не наблюдаете, посмотрите на предыдущие строки. Возможно, ошибка где-то там.

Отладка программы

Ошибки алгоритма и его реализации

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

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

Вообще, процесс написания программы процентов на 60-70 состоит из поиска и устранения ошибок. И основное количество ошибок выявляется при отладке программы. Все программные примеры, приведенные в этой книге, прежде чем появились на ее страницах, прошли процесс отладки.

И несмотря на простоту этих программ и достаточный опыт в программировании, мне пришлось исправить немало ош