Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания - Eclipse.pdf
Скачиваний:
84
Добавлен:
18.05.2014
Размер:
971.66 Кб
Скачать

Лабораторная работа 2. СОЗДАНИЕ ПРОГРАММ НА ЯЗЫКЕ СИ В СРЕДЕ ECLIPSE

Цель работы: освоение технологии создания программ на языке высокого уровня.

Задание

1.Создать проект.

2.Набрать исходный текст программы из прил. 3.

3.Отладить программу.

Язык Си в настоящее время является наиболее популярным языком программирования для микроконтроллеров. Несмотря на то, что Си считается языком высокого уровня, он позволяет достаточно просто работать на уровне оборудования: выполнять такие низкоуровневые операции, как работа с ячейками памяти, арифметические, логические, сдвиговые операции, почти так же просто, как на языке ассемблера. Использование Си позволяет сократить время разработки встроенного программного обеспечения и повысить его качество.

Порядок выполнения работы

Создайте новый проект аналогично 1.1.1. Импортируйте в проект заго- товочные файлы для проекта на языке Си из директории, указанной преподавателем, аналогично 1.1.2.

Краткое описание некоторых из заготовочных файлов для проекта на языке Си приведено в таблице.

Имя файла

Описание

 

 

Board.h

Файл описания целевой платы, на которой находится

 

микроконтроллер

 

 

AT91SAM7S64.h

Файл с макроопределениями адресов различных периферийных

 

устройств, структурами данных, описывающих эти устройства, и

 

различными константами для микроконтроллера AT91SAM7S64

 

 

lib_AT91SAM7S64.h

Библиотека вспомогательных функций от производителя

 

микроконтроллера

 

 

Cstartup.S

Исходный код на языке ассемблера, подготавливающий процессор

 

для передачи управления машинному коду, полученному путём

 

трансляции исходного текста на языке Си

 

 

Cstartup_SAM7.c

Исходный код функции, инициализирующей периферийное

 

оборудование микроконтроллера

 

 

23

Для того чтобы начать набор программы на языке Си, необходимо добавить в проект файл с расширением «.c». Система автоматизации сборки обнаружит этот файл при построении проекта и выполнит его компиляцию.

Щёлкните правой клавишей мыши, расположив ее курсор над именем проекта в обозревателе проектов. Выберите пункты меню New → File.

В появившемся окне введите в поле «File Name» имя файла, например «Lab1.с». Нажмите кнопку «Finish».

Наберите в редакторе текст программы, представленной в прил. 3. Убедившись, что построение проекта проходит без ошибок, подготовьте профиль отладки, аналогично описанному в 1.4. Выполните отладку в соответствии с 1.5.

Отчет должен содержать:

1.Титульный лист и задание.

2.Алгоритм работы программы.

3.Описание переменных.

4.Описание использованных регистров.

5.Листинг программы.

6.Описание технологии разработки и отладки программ на языке Си.

24

Приложения

1. Текст скелетного файла на языке ассемблера

.include "at91sam7s64.inc"

@---------------------------------------------------------------

 

 

.text

@ Объявляем область исполняемого кода

.section .text.vectors @

Далее - таблица векторов

 

@

прерываний

ResetVector: @ Первый вектор - вектор сброса

b start @ При сбросе контроллера - переход на метку start

@---------------------------------------------------------------

.section .text.program @ Далее идёт основная программа

start:

 

 

b start;

 

@ Цикл

@---------------------------------------------------------------

 

 

.data

 

@ Область данных

var1:

 

@ По метке var1 резервируем место под

.word

0

@ 32-битную целочисленную переменную

array:

 

@ По метке array резервируем место под

.rept

3

@ массив переменных размером в три

.word

0

@ 32-битных числа

.endr

 

 

@---------------------------------------------------------------

 

 

.end

 

@ Директива конца программы

25

2.Пример программы

@Программа демонстрации работоспособности

@микроконтроллера AT91SAM7S64 на отладочной плате SAM7-P64

.include "at91sam7s64.inc"

@---------------------------------------------------------------

.text

@

Объявляем область исполняемого кода

.section .text.vectors

