Содержание


Разработка приложений для встраиваемых устройств

Часть 4. Применение Code::Blocks для разработки SDCC-приложений

Comments

Серия контента:

Этот контент является частью # из серии # статей: Разработка приложений для встраиваемых устройств

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Разработка приложений для встраиваемых устройств

Следите за выходом новых статей этой серии.

В первой части этой серии из четырех статей обсуждалось, как настроить популярную среду разработки Eclipse для сборки AVR-приложений. Во второй части мы рассмотрели, как эту задачу можно выполнить с помощью другой, более легкой среды разработки – Code::Blocks. После этого мы обратили внимание на другое семейство приложений, которые собираются с использованием компилятора SDCC, и в третьей части познакомились с созданием и настройкой SDCC-приложений в Eclipse. В этой статье будет показано, как работать с SDCC-приложениями в среде Code::Blocks.

Интегрированную среду разработки Code::Blocks мы уже рассматривали во второй части этой серии статей. Там приводились основные сведения о возможностях Code::Blocks, а также давались основные навыки работы с ней.

Компилятор Small Device C Compiler (SDCC) вкратце описывался в третьей части. Настоятельно рекомендуется ознакомиться с руководством пользователя, которое входит в состав устанавливаемых в системе пакетов, его можно загрузить с сайта SDCC. Список поддерживаемых архитектур легко узнать простой командой:

$ sdcc-sdcc -v 
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
		 2.9.0 #5416 (Jul 20 2009) (UNIX)

Предполагается, что у вас в системе и Code::Blocks, и SDCC установлены и работоспособны. Если это так, то можно переходить к созданию и настройке проекта.

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

Запустите Code::Blocks. Вначале нужно настроить глобальные настройки компилятора; для этого выберите пункт меню "Settings->Compiler and Debugger".

Рисунок 1. Глобальные настройки компилятора
Рисунок 1. Глобальные настройки компилятора
Рисунок 1. Глобальные настройки компилятора

Далее выполните следующие шаги.

  1. В самом верхнем поле «Selected Compiler» выберите из выпадающего списка "SDCC Compiler". Если теперь нажать кнопку «Set as default», то для всех новых проектов именно SDCC будет стандартным компилятором. Это удобно только в том случае, когда Code::Blocks используется лишь для разработки SDCC-приложений.
  2. Перейдите на вкладку "Toolchain executables". Здесь нужно исправить каталог, где установлен SDCC, а также имена утилит из его комплекта, если они неправильно указаны. По умолчанию каталогом установки считается /usr/local/bin. В разных дистрибутивах могут быть разные каталоги установки исполняемых файлов SDCC. Например, в Fedora они устанавливаются в каталог /usr/bin, поэтому в поле «Compiler's installation directory» правильно будет записать «/usr».

    Ниже, на вкладке «Program Files», нужно проверить имена исполняемых файлов SDCC: компилятора, компоновщика и т.д. По умолчанию используется имя sdcc для компилятора и компоновщика. Правильные имена файлов можно узнать, выполнив команду «ls /usr/bin/sdcc*», если файлы установлены в /usr/bin. В некоторых дистрибутивах эти имена из каких-либо соображений могут быть другими. Например, в Fedora к стандартным именам файлов добавляется префикс sdcc, поэтому в полях «C compiler» и «Linker for dynamic libs» должно быть вписано «sdcc-sdcc».

  3. Перейдите на вкладку "Search Directories". Проверьте, какие пути поиска указаны здесь на вкладках «Compiler» и «Linker». В моем случае (Code::Blocks версии 8.02, сборка от 28.02.2009) вообще никаких путей там не оказалось. И опять, указываемые здесь пути специфичны для каждого дистрибутива Linux. В Fedora заголовочные файлы находятся в каталоге /usr/share/sdcc/include (для вкладки «Compiler»), а библиотеки – в каталоге /usr/share/sdcc/lib (для вкладки «Linker»).
  4. На самой правой вкладке «Other settings» есть поле «Compiler logging». В нем можно задать режим журналирования процесса компиляции. Рекомендуется установить здесь значение «Full command line». Это позволит подробно проследить команды, используемые при сборке.

Теперь, поскольку готового мастера для SDCC-проектов нет, создадим пустой проект. В меню выберите команду "File ->New->Project". Выберите "Empty Project" и нажмите кнопку «GO». Появится приветственное окно мастера нового проекта, нажмите кнопку «Next».

