Similar presentations:
Математические методы в программировании (ММвП)
1. Математические методы в программировании (ММвП)
Преподаватель:Олег Чеславович Ролич
кандидат технических наук, доцент
1
2. Лабораторная работа ПРОГРАММИРОВАНИЕ ДЛЯ AVR В СРЕДЕ ECLIPSE
23. Рассматриваемые вопросы
1. Создание в среде Eclipseпроекта на базе make-файла
2. Связь программного проекта в
Eclipse со схемотехническим в
Proteus
3. Дополнительные
полезные
настройки Eclipse-проекта
3
4. Создание в среде Eclipse проекта на базе make-файла
45. Создание в среде Eclipse проекта на базе make-файла
Здесь должно быть указано рабочее пространство("надпроектная" папка), а не сам проект!!!
5
6. Создание в среде Eclipse проекта на базе make-файла
Закрытие окна приветствия6
7. Создание в среде Eclipse проекта на базе make-файла
Окно Eclipse после закрытия окна приветствияНеобходимо убедиться в активной
перспективе
«C/C++»
и,
в
противном случае, выбрать её из
списка перспектив
7
8. Создание в среде Eclipse проекта на базе make-файла
Если в качестве перспективы по умолчанию установлена«Java», а не «C/C++», она меняется нажатием на
кнопку «Open Perspective» и выбором из прилагаемого
списка
требуемой
перспективы.
Ненужную
перспективу «Java» можно закрыть нажатием на ней
правой клавишей мыши и выбором пункта «Close» в
появившемся меню
8
9. Создание в среде Eclipse проекта на базе make-файла
Смена перспективыВнимание! Если «C/C++» отсутствует
в списке перспектив, её надо
будет установить посредством
соответствующего plug-in
cdt-master-x.x.x.zip
(процесс установки plug-in см. далее)
Кнопка «Open Perspective»
Список прилагаемых перспектив
(в будущем нам понадобятся две из
них: «C/C++» и «Debug»)
9
10. Создание в среде Eclipse проекта на базе make-файла
Исходное состояние Eclipse10
11. Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта сразработанной схемой
Шаг 1.
Начальная стадия
импортирования проекта
File → Import
11
12. Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта с разработанной схемойШаг 2.
Выбор типа
проекта
C/C++ →
Existing Code as
Makefile Project
→ Next
12
13. Создание в среде Eclipse проекта на базе make-файла
Добавление папкипроекта с
разработанной
схемой
Шаг 3.
Указание пути к
папке проекта
Внимание! Проект располагается в папке
рабочего пространства, выбранного при
запуске Eclipse как Workspace
Existing Code Location
→ Browse… → Выбор
папки проекта 13
14. Создание в среде Eclipse проекта на базе make-файла
Добавление папкипроекта с
разработанной
схемой
Шаг 4.
Результат указания
пути к папке
проекта
Finish
14
15. Создание в среде Eclipse проекта на базе make-файла
Добавление папки проекта сразработанной схемой
Шаг 5.
Результат добавления проекта к
рабочему пространству
15
16. Создание в среде Eclipse проекта на базе make-файла
Добавление впроект исходных
Си-файлов
Шаг 1.
Главное меню
«File → New →
Source File»
16
17. Создание в среде Eclipse проекта на базе make-файла
Добавление в проектисходных Си-файлов
Шаг 2. Указание имени исходного Си-файла
Source file: main.c → Finish
17
18. Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.c/*
* main.c
*
* Created on: 27.1.2016
* Author: Oleg
*/
#include <avr/sfr_defs.h>
#include <avr/iom128.h>
#include <avr/io.h>
#define REG_STRING_ENABLE
#define REG_COLUMN_ENABLE
#define STR_QUANTITY
#define DIGIT_PERIOD
8
0x1000
0x02
0x01
18
19. Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.cstatic 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,
},
19
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,
},
20
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,
},
};
21
22. Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.cint 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;
22
23. Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.cwhile (1) {
nDelayOut = DIGIT_PERIOD;
while (--nDelayOut > 0) {
PORTA = unDispString;
PORTB |= REG_STRING_ENABLE;
PORTB &= (~REG_STRING_ENABLE);
unDispString <<= 1;
if (!unDispString) {
unDispString = 1;
}
23
24. Создание в среде Eclipse проекта на базе make-файла
Содержимое файла main.cPORTA = 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;
}
24
25. Создание в среде Eclipse проекта на базе make-файла
Создание всреде
Eclipse
проекта на
базе makeфайла
Создание системы построения
проекта (make-файла)
Шаг 1. Начальная стадия добавления в проект нового файла
Главное меню «File → New → File from Template»
25
26. Создание в среде Eclipse проекта на базе make-файла
Создание в средеEclipse проекта
на базе makeфайла
Создание системы
построения
проекта (makeфайла)
Имя «makefile» стандартное
Данный файл не имеет расширения
Шаг 2. Завершающая
стадия добавления в
проект нового файла –
make-файла
File name: makefile →
Finish»
26
27. Создание в среде Eclipse проекта на базе make-файла
Создание системы построенияпроекта (make-файла)
Шаг 3. Результат создания make-файла
Созданный makefile проекта и его
изначально пустое содержимое
27
28. Создание в среде Eclipse проекта на базе make-файла
Создание системы построения проекта (make-файла)Желательное совпадение значения
TARGET с названием проекта
Шаг 4. Написание make-файла
28
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)
29
30. Создание в среде Eclipse проекта на базе make-файла
Содержимое 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)
30
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 -------31
32. Создание в среде Eclipse проекта на базе make-файла
Содержимое 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
32
33. Создание в среде Eclipse проекта на базе make-файла
end:@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
Содержимое
make-файла
33
34. Создание в среде Eclipse проекта на базе make-файла
Первая попыткапостроения проекта
Шаг 1.
Запуск построения проекта
(запуск цели all make-файла)
Главное меню
«Project → Build All (Ctrl+B)»
34
35. Создание в среде Eclipse проекта на базе make-файла
Успешное построение проектаИскомый elf-файл,
необходимый для
Proteus-проекта
35
36. Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 1.Вход в диалоговую панель
редактирования свойств
микроконтроллера
36
37. Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 2.Выбор программного elf-файла
37
38. Связь программного проекта в Eclipse со схемотехническим в Proteus
Искомый elf-файл внутри рабочего проекта«LED_Display», который принадлежит
рабочему пространству «ATmega»
38
39. Связь программного проекта в Eclipse со схемотехническим в Proteus
Результат выбора программногоelf-файла
39
40. Связь программного проекта в Eclipse со схемотехническим в Proteus
Проверка корректности связи программного проекта вEclipse со схемотехническим в Proteus
Шаг 1. Запуск модели
40
41. Связь программного проекта в Eclipse со схемотехническим в Proteus
Шаг 2. Контроль состоянияотладочных и информационных окон
41
42. Связь программного проекта в Eclipse со схемотехническим в Proteus
Демонстрационное видеорезультирующей работы
прибора в среде Proteus
42
43. Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибокШаг 1. Выявление семантических
ошибок
43
44. Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибокШаг 2. Переход к свойствам проекта
44
45. Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибокШаг 3. Подготовка к указанию
пути к стандартным
библиотекам
45
46. Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибокШаг 4.
Непосредственное
указание пути к
стандартной
библиотеке
46
47. Дополнительные полезные настройки Eclipse-проекта
Устранение семантических ошибокРезультат устранения семантических ошибок
47
48. Дополнительные полезные настройки Eclipse-проекта
Воизбежание
повторного
прохождения
длительного
процесса настройки аналогичных
проектов
новые
проекты
настоятельно
рекомендуется
создавать на базе существующих
путём копирования (Ctrl+C →
Ctrl+V)
48
49. Дополнительные полезные настройки Eclipse-проекта
Шаг 1. Копированиетекущего проекта в
буфер обмена
49
50. Дополнительные полезные настройки Eclipse-проекта
Шаг 2. Вставкаскопированного
проекта из буфера
обмена
50
51. Дополнительные полезные настройки Eclipse-проекта
Шаг 3. Коррекцияимени нового
проекта
51
52. Дополнительные полезные настройки Eclipse-проекта
Дополнительныеполезные
настройки Eclipseпроекта
Шаг 4. Очистка
нового проекта
52
53. Дополнительные полезные настройки Eclipse-проекта
Дополнительныеполезные
настройки Eclipseпроекта
Шаг 5. Коррекция
имени нового
проекта в его
make-файле
53
54. Дополнительные полезные настройки Eclipse-проекта
Дополнительныеполезные
настройки Eclipseпроекта
Шаг 6. Построение
нового проекта
54
55. Дополнительные полезные настройки Eclipse-проекта
Шаг 7. Контрольбезошибочного
построения нового
проекта
55
56. Дополнительные полезные настройки Eclipse-проекта
Дополнительные полезные
настройки
Eclipse-проекта
Шаг 1. Подготовка к настройке
изменения свойства
автоматического сохранения всех
несохранённых файлов перед
построением проекта
56
57. Дополнительные полезные настройки Eclipse-проекта
Дополнительныеполезные
настройки Eclipseпроекта
Шаг 2. Непосредственное
изменение свойства
автоматического
сохранения всех
несохранённых файлов
перед построением проекта
57
58. Дополнительные полезные настройки Eclipse-проекта
Дополнительныеполезные
настройки Eclipseпроекта
Установка связи проекта с
различными библиотеками
Шаг 1.
Начало изменения свойств проекта
Главное меню «Project → Properties»
58
59. Дополнительные полезные настройки Eclipse-проекта
Установка связи проекта с различными библиотекамиШаг 2.
59
60. Дополнительные полезные настройки Eclipse-проекта
Установка связи проекта с различными библиотекамиШаг 3. Указание пути к библиотекам в файловой системе
60
61. Дополнительные полезные настройки Eclipse-проекта
Результат связи проекта свыбранной библиотекой
61