Введение

Связка свободно распространяемой среды разработки Eclipse и компилятора MSPGCC позволяет осуществить полный цикл разработки для микроконтроллеров семейства MSP430 без каких бы то ни было ограничений. Toolchain состоит из трех компонентов:

  • Eclipse в качестве среды разработки;
  • mspgcc в качестве компилятора и компоновщика;
  • GDB как отладчик.

Необходимые компоненты

Установка MSPGCC

Установка проходит в автоматическом режиме. После завершения установки, замените файлы "hil.dll" и "msp430.dll" в каталоге "/mspgcc/bin" на новые версии.

Содержимое пакета:

  • "\mspgcc\bin" – директория содержит исполняемые файлы и библиотеки;
  • "\mspgcc\docs" – документация в формате PDF и текстовые файлы с описанием входящих в состав пакета программ;
  • "\mspgcc\msp430\include" – заголовочные файлы;
  • "\mspgcc\examples" – примеры кода на C и ASM, с них мы и начнем знакомство со средой и компилятором.

Установка MinGW

Установка проходит в автоматическом режиме. Помимо компонентов по умолчанию, необходимо установить пакет MinGW Make. После установки, добавим путь к директории "MinGW/bin" в переменную окружения "Path". Для этого перейдем в Control Panel/System/Advanced/Environment Variables/Path/Edit -> добавим в конец ";c:\MinGW\bin". Теперь нужно перезагрузить компьютер.

Установка Eclipse и JRE

Сначала  необходимо установить виртуальную машину Java, если она не установлена на компьютере.

Установка самой среды разработки Eclipse не требуется, достаточно распаковать архив в нужную директорию.

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

[caption id="attachment_72" align="alignnone" width="598" caption="Выбор рабочей директории"]Выбор рабочей директории[/caption]

Создадим на диске С: директорию C:\Workspace и укажем программе путь к ней. Для того, чтобы избавиться от данного вопроса при последующих запусках программы, можно установить галочку Use this as the default and do not ask again.

Итак, после запуска программы, мы видим окно приветствия. Закроем его (если захотите еще раз увидеть, сделать это можно через пункт меню Help/Welcome).

[caption id="attachment_73" align="alignnone" width="600" caption="Главное окно Eclipse"]Главное окно Eclipse[/caption]

Что ж, теперь приступим к самому интересному - создадим первый проект.

Создание проекта

Существует два способа работы с проектом:

  1. Опции компиляции и сборки задаются средой разработки. Хорошее описание данного способа можно найти по ссылке (на немецком языке). В данном случае Вы полностью зависите от среды разработки Eclipse, работа с проектом возможна только из нее;
  2. Компиляция и сборка осуществляются с помощью написанного вручную Make-файла. В этом варианте Вы получаете абсолютно независимый проект, работать с которым можно из любой среды разработки, либо напрямую с помощью утилиты Make.

В этой статье я рассмотрю второй метод, который принял для себя стандартом в оформлении проектов.

Выберем в меню File/New/C Project.

Далее выбираем Makefile project/Empty Project/-- Other Toolchain --

[caption id="attachment_75" align="alignnone" width="512" caption="Новый проект"]Новый проект[/caption]

Введем имя проекта leds, жмем Next, затем Finish.

В обозревателе проектов (Project Explorer) появился наш новый проект, пока совершенно пустой.

[caption id="attachment_76" align="alignnone" width="257" caption="Обозреватель проектов"]Обозреватель проектов[/caption]

Теперь при помощи проводника Windows создадим директории "leds\bin" и "leds\source".

В качестве примера возьмем проект из пакета MSPGCC, расположенный в "C:\mspgcc\examples\leds\". Скопируем в директорию "\leds\bin" файл makefile, а в директорию "leds\source" файлы main.c, hardware.h.

В Project Explorer нажимаем правой кнопкой мыши на имени нашего проекта и жмем Refresh, или просто нажимаем F5, и видим новые файлы.

[caption id="attachment_93" align="alignnone" width="250" caption="Файлы проекта"]Файлы проекта[/caption]

В настройках проекта (Project/Properties/C/C++ Build), необходимо указать путь к утилите make из состава MinGW, а также, каталог bin как директорию построения проекта.

[caption id="attachment_126" align="alignnone" width="597" caption="Настройка билдера"]Настройка билдера[/caption]

[caption id="attachment_124" align="alignnone" width="597" caption="Binary Parser"]Binary Parser[/caption]

Также, добавим каталог, содержащий заголовочные файлы для MSP430.

[caption id="attachment_127" align="alignnone" width="597" caption="Директории включения"]Директории включения[/caption]