Рисунок 2. Создание пустого проекта
Рисунок 2. Создание пустого проекта
Рисунок 2. Создание пустого проекта

Откроется окно, где нужно в поля «Project title» и «Folder to create project in» ввести имя нового проекта и каталог, в котором будет размещаться каталог проекта. Введите необходимую информацию. Мастер создания проекта автоматически заполнит поле с именем файла проекта («Project filename»), которое не обязательно должно совпадать с названием проекта, и в поле «Resulting filename» предложит полное имя файла проекта с полным путем, причем этот путь тоже не обязательно должен совпадать с каталогом проекта. Заполнив все необходимое, нажмите кнопку «Next».

Рисунок 3. Введение имени проекта
Рисунок 3. Введение имени проекта
Рисунок 3. Введение имени проекта

В следующем окне в поле «Compiler» выберите из выпадающего списка «SDCC Compiler». Ниже будут предложены стандартные каталоги для целей сборки Debug и Release. Закончив редактирование, нажмите кнопку «Finish». После этого будет последовательно выдан ряд сообщений о том, что Code::Blocks не знает, как настроить предупреждающие флаги для этого компилятора, как указать флаги отладки и т.д. Нажимайте кнопки «Ok» и игнорируйте эти сообщения.

Настройка проекта

Итак, у нас создан пустой проект. Нужно настроить его так, чтобы он мог работать с SDCC. Для этого выберите пункт меню "Project->Properties", перейдите на вкладку "Build targets". В панели «Select build target options» в поле "Type" по умолчанию тип приложения указан как «Console application». Не вижу, почему этот тип может не подойти для SDCC-приложения, но в ряде руководств рекомендуется изменить его на "Native". Это нужно сделать для всех целей сборки (цели выбираются слева в панели «Build targets»).

Рисунок 4. Свойства проекта
Рисунок 4. Свойства проекта
Рисунок 4. Свойства проекта

Для настройки параметров сборки проекта выберите в меню пункт "Project->Build Options". Для начала здесь можно настроить флаги компилятора, общие для всех целей сборки: тип процессора, модель памяти и т.д. В левой панели окна с параметрами сборки проекта среди целей сборки выберите название проекта (на рисунке 5 это «test»). Теперь на вкладке "Compiler Settings", а затем ниже, на вкладке "Compiler Flags", нужно выбрать флаг для используемого процессора. Если ничего не выбрать, то будет действовать флаг -mmcs51 для процессоров, совместимых с Intel MCS51. Еще сразу для всего проекта имеет смысл выбрать здесь модель памяти и параметры стека.

Рисунок 5. Параметры целей сборки
Рисунок 5. Параметры целей сборки
Рисунок 5. Параметры целей сборки

После этого выберите поочередно все цели сборки и укажите параметры компилятора, характерные только для них. Например, для цели сборки Debug следует выбрать флаг «Produce debugging symbols [--debug]», а для цели Release может быть полезным флаг «Optimize generated code (for size) [--opt-code-size]».

Обратите внимание, что когда вы выбираете конкретные цели сборки, то становится активным поле «Policy» сразу под вкладкой «Compiler Settings». Здесь можно выбрать правило, в соответствии с которым производится сочетание параметров, выбранных для цели сборки, с параметрами всего проекта. Стандартное правило – «Append target options to project options» (параметры цели сборки добавляются к параметрам проекта»). С таким правилом здесь нет необходимости в каждой цели вновь выбирать те флаги, которые были настроены для всего проекта. При необходимости можно выбрать и другие правила.

Нажмите кнопку «Ok», чтобы сохранить настройки.

Локализация Code::Blocks

В настоящее время ведутся работы по локализации интерфейса Code::Blocks для различных языков. Перевод на русский язык ведется здесь, и если загрузить оттуда файл codeblocks.mo и поместить его в каталог, например, /usr/share/codeblocks/locale/ru_RU/ (потребуются привилегии пользователя root), то интерфейс программы будет на русском языке, если в глобальных настройках («Settings->Environment->View») включить параметр «Internationalization (needs restart)» и справа в выпадающем списке выбрать «Russian». Это изменение вступит в силу после перезагрузки.

Пробная программа

Теперь, когда проект настроен, добавим к нему первый файл. Для этого выберите в меню пункт «File->New->File...», в открывшемся окне выберите шаблон «C/C++ source» и нажмите кнопку «Go».

Рисунок 6. Создание нового С-файла
Рисунок 6. Создание нового С-файла
Рисунок 6. Создание нового С-файла

В следующем приветственном окне мастера создания файлов нажмите кнопку «Next», далее выберите язык программирования для файла – «C» и нажмите кнопку «Next». Откроется окно, в котором нужно ввести имя файла, например, main.c, и цели сборки, в которые он будет входить. Если нажать кнопку «All», то файл будет добавлен во все имеющиеся цели сборки.

Рисунок 7. Введение имени файла
Рисунок 7. Введение имени файла
Рисунок 7. Введение имени файла

Обратите внимание, что мастер создания требует указания имени файла с полным путем к нему, для этого нужно нажать на кнопку «...» справа от имени файла и выбрать каталог, где будет находится этот файл. По умолчанию это будет каталог проекта. После выбора каталога имя файла в поле «Filename with full path» будет показано с полным путем. Теперь можно нажать кнопку «Finish». Созданный файл тут же окажется открытым в редакторе. Впишем туда простейшую программу из третьей части этой серии статей:

#include <stdint.h>
#include <stdbool.h>

void main()
{
	while(true)
	{
		int16_t some_size = 1000, i, a;

		while (true)
		{
			for (i = 0; i < some_size; i++)
				a = i + 3; // какое-нибудь действие
		}

Сохраните этот файл нажатием кнопки с дискетой в панели инструментов, командой меню «File->Save» или сочетанием клавиш Ctrl+S. Затем выберите команду меню «Build->Build» или нажмите кнопку с шестеренкой в панели инструментов, или просто нажмите сочетание клавиш «Ctrl-F9». Внизу, в окне «Logs & others», журнал компиляции будет выведен на вкладке «Build log», а на вкладке «Build messages» появятся сообщения об ошибках и предупреждениях, если они есть.

Рисунок 8. Вид на собранный проект
Рисунок 8. Вид на собранный проект
Рисунок 8. Вид на собранный проект

После сборки проекта выходной файл с именем, указанным в поле «Output filename» в настройках («Build->Properties», вкладка «Build targets», см. рисунок 4), помещается в каталог bin/Debug (или другой, в зависимости от того, как вы настроили цели сборки). Он по умолчанию создается в формате Intel Hex и его можно загружать в процессор с помощью программатора. Кроме того, там компилятором создается файл *.mem, представляющий карту использования памяти. В каталоге obj/Debug (в зависимости от цели сборки) находятся файлы *.asm, *.lst, *.rst, представляющие собой различные варианты ассемблерных листингов программы, созданных компилятором.

Аналогичный подход можно попытаться использовать и в случае необходимости работы с другими компиляторами для встраиваемых решений, например GNU ARM GCC. А в этой короткой статье описывается, как можно настроить Code::Blocks для разработки ARM-GCC-приложений, используя собственный Makefile.

Заключение

В этой заключительной части серии статей вы познакомились с тем, как с минимальными усилиями создать и настроить проект для разработки приложений с помощью компилятора SDCC в среде Code::Blocks.


Ресурсы для скачивания


Похожие темы

  • Официальный сайт (EN) среды разработки Code::Blocks. Здесь можно найти разнообразную документацию, а также очень полезный форум.
  • Очень оживленный и насыщенный руководствами и справочниками немецкоязычный форум по многим вопросам, относящимся к встраиваемым устройствам, а также его англоязычный вариант (EN)
  • Русскоязычный форум разработчиков электроники, охватывающий, в том числе, и вопросы разработки приложений для встраиваемых устройств.
  • Сайт проекта SDCC (EN): здесь можно узнать новости проекта, найти многочисленную документацию, форум и ссылки на разнообразные ресурсы, относящиеся к компилятору SDCC.
  • http://sdccokr.dl9sec.de/resources.htm (EN): здесь есть множество ресурсов, относящихся к разработке приложений с использованием SDCC.

Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=464985
ArticleTitle=Разработка приложений для встраиваемых устройств: Часть 4. Применение Code::Blocks для разработки SDCC-приложений
publish-date=01272010