Компиляция Си-программы – первая программа на МК

April 17, 2014 by admin Комментировать »

Правилом хорошего тона при программировании считается создание проекта, семантически объединяющего исходные файлы в единое целое. Имеется в виду ещё одна надстройка над файлами «demol.c» и «makefile». Разумеется, и без создания проекта эти файлы можно успешно скомпилировать, выбрав в PN2 опцию «Tools — [WinAVR] Make А11». Однако лучше довериться опыту профессионалов и изначально «зазубрить» азы.

Порядок действий.

1.               Выбрать в редакторе PN2 опцию: «File — New — Project — <указать папку, где будет храниться новый проект, для однозначности C:\1001\> — <ввести имя проекта «demol»> — Сохранить>». Проект создан, но он пока пустой.

2.               Выделить в левой панели PN2 вновь созданный проект «demol» и правой кнопкой «мыши» последовательно добавить в него файлы «makefile», «demol.c». Убедиться, что в папке C:\1001\ появился новый файл «demol.pnproj» длиной 89 байтов. Это и есть файл проекта. Теперь в PN2 его можно открыть «File — Open Project(s)…», после чего появится быстрый доступ к входящим в него файлам.

3.               Откомпилировать программу: «Tools — [WinAVR] Make А11». Дождаться появления в нижнем окне надписи «Process Exit Code: 0», свидетельствующей об успешном завершении процесса. В том же окне несколькими строками выше будут показаны общая длина кодов программы и процент занимаемого в памяти места (Рис. 6.12). Эту информацию как раз и надо ввести в строку 24 листинга.

Рис. 6.12. Результат компиляции проекта «demol».

При ошибках в наборе листинга появляется надпись «Process Exit Code: 2» с указанием номера подозрительной строки. Разумеется, найдены будут лишь те ошибки, которые противоречат синтаксису языка Си. Логические неточности и огрехи алгоритма остаются на совести программиста, ведь MK, по определению, будет старательно выполнять то, что написано в тексте программы, а не то, что хотелось бы её создателю…

Чтобы в дальнейшем быть готовым к любым неожиданностям, настоятельно рекомендуется провести несколько краш-экспериментов с первой Си-программой и преднамеренно добавить в неё ошибки. Например, удалить закрывающую скобку в строке 22 или ввести ещё одну «точку с запятой» в строке 13. Далее откомпилировать проект и проанализировать появляющиеся сообщения об ошибках. Желательно взять себе за правило — перед каждой новой компиляцией очищать предыдущие записи: «Tools — [WinAVR] Make C1ean». Это поможет избежать ситуации, когда в программу вносятся изменения, но компилятор их почему-то не замечает, загружая предыдущие данные из буфера.

После проведения компиляции в папке С:\1001\должны появиться дополнительные файлы с общим корнем «demol», но под разными расширениями. Например, «demol.lss» и «demol.lst» — это полный и сокращённый асемблерные листинги, которые открываются для чтения в любом текстовом редакторе. Данная информация может пригодиться при консультациях с более опытными программистами, если что-то работает не так, как предполагается.

Главной целью компиляции является получение НЕХ-файла «demol.hex» длиной 345 байтов, ради чего, собственно говоря, и был затеян весь «сыр-бор». В файле содержатся коды прошивки MK. Но почему его длина 345, а не 114 байтов как декларировалось в строке 24 листинга? Потому что НЕХ-файл по структуре текстовый, а не бинарный, плюс к тому в нём содержатся адреса ячеек памяти и контрольные суммы. В итоге объём файла возрастает почти втрое и это нормально.

Контрольные суммы позволяют построчно выявлять случайные сбои кодов и вовремя предупреждать пользователя о неполадках. Из-за этого файлы с расширением «.hex» значительно чаще используются при программировании MK, чем файлы с расширением «.bin». По мере обработки НЕХ-файла в оболочке программирования его текстовые надписи автоматически переводятся в бинарные коды с объёмом ровно 114 байтов, при этом гарантируется достоверность записи информации во внутреннее флэш-ПЗУ MK.

Источник: Рюмик, С. М., 1000 и одна микроконтроллерная схема. Вып. 2 / С. М. Рюмик. — М.:ЛР Додэка-ХХ1, 2011. — 400 с.: ил. + CD. — (Серия «Программируемые системы»).

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты