Слайд 1Математические методы в программировании (ММвП)
Преподаватель:
Олег Чеславович Ролич
кандидат технических наук, доцент
Слайд 2Лабораторная работа
ПРОГРАММИРОВАНИЕ ДЛЯ AVR
В СРЕДЕ ECLIPSE
Слайд 3Рассматриваемые вопросы
Создание в среде Eclipse проекта на базе make-файла
Связь программного проекта
в Eclipse со схемотехническим в Proteus
Дополнительные полезные настройки Eclipse-проекта
Слайд 4Создание в среде
Eclipse проекта на базе make-файла
Слайд 5Создание в среде
Eclipse проекта на базе make-файла
Здесь должно быть указано рабочее
пространство ("надпроектная" папка), а не сам проект!!!
Слайд 6Создание в среде Eclipse проекта на базе make-файла
Закрытие окна приветствия
Слайд 7Создание в среде Eclipse проекта на базе make-файла
Необходимо убедиться в активной
перспективе «C/C++» и, в противном случае, выбрать её из списка перспектив
Окно Eclipse после закрытия окна приветствия
Слайд 8Создание в среде Eclipse проекта на базе make-файла
Если в качестве перспективы
по умолчанию установлена «Java», а не «C/C++», она меняется нажатием на кнопку «Open Perspective» и выбором из прилагаемого списка требуемой перспективы. Ненужную перспективу «Java» можно закрыть нажатием на ней правой клавишей мыши и выбором пункта «Close» в появившемся меню
Слайд 9Создание в среде Eclipse проекта на базе make-файла
Смена перспективы
Кнопка «Open Perspective»
Список
прилагаемых перспектив
(в будущем нам понадобятся две из них: «C/C++» и «Debug»)
Внимание! Если «C/C++» отсутствует в списке перспектив, её надо будет установить посредством соответствующего plug-in
cdt-master-x.x.x.zip
(процесс установки plug-in см. далее)
Слайд 10Создание в среде Eclipse проекта на базе make-файла
Исходное состояние Eclipse
Слайд 11Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с
разработанной схемой
Шаг 1.
Начальная стадия импортирования проекта
File → Import
Слайд 12Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с
разработанной схемой
Шаг 2.
Выбор типа проекта
C/C++ → Existing Code as Makefile Project → Next
Слайд 13Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с
разработанной схемой
Шаг 3.
Указание пути к папке проекта
Existing Code Location → Browse… → Выбор папки проекта
Внимание! Проект располагается в папке рабочего пространства, выбранного при запуске Eclipse как Workspace
Слайд 14Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с
разработанной схемой
Шаг 4.
Результат указания пути к папке проекта
Finish
Слайд 15Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с
разработанной схемой
Шаг 5.
Результат добавления проекта к рабочему пространству
Слайд 16Создание в среде Eclipse проекта на базе make-файла
Добавление в проект исходных
Си-файлов
Шаг 1.
Главное меню «File → New → Source File»
Слайд 17Создание в среде Eclipse проекта на базе make-файла
Добавление в проект исходных
Си-файлов
Шаг 2. Указание имени исходного Си-файла
Source file: main.c → Finish
Слайд 18Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
/*
*
main.c
*
* Created on: 27.1.2016
* Author: Oleg
*/
#include
#include
#include
#define REG_STRING_ENABLE 0x02
#define REG_COLUMN_ENABLE 0x01
#define STR_QUANTITY 8
#define DIGIT_PERIOD 0x1000
Слайд 19Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
static uint8_t
aunFont[][STR_QUANTITY] = {
{
(uint8_t)~0x00,
(uint8_t)~0x00,
(uint8_t)~0x7E,
(uint8_t)~0xFF,
(uint8_t)~0x81,
(uint8_t)~0xFF,
(uint8_t)~0x7E,
(uint8_t)~0x00,
},
Слайд 20Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
{
(uint8_t)~0x00,
(uint8_t)~0x00,
(uint8_t)~0x80,
(uint8_t)~0xFF,
(uint8_t)~0xFF,
(uint8_t)~0x81,
(uint8_t)~0x00,
(uint8_t)~0x00,
},
Слайд 21Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
{
(uint8_t)~0x00,
(uint8_t)~0x00,
(uint8_t)~0xC6,
(uint8_t)~0xDF,
(uint8_t)~0xE3,
(uint8_t)~0xE3,
(uint8_t)~0x86,
(uint8_t)~0x00,
},
};
Слайд 22Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
int main
( void ) {
uint8_t unDispString = 1;
uint8_t unFontIndex = 0;
int32_t nDelayIn, nDelayOut;
int32_t nDigit = 0;
DDRA = 0xFF;
DDRB = 0x03;
PORTA = 0;
PORTB = 0;
Слайд 23Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
while (1)
{
nDelayOut = DIGIT_PERIOD;
while (--nDelayOut > 0) {
PORTA = unDispString;
PORTB |= REG_STRING_ENABLE;
PORTB &= (~REG_STRING_ENABLE);
unDispString <<= 1;
if (!unDispString) {
unDispString = 1;
}
Слайд 24Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c
PORTA =
aunFont[nDigit][unFontIndex++];
PORTB |= REG_COLUMN_ENABLE;
PORTB &= (~REG_COLUMN_ENABLE);
unFontIndex &= (STR_QUANTITY - 1);
for (nDelayIn = 0; nDelayIn < 100; nDelayIn++) {
}
}
nDigit++;
nDigit %= (sizeof(aunFont) / STR_QUANTITY / sizeof(uint8_t));
}
return 0;
}
Слайд 25Создание в среде Eclipse проекта на базе make-файла
Создание системы построения проекта
(make-файла)
Шаг 1. Начальная стадия добавления в проект нового файла
Главное меню «File → New → File from Template»
Слайд 26Создание в среде Eclipse проекта на базе make-файла
Создание системы построения проекта
(make-файла)
Шаг 2. Завершающая стадия добавления в проект нового файла – make-файла
File name: makefile → Finish»
Имя «makefile» стандартное
Данный файл не имеет расширения
Слайд 27Создание в среде Eclipse проекта на базе make-файла
Создание системы построения проекта
(make-файла)
Шаг 3. Результат создания make-файла
Созданный makefile проекта и его изначально пустое содержимое
Слайд 28Создание в среде Eclipse проекта на базе make-файла
Создание системы построения проекта
(make-файла)
Шаг 4. Написание make-файла
Желательное совпадение значения TARGET с названием проекта
Слайд 29Создание в среде Eclipse проекта на базе make-файла
Содержимое make-файла
# Target file
name (without extension)
TARGET=LED_Display
# Define commands
CC=avr-gcc
OBJCOPY=avr-objcopy
SIZE = avr-size
REMOVE= rm -f
COPY= cp -f
MOVE= mv -f
REMOVEDIR = rmdir
MAKEDIR= mkdir –v
DEBUG=-gdwarf-2
OPTIM=-O0
M_CPU=atmega128
LINKER_FLAGS= -I. -Wl,-Map,$(TARGET).map -mmcu=$(M_CPU)
Слайд 30Создание в среде Eclipse проекта на базе make-файла
CFLAGS= -I. \
-D _AVR_IO_H_
\
-mmcu=$(M_CPU) -Wall $(OPTIM) $(DEBUG) \
-std=gnu99 \
-funsigned-char -funsigned-bitfields -fpack-struct \
-fshort-enums -MMD -MP
SOURCE= main.c
OBJS = $(SOURCE:.c=.o)
Содержимое make-файла
Слайд 31Создание в среде Eclipse проекта на базе make-файла
Содержимое make-файла
all: begin Debug
$(TARGET).bin size finished move end
$(TARGET).bin : $(TARGET).elf
$(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $(TARGET).elf $(TARGET).hex
$(TARGET).elf : $(OBJS)
$(CC) $(LINKER_FLAGS) -o $(TARGET).elf $(OBJS)
$(OBJS) : %.o : %.c
$(CC) $(CFLAGS) -c -o $@ $<
size:
$(SIZE) --format=berkeley $(TARGET).elf
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_MOVE = ------ Moving output files into Debug folder ------
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
Слайд 32Создание в среде Eclipse проекта на базе make-файла
begin:
@echo
@echo $(MSG_BEGIN)
finished:
@echo $(MSG_ERRORS_NONE)
move: Debug
@echo
@echo
$(MSG_MOVE)
@echo
$(MOVE) *.d Debug
$(MOVE) $(OBJS) Debug
$(MOVE) $(TARGET).elf Debug
$(MOVE) $(TARGET).hex Debug
$(MOVE) $(TARGET).map Debug
Содержимое make-файла
Слайд 33end:
@echo $(MSG_END)
@echo
Debug:
$(MAKEDIR) Debug
clean : begin clean_list end
clean_list :
touch Makefile
@echo $(MSG_CLEANING)
$(REMOVE) *.d
$(REMOVE)
$(OBJS)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).bin
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) Debug/*
$(REMOVEDIR) Debug
Создание в среде Eclipse проекта на базе make-файла
Содержимое make-файла
Слайд 34Создание в среде Eclipse проекта на базе make-файла
Первая попытка построения проекта
Шаг
1.
Запуск построения проекта
(запуск цели all make-файла)
Главное меню
«Project → Build All (Ctrl+B)»
Слайд 35Создание в среде Eclipse проекта на базе make-файла
Успешное построение проекта
Искомый elf-файл,
необходимый для Proteus-проекта
Слайд 36Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 1.
Вход в
диалоговую панель редактирования свойств микроконтроллера
Слайд 37Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 2.
Выбор программного
Слайд 38Связь программного проекта в Eclipse со схемотехническим в Proteus
Искомый elf-файл внутри
рабочего проекта «LED_Display», который принадлежит рабочему пространству «ATmega»
Слайд 39Связь программного проекта в Eclipse со схемотехническим в Proteus
Результат выбора программного
Слайд 40Связь программного проекта в Eclipse со схемотехническим в Proteus
Проверка корректности связи
программного проекта в Eclipse со схемотехническим в Proteus
Шаг 1. Запуск модели
Слайд 41Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 2. Контроль
состояния отладочных и информационных окон
Слайд 42Связь программного проекта в Eclipse со схемотехническим в Proteus
Демонстрационное видео результирующей
работы прибора в среде Proteus
Слайд 43Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибок
Шаг 1. Выявление семантических ошибок
Слайд 44Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибок
Шаг 2. Переход к свойствам проекта
Слайд 45Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибок
Шаг 3. Подготовка к указанию пути
к стандартным библиотекам
Слайд 46Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибок
Шаг 4. Непосредственное указание пути к
стандартной библиотеке
Слайд 47Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибок
Результат устранения семантических ошибок
Слайд 48Дополнительные полезные настройки Eclipse-проекта
Во избежание повторного прохождения длительного процесса настройки аналогичных
проектов новые проекты настоятельно рекомендуется создавать на базе существующих путём копирования (Ctrl+C → Ctrl+V)
Слайд 49Дополнительные полезные настройки Eclipse-проекта
Шаг 1. Копирование текущего проекта в буфер обмена
Слайд 50Дополнительные полезные настройки Eclipse-проекта
Шаг 2. Вставка скопированного проекта из буфера обмена
Слайд 51Дополнительные полезные настройки Eclipse-проекта
Шаг 3. Коррекция имени нового проекта
Слайд 52Дополнительные полезные настройки Eclipse-проекта
Шаг 4. Очистка нового проекта
Слайд 53Дополнительные полезные настройки Eclipse-проекта
Шаг 5. Коррекция имени нового проекта в его
make-файле
Слайд 54Дополнительные полезные настройки Eclipse-проекта
Шаг 6. Построение нового проекта
Слайд 55Дополнительные полезные настройки Eclipse-проекта
Шаг 7. Контроль безошибочного построения нового проекта
Слайд 56Дополнительные полезные настройки Eclipse-проекта
Шаг 1. Подготовка к настройке изменения свойства автоматического
сохранения всех несохранённых файлов перед построением проекта
Слайд 57Дополнительные полезные настройки Eclipse-проекта
Шаг 2. Непосредственное изменение свойства автоматического сохранения всех
несохранённых файлов перед построением проекта
Слайд 58Дополнительные полезные настройки Eclipse-проекта
Установка связи проекта с различными библиотеками
Шаг 1.
Начало изменения
свойств проекта
Главное меню «Project → Properties»
Слайд 59Дополнительные полезные настройки Eclipse-проекта
Установка связи проекта с различными библиотеками
Шаг 2.
Слайд 60Дополнительные полезные настройки Eclipse-проекта
Установка связи проекта с различными библиотеками
Шаг 3. Указание
пути к библиотекам в файловой системе
Слайд 61Дополнительные полезные настройки Eclipse-проекта
Результат связи проекта с выбранной библиотекой