@

Далее - таблица векторов прерываний

ResetVector: @ Первый вектор - вектор сброса

b start @ При сбросе контроллера - переход на метку start

@---------------------------------------------------------------

.section .text.program

@ Подготавливаем периферию

start:

 

 

mov

r0, #0x040000

@ Используем PA18

ldr

r1, =PIOA_PER

@ Загружаем адрес PIO Enable Register

str

r0, [r1]

@ Использовать режим общего дискр. вв/в.

ldr

r1, =PIOA_OER

@ Загружаем адрес регистра

 

 

@ Output Enable Register

str

r0, [r1]

@ Используем PA18 как выход

blink: @ Мигаем

 

ldr

r1, =PIOA_SODR @ Загружаем адрес Set Output Data Register

str

r0, [r1]

@ Включаем выход / светодиод гаснет

bl

wait

@ Пауза

ldr

r1, =PIOA_CODR

@ Загружаем адрес Clear Output Data Reg.

str

r0, [r1]

@ Выключаем выход / светодиод зажигается

bl

wait

@ Пауза

b

blink

@ Повторяем мигание

@---------------------------------------------------------------

 

 

@ Подпрограмма задержки

 

wait:

 

 

ldr

r4, =0

@ Инициализируем r4 нулём

.Lwait:

 

 

add

r4, #1

@ Инкремент

cmp

r4, #0x100000

@ Сравнить с числом

bne

.Lwait

@ Если не равно, считаем дальше

mov

pc, lr

@ Если равно, выходим из подпрограммы

@---------------------------------------------------------------

 

 

.end

 

@ Директива окончания текста программы

 

 

 

 

 

26

3.Пример программы на языке Си

//Программа демонстрации работоспособности микроконтроллера

//AT91SAM7S64 на отладочной плате SAM7-P64.

//Программа определяет нажатую на плате кнопку и зажигает

//соответствующий ей светодиод.

#include "Board.h"

//Массив масок для ножек микроконтроллера,

//к которым подключены светодиоды.

static const int ledMask[2]= {LED1, LED2};

//Указатель на структуру, предназначенную для

//управления контроллером параллельного ввода-вывода (PIO) static AT91PS_PIO pioa = AT91C_BASE_PIOA;

//Указатель на структуру, управляющую контроллером питания

(PMC).

//Через него включается тактирование PIO, необходимое для

//считывания состояния кнопок, находящихся на отладочной плате. static AT91PS_PMC pmc = AT91C_BASE_PMC;

//Подготовка к работе со светодиодами

void setUpLeds (void)

{

//Указываем, что ножками, к которым подключены светодиоды,

//управляет PIO, а не встроенная периферия.

pioa->PIO_PER = LED_MASK;

//Ножки будем использовать как выходы

//(для подачи напряжения).

pioa->PIO_OER = LED_MASK; // Гасим светодиоды pioa->PIO_SODR = LED_MASK;

}

// Подготовка к работе с кнопками void setUpButtons (void)

{

//За кнопки отвечает PIO. По умолчанию соответствующие //ножки сконфигурированы как входы.

pioa->PIO_PER = SW_MASK;

//Включаем тактирование PIO.

//Без этого не удастся прочитать состояния кнопок. pmc->PMC_PCER = 1 << AT91C_ID_PIOA;

}

27

//Зажечь светодиод с указанным номером (нумерация от нуля)

//и погасить все остальные

void indicate (int index)

{

// Зажечь светодиод pioa->PIO_CODR = ledMask[index];

// Погасить все остальные.

pioa->PIO_SODR = (~ledMask[index]) & LED_MASK;

}

//Определить номер нажатой кнопки (нумерация от нуля).

//Функция возвращает номер кнопки или -1, если никакая

//кнопка не нажата.

int pressedButtonIndex (void)

{

// Прочитать состояния ножек

unsigned int pinsStatus = pioa->PIO_PDSR;

//Поскольку нажатая кнопка обозначается нулевым битом

//в соответствующем ножке разряде, то выполняем логическое

//НЕ перед выполнением операции "И" c маской ножки.

if ((~pinsStatus) & SW1) return 0;

if ((~pinsStatus) & SW2) return 1;

return -1;

}