Для утилиты make, осуществляющей сборку программы, необходим специальный файл, называемый Makefile, который содержит в себе варианты построения проекта, опции компилятора и сборщика, описание входящих в его состав модулей и т.д. Классический метод работы с Makefile подразумевает его ручную правку и внесение изменений при модификациях проекта. Я расскажу о другом методе работы с Make-файлом, который я подсмотрел в этой статье.

Makefile

Не буду вдаваться в подробности написания Make-файла, при желании эту информацию можно легко найти. Приведу сразу свой пример, а после дам краткие пояснения.

[text]
# - bin
# - doc
# - source
# |- subdir
# |-- *.c
# |- *.c

# Edit

# Имя проекта
NAME = leds
# Целевой процессор
CPU = msp430x1611
# Компилятор
CC = msp430-gcc
# Флаги компилятора и сборщика
CFLAGS = -mmcu=${CPU} -g -O2 -Wall
LDFLAGS = -lmspgcc
# Опции программатора
BSLOPT = -c2 --invert-reset -e -p -v -r
JTAGOPT = -e
# Директории с исходниками относительно makefile
SOURCE_DIRS = ../source

# Do not Edit

SOURCE = $(wildcard $(addsuffix /*.c, $(SOURCE_DIRS)))
OBJECTS_DIRS = $(notdir $(SOURCE))
OBJECTS = $(OBJECTS_DIRS:.c=.o)

.PHONY: all FORCE clean download download-jtag download-bsl

all: ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${NAME}.d

${NAME}.elf: ${OBJECTS}
${CC} -mmcu=${CPU} -o $@ ${OBJECTS} ${LDFLAGS}
${NAME}.a43: ${NAME}.elf
msp430-objcopy -O ihex $^ $@
${NAME}.lst: ${NAME}.elf
msp430-objdump -dSt $^ >$@
@echo "----- RAM/Flash Usage -----"
msp430-size $^

download: download-bsl

download-jtag: all
msp430-jtag ${JTAGOPT} ${NAME}.elf
download-bsl: all
msp430-bsl ${BSLOPT} ${NAME}.a43
clean:
rm -f ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${OBJECTS} ${NAME}.d

VPATH := $(SOURCE_DIRS)

#dummy target as dependecy if something has to be build everytime
FORCE:
${NAME}.d:
$(CC) -MM ${CFLAGS} ${SOURCE} > ${NAME}.d
include $(wildcard *.d)
[/text]

Представленный Make-файл автоматически строит список исходных файлов, список объектных файлов и зависимости.

Структура проекта, которую я использую, выглядит следующим образом:

  • bin
    • makefile
  • doc
  • source
    • subdir
      • module.c
      • module.h
    • main.c
    • main.h

Для того, чтобы make успешно построил список исходников, необходимо отредактировать переменную SOURCE_DIRS в соответствии со структурой конкретного проекта. Укажите все директории, которые содержат исходные тексты, через пробел, относительно директории /bin, в которой располагается makefile, и в которую будут помещаться выходные файлы проекта.

Конкретный make-файл не включает работу с исходными файлами на ассемблере. При желании это легко можно исправить.

Скопируем представленный выше текст Make-файла и вставим его в файл leds/bin/makefile полностью заменив содержимое.

Теперь мы можем скомпилировать проект и получить на выходе бинарный файл прошивки. Для этого выберем пункт меню Project/Build Project. Или нажмите правой кнопкой мыши на имени проекта в обозревателе.

После того, как процесс компиляции и сборки будет завершен, в директории проекта появятся новые файлы.

[caption id="attachment_95" align="alignnone" width="221" caption="Скомпилированный проект"]Скомпилированный проект[/caption]

Отладка

Про работу с отладчиком GDB в среде Eclipse можно прочитать в статье:


Простой BSL-программатор для MSP430

Вс 15 Ноябрь 2009 by levap

Для загрузки исполняемого кода во внутреннюю память микроконтроллера, можно использовать встроенный загрузчик Bootstrap Loader (BSL). Загрузчику необходимы 4 сигнальные линии: RxD, TxD, RST/NMI, TEST(TCK).

В качестве примера BSL-программатора, привожу схему, основанную на недорогой и распространенной микросхеме преобразователе уровней RS232<->UART - MAX232 и одном транзисторе.

Рассмотрим схему устройства:

[caption ...

read more

Прошивка контроллеров MSP430 с помощью Bootstrap Loader

Пт 13 Ноябрь 2009 by levap

Существует два метода загрузки исполняемого кода во внутреннюю память микроконтроллера: через  отладочный интерфейс JTAG и посредством встроенного загрузчика Bootstrap Loader (BSL). Связь с процессором по интерфейсу JTAG доступна до тех пор, пока не уничтожена аппаратная перемычка (fuse), после чего связь возможна только через интерфейс BSL. Насколько я понял, в новой ...

read more