// Начало программы на Си int main(void)

{

//Подготовить светодиоды setUpLeds();

//Подготовить кнопки setUpButtons();

//Индекс нажатой кнопки int buttonIndex = -1;

//Вечный цикл

while (1)

{

//Определить, нажата ли кнопка, и какая. buttonIndex = pressedButtonIndex ();

//Если нажата

28

if (buttonIndex >=0)

{

// Зажечь светодиод у этой кнопки, погасив другой indicate(buttonIndex);

}

}

}

29

4. Справочник по «горячим» сочетаниям клавиш среды разработки

Eclipse

Для повышения эффективности работы в среде Eclipse рекомендуется использовать «горячие» сочетания клавиш (hotkeys). Запомните и применяйте наиболее часто используемые из них. Для быстрой справки по сочетаниям клавиш нажмите Ctrl + Shift + L.

Общие:

 

 

Ctrl + Shift + L –

Вызов быстрой справки по «горячим» сочетаниям клавиш

Ctrl + C –

Копировать выделенный фрагмент текста в буфер обмена

Ctrl + X –

Вырезать выделенный фрагмент текста в буфер обмена

Ctrl + V –

Вставить текст из буфера обмена

Ctrl + D –

Удалить текущую строку

Ctrl + F –

Вызов диалога поиска/замены

Ctrl + Q –

Перейти к последнему месту редактирования файла

Ctrl + Home –

Переход в начало файла

Ctrl + End –

Переход в конец файла

Alt + ← –

Назад (переход к предыдущему виду/позиции курсора в файле)

Alt + → –

Вперёд (переход к следующему виду/позиции курсора в файле)

Ctrl + Z –

Отменить последнее действие

Ctrl + Y –

Повторить отменённое действие

Ctrl + F6 –

Переключение между вкладками редактора

Ctrl + F8 –

Переключение между режимами (редактирования/отладки)

F9

Построить программу

В режиме отладки:

 

F11

Запуск отладки

F5

Шаг с заходом

F6

Шаг с обходом

F7

Выход из подпрограммы

F8

Возобновить выполнение программы

Ctrl + R –

Выполнить до курсора

Ctrl + Shift + B –

Установить / снять точку остановки

Ctrl + F2 –

Завершить отладку

30

Содержание

 

ОБЩИЕ СВЕДЕНИЯ ..............................................................................................

3

Лабораторный стенд................................................................................................

3

Средства разработки программного обеспечения................................................

4

Знакомство со средой разработки Eclipse .............................................................

5

Начало работы в Eclipse ......................................................................................

5

Рабочие области и проекты.................................................................................

6

Панели отображений ...........................................................................................

6

Режимы..................................................................................................................

8

Лабораторная работа 1. СОЗДАНИЕ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА

В СРЕДЕ ECLIPSE ..................................................................................................

9

1.1. Работа с проектами .......................................................................................

9

1.1.1 Создание нового проекта ........................................................................

9

1.1.2. Добавление файлов, необходимых для сборки проекта ...................

10

1.2. Работа с исходными текстами программ..................................................

13

1.3. Построение программы..............................................................................

15

1.4. Подготовка к отладке программы..............................................................

17

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

17

Лабораторная работа 2. СОЗДАНИЕ ПРОГРАММ НА ЯЗЫКЕ СИ В СРЕДЕ

ECLIPSE .................................................................................................................

23

Приложения ...........................................................................................................

25

1. Текст скелетного файла на языке ассемблера.................................................

25

2. Пример программы ...........................................................................................

26

3. Пример программы на языке Си......................................................................

27

4. Справочник по «горячим» сочетаниям клавиш среды разработки Eclipse . 30

31

Редактор Э. К. Долгатов

Подписано в печать Формат 60 84 1/16. Бумага офсетная. Печать офсетная. Гарнитура «Times New Roman». Печ. л. 2.0.

Тираж 35 экз. Заказ

Издательство СПбГЭТУ «ЛЭТИ» 197376, С.-Петербург, ул. Проф. Попова, 5

32