Разработка для AT91SAM на бесплатном ПО Печать
Добавил(а) microsin   

Большинство инструментария на платформе ARM коммерческие, такие как IAR® EWARM [4] или ARM RealView®. Конечно, они наиболее удобны, и интегрируют в себе все инструменты, необходимые для хорошей поддержки разработки встраиваемых систем. Сегодня появляются альтернативные, открытые решения (GNU), которые становятся все более конкурентноспособными. Однако в сравнении с коммерческими предложениями GNU-решения испытывают недостаток простоты для установки и использования конечным потребителем.

Цель этого документа (перевод [1]) - решить эту проблему путем предоставления пошагового руководства для настройки рабочего окружения, основанного на инструментарии GNU для семейства микроконтроллеров Atmel AT91. Это дает следующие возможности:

• Компиляция и сборка проектов с использования тулчейна компилятора GNU (gcc).
• Отладка с помощью эмуляторов Atmel SAM-ICE™ [6] и GDB-сервера SEGGER [8].
• Программирование памяти с помощью утилиты SAM-BA™ [2], инструментария ISP (In-Site Programming, т. е. программирование "по месту", прямо в системе) от компании Atmel.
• Интеграция этих задач в среде разработки Eclipse™ [7].

Дополнительно использование этого инструментария демонстрируется на готовом примере проекта для микроконтроллеров Atmel AT91. Рассматривается импортирование проекта, его компиляция, отладка и прошивка полученного кода firmware в память микроконтроллера.

1. Getting Started with AT91SAM7S Microcontrollers site:atmel.com.
2. SAM Boot Assistant (SAM-BA) User Guide site:atmel.com.

[3. Используемые компоненты]

Нужно скомбинировать друг с другом несколько разных пакетов, чтобы получить полнофункциональную рабочую среду, сравнимую с коммерческими. В этой секции описывается, как установить каждый такой компонент инструментария GNU.

3.1. SAM-ICE. Atmel SAM-ICE это эмулятор JTAG, разработанный для программирования и отладки микроконтроллеров Atmel AT91. Этот эмулятор может следующее:

• Поддерживает все микроконтроллеры Atmel, основанные на ядрах AT91 ARM7™/ARM9™.
• Не требуется отдельный источник питания для эмулятора, он получает питание от USB (требуется питание только для системы, где установлен программируемый микроконтроллер).
• Максимальная скорость JTAG составляет 8 МГц.
• Автоматическое определение скорости.
• Поддержка нескольких устройств (микроконтроллеров).
• Полная совместимость со стандартом plug and play.
• Стандартный 20-выводный коннектор JTAG.
• Поддержка адаптивного тактирования.

AT91SAM ICE

Рис. 3-1. Оригинальный JTAG-отладчик компании Atmel (SAM-ICE Emulator for AT91 Microcontrollers).

Glink V8 ARM Emulator JTAG

Рис. 3-1a. Дешевый китайский клон G-Link [5], который работает ничуть не хуже (в том числе и в среде IAR).

3.2. SAM-BA™. SAM-BA (Boot Assistant) это один из инструментов, предоставленный для системы AT91 In-System Programming (ISP) компании Atmel. Это предоставляет простой способ для программирования семейства микроконтроллеров AT91 и использованием графического интерфейса или интерфейса командной строки.

Утилита SAM-BA также позволяет создавать мощные скрипты, которые можно потом запускать из командной строки, автоматизируя тем самым многие задачи прошивки микроконтроллеров. Эти скрипты могут быть написаны программистом или записаны в графическом интерфейсе.

SAM BA Main Window fig3 2

Рис. 3-2. Главное окно утилиты SAM-BA.

Примечание: есть также очень простая утилита программирования Atmel, которая была к сожалению заброшена: SAM-PROG. Она очень удобна для повседневного использования, однако страдает глюками, иногда работать отказывается.

SAM PROG Atmel

3.3. Eclipse™. Это открытая (open-source) интегрированная среда разработки (Integrated Development Environment, IDE) которая изначально была предназначена для программирования на языке Java® (сама среда написана также на Java). Однако благодаря модульному устройству этой среды она была приспособлена для программирования и отладки программ на C/C++ для многих платформ. В Eclipse также встроена поддержка систем управления версиями (таких как CVS и SVN).

Из-за того, что сама Eclipse основана на архитектуре Java, её можно использовать на любой операционной системе, которая поддерживает Java Runtime Environment (JRE). Так что теперь можно работать в Eclipse не только под Microsoft Windows, но и на Linux.

Eclipse Main Window fig3 3

Рис. 3-3. Скриншот основного окна Eclipse.

Подробную информацию о системе Eclipse можно найти на сайте её проекта [10].

3.4. YAGARTO. Этот инструментарий (название является аббревиатурой от "Yet Another GNU ARM Toolchain") реализован на основе GNU ARM toolchain. В него входят компилятор C/C++ (gcc/g++), ассемблер (as), линкер (ld) и отладчик (gdb).

В сравнении с другими тулчейнами GNU для ARMs, у YAGARTO достоинство в том, что он скомпилирован специально для использования на платформе Windows. Поэтому в сравнении с другими реализациями, использующие портирование нескольких слоев API Unix® (наподобие Cygwin или MinGW), YAGARTO более удобна для использования, потому что двоичный код её утилит специально предназначен для Windows.

Кроме того, все инструменты, предоставляемые YAGARTO, полностью совместимы с системой Eclipse. Это еще одна причина, чтобы выбрать именно YAGARTO в сравнении с другими инструментами GNU.

Более подробно про YAGARTO см. [11]. Про утилиты GNU см. [12].

3.5. Make. Большинство проектов для инструментария GNU (включая примеры программ от Atmel) используют утилиту make для обслуживания процесса сборки. Утилита дает команды компилятору и линкеру, какие файлы нужно компилировать или линковать, и как это должно происходить в соответствии с правилами, записанными программистом в скрипте makefile. Достоинство утилиты make в том, что с ней можно использовать любой тулчейн, что делает обслуживание сборки проектов легко портируемым между разными средствами разработки.

Поскольку тулчейн YAGARTO не предоставляет make, то для этого должен быть загружен и установлен отдельный пакет. Проект GnuWin32 [12] предоставляет стандартные порты инструментов GNU для Windows, что включает make.

Руководство GNU дает больше информации по утилите make и файлам makefile (руководство можно найти по ссылке [13]). Для информации по другим инструментам, находящимся в пакете GnuWin32, см. [14].

3.6. GDB Server. Сервер GDB был разработан компанией SEGGER, чтобы отладчик GNU GDB мог через сеть подключаться к микроконтроллеру ARM через устройство адаптера JTAG, совместимое с JLink [5]. Сервер GDB создает сервер TCP/IP в локальной сети, поэтому возможна отладка не только на машине, где работает сервер GDB, но и на другой машине, которая подключена к этой же локальной сети.

GDB Server Main Window fig3 4

Рис. 3-4. Главное окно сервера GDB.

GDB Server это коммерческий продукт; однако компания Atmel получила лицензию для своего эмулятора SAM-ICE. Таким образом, сервер GDB можно использовать без ограничений вместе с адаптером SAM-ICE и микроконтроллером AT91.

Больше информации про GDB Server можно найти на сайте segger.com [8].

[4. Установка]

4.1.1. Получение SAM-BA. Поскольку SAM-BA это часть инструментария Atmel ISP, то SAM-BA должен быть получен после загрузки и установки всего пакета. Последняя версия ISP доступна на сайте Atmel [2].

4.1.2. Установка SAM-BA. Пакет Atmel ISP предоставляет программу инсталлятора с именем файла "Install AT91-ISP vX.Y.exe" (где X.Y номер версии). Выполните на нем двойной клик мышью для запуска мастера процесса установки.

AT91 ISP Installation fig4 1

Рис. 4-1. Экран мастера установки AT91 ISP.

Процесс установки очень прост и прямолинеен. Обратите внимание, что если у Вас уже установлена какая-то версия ISP, то она должна быть деинсталлирована (это будет выполнено автоматически программой установщика).

После того, как мастер установки завершит работу, утилита SAM-BA будет доступна в главном меню Windows: Start Menu (Пуск) -> Programs (все программы) -> Atmel Corporation -> AT91 ISP vX.Y -> SAM-BA vX’.Y’.exe.

4.2.1. Получение YAGARTO. На домашней страничке YAGARTO [11] предоставляются двоичные пакеты для загрузки: открытый On-Chip Debugger (OCD), GNU ARM toolchain и система разработки (Integrated Development Environment). Выберите для загрузки и установки пакет "YAGARTO GNU ARM toolchain".

4.2.2. Установка YAGARTO. Инсталлятор YAGARTO это обычный исполняемый файл Windows (*.exe). Его запуск отобразит следующее окно диалога:

YAGARTO Installation fig4 2

Рис. 4-2. Главное окно инсталлятора YAGARTO.

Первые шаги это стандартное сообщение приглашения ("Welcome") и соглашение о правах собственности ("User agreement"). Начиная с некоторого шага инсталлятор запросит, какие компоненты нужно устанавливать. По умолчанию выбрано все; не снимайте галочки выбора с компонентов, потому что они все потребуются.

YAGARTO Installation choose Components fig4 3

Рис. 4-3. Окно выбора компонентов.

Остальные шаги по установке тривиальны: кликайте "Next >" до последнего сообщения "Installation complete".

Теперь инструменты YAGARTO должны быть доступны в командной строке. Если Вы хотите проверить, как это работает, то сделайте следующее:

• Кликните на кнопке главного меню "Пуск" (start menu).
• Выберите пункт "Run...".
• Введите "cmd" и кликните Ok.
• Должно появиться окно интерпретатора команд, введите команду "arm-elf-gcc".
• Если установка прошла успешно, то будет выведено сообщение:

arm-elf-gcc: no input files

Shell arm elf gcc fig4 4

Рис. 4-4. Окно команд, в котором виден вывод результата запуска arm-elf-gcc.

Так как Eclipse была разработана главным образом для работы на Java, для поддержки встраиваемых систем на C/C++ требуется установка некоторых расширений. Однако установка каждого компонента по отдельности может быстро стать утомительной.

На сайте YAGARTO предоставляется полнофункциональная среда Eclipse с поддержкой C/C++. Это упрощает получение рабочей системы, что подробнее описано далее.

4.3.1. Получение Eclipse. Версию Eclipse от YAGARTO (называется YAGARTO IDE) можно найти на домашней страничке сайта YAGARTO [11]. Файл для загрузки называется "Integrated Development Environment".

Eclipse для работы требует Java Runtime Environment (JRE). На большинстве компьютеров уже установлена JRE, потому что есть множество софта, написанного на Java. Если это не так, то JRE можно скачать с сайта Oracle [16].

4.3.2. Установка Eclipse. Инсталлятор, который предоставляет YAGARTO также является исполняемым файлом *.exe, который запускается двойным кликом:

YAGARTO IDE Installer fig4 5

Рис. 4-5. Главное окно инсталлятора YAGARTO IDE.

Во время установки не требуется выбирать никаких опций, просто кликайте на кнопку "Next >" до полного завершения установки.

4.4.1. Получение Make. На сайте проекта GnuWin32 имеются пакеты для загрузки. Перейдите в раздел "Packages" и найдите Make. Кликните на ссылку "Setup" справа для загрузки пакета установки.

4.4.2. Установка Make. Загруженный с сайта GnuWin32 файл также является инсталлятором *.exe. После его запуска отобразиться следующее окно:

GnuWin32 Make Install fig4 6

Рис. 4-6. Окно инсталлятора GnuWin32 Make.

Инсталлятор запросит целевую директорию, куда будут установлены компоненты, и некоторые другие мелкие опции. Директория инсталляции может находиться в любом месте на диске, однако путь до неё нужно запомнить, потому что он будет использоваться на последующих шагах конфигурирования (поэтому удобнее всего выбрать короткий, запоминающийся путь до каталога установки). Можно выбрать вариант установки либо "Full", либо "Compact", поскольку нужные бинарные файлы утилит будут установлены и в том, и в другом случае.

Теперь инструменты GnuWin32 (в том числе и утилита make) должны быть доступны на уровне системы (т. е. их можно будет запускать из командной строки). Для этого пути запуска утилит должны присутствовать в переменной окружения %PATH%. Если это не так, то нельзя будет просто запускать make из любого каталога проекта без полного указания пути (поэтому путь до каталога make должен быть указано в переменной окружения %PATH%, иначе пользоваться make будет очень неудобно). Само собой, для удобства нужно гарантировать, что директория, где находится make.exe, должна быть в списке каталогов переменной окружения %PATH%.

Переменная %PATH% может быть изменена следующим образом:

• Кликните на кнопке "Пуск" (start menu).
• В подменю "Настройки" (Settings) выберите "Панель управления"(Control Panel).
• Выполните двойной клик на иконке "Система" (System).
• Выберите закладку "Дополнительно" (Advanced).
• Кликните на кнопке "Переменные окружения" (Environment Variables), которая находится внизу.
• Найдите переменную PATH во второй секции "Системные переменные" (System variables).
• Выберите её и кликните на кнопку "Изменить" (Edit).
• Добавьте к строке переменной текст ;DIRECTORY\bin, где DIRECTORY это папка, куда был установлен пакет GnuWin32 (в подкаталоге bin этой папки находится утилита make).
• Кликните "Ok" три раза, чтобы подтвердить изменения.

Для проверки, что изменения были корректны, выполните следующее:

• Кликните на кнопке "Пуск" (start menu).
• Выберите "Выполнить..." (Run...).
• Введите cmd и кликните на кнопку Ok.
• В появившемся черном окне интерпретатора команд введите команду:

make -v

Эта команда укажет утилите make вывести свой номер версии, который должен соответствовать версии пакета утилит проекта GnuWin32.

Shell make test fig4 7

Рис. 4-7. Рабочее окно интерпретатора команд, где виден вывод команды make.

4.5.1. Получение GDB Server. Сервер GDB можно загрузить с сайта компании SEGGER. Он входит как часть в программный пакет для отладчика J-Link, который также содержит и некоторые другие программные утилиты. Этот пакет можено загрузить с сайта segger.com [9].

4.5.2. Установка GDB Server. Пакет программного обеспечения J-Link распространяется как ZIP-архив, в котором находится программа для установки. После распаковки архива и запуска установщика появится следующее окно:

J Link Software Installer fig4 8

Рис. 4-8. Главное окно J-Link Software Installer.

Просто кликайте на кнопку "Next >" до завершения процесса установки.

[5. Использование инструментария]

Эта секция демонстрирует выполнение базовых задач с использованием только что установленного тулчейна. Здесь используется программа примера "Getting Started with the AT91SAM7S Microcontroller", который можно загрузить вместе с соответствующим апноутом с сайта Atmel в составе AT91SAM software package [15].

Пример "Getting Started" должен быть распакован в любой каталог на диске. Это проект, на который будут ссылки в последующих секциях этого документа. Однако имейте в виду, что утилита make в настоящее время не поддерживает пробелы в именах файлов и папок, так что этого следует избегать.

5.1. Импорт существующего проекта. Первый шаг состоит в запуске среды разработки Eclipse IDE. Ярлык для её запуска можно найти в главном меню: Пуск (Start Menu) -> Программы (Programs) -> YAGARTO IDE -> Eclipse Platform X.Y.

При первом запуске Eclipse задаст Вам вопрос о местонахождении рабочей директории на диске. Это папка, где будут по умолчанию сохраняться новые проекты. Для нашего описания здесь можно выбрать любой каталог на диске.

Eclipse Workspace Launcher fig5 1

Рис. 5-1. Окно выбора рабочего пространства Eclipse (Workspace).

После того, как рабочее пространство выбрано, откроется главное окно Eclipse. Сначала оно будет пустое, потому что пока что не создано ни одного проекта.

Для импорта существующего проекта GNU создайте новый проект путем выбора в меню File -> New -> Project..., появится окно мастера проекта (project wizard). Он предложит список стандартных шаблонов, которые могут использоваться для создания нового проекта. Поскольку пример Getting Started написан на C, и в нем имеется свой makefile, должен быть выбран шаблон "Standard Make C Project".

Eclipse Project Wizard fig5 2

Рис. 5-2. Окно Project Wizard.

Следующий шаг - дать проекту имя и выбрать для него корневой каталог. Имя может быть любым, например "Getting Started". Корневая папка проекта однако должна быть задана вручную, поскольку цель состоит в импорте существующего проекта в рабочее окружение, а не в создании нового. Таким образом, должна быть снята галочка с опции "use default location" (использовать каталог по умолчанию), и в поле "Location" (место расположения) должен быть установлен путь до каталога, где находится проект примера. После того, как оба значения корректно установлены, кликните на кнопку "Next >".

Eclipse Project Wizard Name Directory fig5 3

Рис. 5-3. Окно, где задается имя проекта и его место расположения.

Заключающий шаг состоит в настройке деталей проекта. Последнее окно покажет некоторые закладки, где на каждой из них содержаться настройки, описываемые далее.

Первая закладка указывает на проекты C/C++. Это может быть полезно, если новый проект нуждается в использовании исполняемого кода или библиотеки, которые собраны в другом проекте. Сейчас этот список должен быть пустым, потому что еще не был создан ни один проект.

Eclipse Project Wizard Referenced C Projects fig5 4

Рис. 5-4. Закладка "Referenced C/C++ Projects".

Следующая закладка содержит параметры для утилиты make, которые будут использованы для компиляции кода. В этом окне задается команда для сборки, его следует оставить без изменения кроме случаев, когда makefile, используемый в проекте, требует некоторых специальных параметров. Здесь можно разрешить полезную функцию "Build on resource save", это задает автоматически перекомпилировать проект, если был изменен файл, освобождая разработчика от ожидания завершения процесса сборки после завершения кодирования.

Eclipse Project Wizard Make Builder Settings fig5 5

Рис. 5-5. Закладка опций сборки Make (Builder Settings).

Затем можно задать одну или несколько переменных окружения, которые могут использоваться разными инструментами, вызываемыми при компиляции. Обычно это не нужно, поскольку требуемые переменные часто определяются в самом makefile.

Eclipse Project Wizard Environment Variables fig5 6

Рис. 5-6. Закладка переменных окружения (Environment Variables).

Закладки "Error Parsers" и "Binary Parsers" задают, как будут проанализирован вывод утилиты make и создание готовых двоичных файлов для отображения ошибок и другой информации компиляции. Поскольку это по умолчанию корректно задано, здесь ничего менять не надо.

Eclipse Project Wizard Error Parsers fig5 7

Рис. 5-7. Закладка "Error Parsers".

Eclipse Project Wizard Binary Parsers fig5 8

Рис. 5-8. Закладка "Binary Parsers".

Следующая закладка "Discovery Options". По умолчанию включена опция автоматического определения путей и символов, что разрешает системе Eclipse собрать список функций, переменных проекта, и т. д. Это полезно для быстрой навигации по коду, и лучше эту опцию оставить разрешенной. Единственная модификация здесь - изменить значение поля "Compiler invocation command" с gcc на arm-elf-gcc, поскольку проект использует компилятор GNU ARM, а не стандартный.

Eclipse Project Wizard Discovery Options fig5 9

Рис. 5-9. Закладка "Discovery Options".

Последняя закладка позволяет пользователю выбрать между тремя режимами индексирования. Индексирование делает поиск функций более быстрым и точным, так что эта опция должна быть разрешена. Для маленьких проектов полезно выбрать полную индексацию, что не создаст проблем. Однако для больших проектов это замедлит работу, так что в таком случае вместо полной следует выбрать быструю индексацию (fast indexer).

Eclipse Project Wizard Indexer Settings fig5 10

Рис. 5-10. Закладка выбора индексации.

После того, как установлена конфигурация проекта, кликните кнопку "Finish", и будет создан проект. Среда Eclipse может выдать запрос, если нужно открыть перспективу C/C++, например для изменения визуального оформления кодирования C/C++. Поскольку в большинстве времени требуется выбранное поведение среды, может быть установлена галочка "Remember my decision" (запомнить мое решение) перед тем, как кликнуть кнопку "Yes".

Eclipse Asking Open C Perspective fig5 11

Рис. 5-11. Eclipse запрашивает открыть перспективу C/C++.

Примечание: "перспективой" называют конфигурацию окон отображения в Eclipse. Например, при редактировании кода и при отладки рабочие окна и содержимое меню могут отличаться. Это и будет разными перспективами. При написании кода работает перспектива Edit, а при отладке перспектива Debug. Так уж устроена Eclipse, ничего не поделаешь. В других IDE перспективы тоже есть, но они замаскированы, и работают прозрачно для пользователя (хотя в некоторых IDE такое "прозрачное" переключение перспектив сопровождается глюками, как например в Atmel Studio и в VisualDSP++).

Новый проект должен должен появиться в левой панели, где будут перечислены файлы и подкаталоги. Дополнительно Eclipse будет автоматически пытаться собрать проект при его открытии, с использованием make.

Eclipse Main Window After New Project Creation fig5 12

Рис. 5-12. Главное окно Eclipse после создания нового проекта.

5.2. Сборка (Building). Сборка проекта осуществляется либо автоматически (если во время конфигурирования проекта была установлена соответствующая опция), либо выбором пункта "Build Project" меню Project. Вывод сообщений команды make будет показано в нижней части окна, на закладке "Console", как это показано на рис. 5-13.

Eclipse Console Tab Showing Build Output fig5 13

Рис. 5-13. Закладка Console показывает вывод процесса сборки.

Дополнительно Eclipse также будет анализировать вывод команды, чтобы показать ошибки компиляции на закладке "Problems". Это удобно, потому что на детектированных ошибках можно делать клик, и это действие откроет соответствующий файл исходного кода в том месте, где эта ошибка произошла (как демонстрируется на рис. 5-14).

Eclipse Error Parsing and Navigation fig5 14

Рис. 5-14. Анализ ошибок (Error Parsing) и навигация по коду в Eclipse.

Имейте в виду, что для наиболее успешной отладки проект должен быть скомпилирован без какой-либо оптимизации. Обычно для этого в makefile может быть установлена соответствующая переменная, чтобы разрешать или запрещать оптимизацию. В примере проекта Getting Started эту задачу выполняет переменная $(OPTIM). Чтобы разрешить поддержку отладки, закомментируйте символом '#' строку, где определена переменная $(OPTIM):

# Закомментируйте строку ниже, чтобы была возможна
# полноценная отладка по исходному коду:
#OPTIM = -Os

5.3. Отладка кода

5.3.1. Запуск GDB Server. Инструмент SEGGER GDB Server позволяет отладчику GNU debugger подключиться через сеть (на другой рабочей станции, или на локальной) к отлаживаемой цели с помощью JTAG.

Когда GDB Server запущен, он подключается к отладочной плате и ждет сетевого подключения со стороны отладчика. Окно GDB Server отображает полезную информацию (см. рис. 5-15). Здесь показано состояние соединения с отладчиком, SAM-ICE и отлаживаемым процессором. В окно лога выводится, что локальный сервер создал прослушивающий сокет TCP/IP на порт 2331, чтобы позволить подключиться к нему отладчику.

Также можно установить скорость, с которой работает SAM-ICE, с использованием комбо-бокса "Initial JTAG speed". Для наилучшей производительности с микроконтроллерами AT91SAM7 должна использоваться установка "adaptive", и это обязательный выбор для использования с устройствами AT91SAM9.

GDB Server Main Window fig5 15

Рис. 5-15. Главное окно GDB Server.

5.3.2. Создание конфигурации SRAM. Чтобы отлаживать проект, сначала в Eclipse должна быть создана подходящая конфигурация. В меню Run выберите пункт "Debug...", чтобы отобразить окно управления конфигурацией отладки (debug configuration management).

Eclipse Debug Configuration Management fig5 16

Рис. 5-16. Диалог Debug Configuration Management.

Поскольку проект предназначен для встраиваемой цели отладки (embedded target), конфигурация должна быть создана под одной из двух нижних секций ("Embedded debug (Cygwin)" и "Embedded debug (Native)"). Тулчейн YAGARTO скомпилирован специально с расчетом на окружение рабочей станции Win32® (native Win32® environment), поэтому подходящей будет самая последняя секция. Правый клик на её имени и выбор опции "New" создаст базовую конфигурацию с именем после проекта, как показано на рис. 5-17.

Eclipse Basic Embedded Debug Config fig5 17

Рис. 5-17. Basic Embedded Debug Configuration.

Здесь есть 5 закладок, хранящих информацию конфигурации отладки. На первой в поле "C/C++ Application" должен быть указан двоичный файл для отладки. Если проект был собран без ошибок, то кнопка "Search Project..." должна показать список возможных файлов для выбора. Пример Getting Started для AT91SAM7S собирает 2 файла, один для выполнения в SRAM, и другой для выполнения во FLASH. Для этой конфигурации должен быть выбран первый, для SRAM.

Eclipse Binary File Selection fig5 18

Рис. 5-18. Выбор двоичного файла.

На закладке "Debugger" должно быть введено несколько подробностей, касающихся отладчика YAGARTO. Все установки корректны, кроме команды для вызова отладчика: здесь должно быть не значение gdb, а значение arm-elf-gdb, что должно быть исправлено в первом текстовом поле.

Eclipse Debugger Configuration Tab fig5 19

Рис. 5-19. Закладка конфигурации отладчика.

Последняя закладка проверяет закладку "Commands" (здесь ничего делать не нужно, потому что закладки "Source" и "Common" автоматически устанавливаются в корректные значения, и меняются редко). Здесь заданы несколько команд инициализации и времени выполнения, чтобы отладчик работал корректно.

Поскольку отладчик подключится к цели отладки через сеть, то это должно быть задано строкой:

target remote localhost:2331

Эта команда говорит отладчику arm-elf-gdb подключаться по сети к серверу GDB, работающему на TCP/IP порту 2331 локальной машины (если сервер GDB находится на другом компьютере локальной сети, то вместо localhost нужно указать его сетевой адрес). Эта установка определяется запуском GDB Server (см. раздел 5.3.1). Когда выполняется эта команда, состояние отладчика в окне GDB должно поменяться. Эта команда должна быть введена в бокс команд Initialize.

Как только отладчик подключился, лучше всего сбросить отлаживаемый процессор. Это даст гарантию, что изменения предыдущих сессий отладки не повлияют на новую сессию. Для этого добавляется команда:

monitor reset 1

В завершение, поскольку конфигурация отладки будет работать в SRAM, программа должна быть выгружена в память отлаживаемого процессора. Это осуществляется командой загрузки:

load

Обе команды сброса и загрузки должны быть введены в бокс команд Run.

Eclipse Commands Configuration Tab fig5 20

Рис. 5-20. Закладка команд конфигурации.

В этот момент конфигурация корректна, и должна быть сохранена с помощью кнопки Apply.

5.3.3. Создание конфигурации FLASH. Отладка из памяти FLASH почти такая же, как и из SRAM, за исключением того, что программа должна быть "прошита" перед выполнением, и не перезагружается, когда стартует сессия отладки.

Чтобы создать конфигурацию отладки FLASH, делайте все то же самое, что было описано в разделе 5.3.2, но с двумя отличиями:

• Двоичный файл, выбираемый на закладке "Main", должен быть линкован с расчетом работы во FLASH.
• Команда load (на закладке "Commands") должна быть опущена.

5.3.4. Создание конфигурации SDRAM. Некоторые микроконтроллеры семейства AT91 могут подключаться к внешнему чипу памяти SDRAM. Эта дополнительная память полезна для отладки программ, поскольку по размеру она обычно намного больше, чем внутренняя память SRAM микроконтроллера. Однако по сравнению с памятью SRAM нельзя напрямую загрузить код в SDRAM, потому что она сначала должна быть инициализирована. Чтобы выполнить такую инициализацию, вместе с примерами Getting Started предоставлен файл команд GDB (“init_sdram.gdb”), предназначенный для микроконтроллеров, на кристалле которых есть контроллер SDRAM. Скрипт разрешает работу главного генератора, PLL и SDRAM.

Исходные команды выполняют указанный файл команд GDB, так что конфигурация отладки SDRAM идентична конфигурации SRAM, кроме двух отличий:

• Выбираемый двоичный файл на закладке "Main" должен быть линкован для работы в SDRAM.
• На закладке "Commands" исходный файл команд init_sdram.gdb должен быть добавлен сразу перед командой load (вместе с командами Run).

5.3.5. Отладка

5.3.5.1. Установка точек останова. Установка и снятие точек останова (breakpoints) делается так же, как и в других IDE, например двойным кликом на нужной строке, чтобы там была установлена breakpoint. Другой способ - выбрать пункт "Toggle Line Breakpoint" в меню Run в режиме работы перспективы Debug.

5.3.5.2. Запуск сессии отладки. Чтобы запустить сессию отладки, выберите пункт "Debug..." в меню Run. Затем выберите конфигурацию отладки, которая будет использоваться, и кликните на кнопку Debug. Должна открыться перспектива Debug, в которой программа будет остановлена. Перед запуском отладки убедитесь, что сервер GDB Server действительно работает.

Чтобы реально запустить отлаживаемую программу, кликните на пункт "Resume" в меню Run, или нажмите клавишу F8. Если в коде была установлена breakpoint, то программа должна остановиться в соответствующем месте кода, как демонстрируется на следующем скриншоте:

Eclipse Debug Perspective Program Execution fig5 21

Рис. 5-21. Перспектива Debug, где показано выполнение программы, остановленное на точке останова.

После завершения отладки сессия может быть остановлена выбором "Terminate" в меню Run. Имейте в виду, что в любой момент времени может быть активной только одна сессия отладки. Это означает, что текущая сессия отладки должна быть завершена перед запуском новой.

5.3.5.3. Закрытие сессии отладки. Чтобы закрыть сессию отладки, выберите пункт "Thread" на закладке "Debug". Затем закройте сессию кликом либо на красном квадрате выше закладки, либо выбором пункта "Terminate" в меню Run.

5.3.5.4. Команды отладки. В системе разработки Eclipse имеется полезный функционал отладки:

• Step into (один шаг с заходом в код функции)
• Step over (один шаг без захода в код функции)
• Step return (шаг с выходом из функции)
• Run to line (запуск выполнения до нужной строки)

Он доступен из меню Run или через кнопку, которая находится на закладке "Debug".

5.3.5.5. Просмотр памяти. Закладка "Memory" внизу позволяет пользователю просмотреть содержимое памяти начиная с указанного адреса. Чтобы добавить просматриваемый регион памяти, сделайте правый клик на область "Monitors" и выберите "Add Memory Monitor". Eclipse запросит базовый адрес региона памяти, и затем покажет его содержимое.

Eclipse Showing Memory Contents fig5 22

Рис. 5-22. Eclipse показывает содержимое памяти отлаживаемой системы по адресу 0x200000.

5.4. Программирование памяти. Eclipse позволяет пользователю конфигурировать и запускать внешние инструменты. В комбинации с утилитой Atmel SAM-BA это упрощает программирование памяти целевого микроконтроллера - теперь это можно делать напрямую в Eclipse.

Для выполнения прошивки используется требуется соответствующий скрипт. Пример Getting Started предоставляется вместе со скриптом, который помещает двоичный файл в память FLASH и запускает его, и этот скрипт можно запустить из командного файла (*.bat или *.cmd). Подробнее про написание скриптов см. руководство пользователя SAM-BA [2].

Для запуска скрипта создайте конфигурацию нового внешнего инструмента выбором External Tools -> External Tools... в меню Run. Это действие откроет новый диалог для управления существующими конфигурациями, и создания новых. Создайте новую конфигурацию правым кликом на левой области и выберите "New". Правая область должна теперь показать несколько закладок с доступными параметрами:

Eclipse External Tool Configuration fig5 23

Рис. 5-23. Диалог конфигурации запуска внешнего инструментального ПО (External Tool Configuration).

Для базового функционала нужно установить только значения двух полей, оба находятся на закладке "Main". Первое значение устанавливается в поле "Location" просто выберите файл prog_flash.bat в диалоге выбора файла, который запускается кнопкой "Browse Workspace...". Второе значение задает рабочую директорию, которая должна быть установлена на папку, где находится командный файл prog_flash.bat. Обычно это папка, соответствующая базовой директории проекта.

После того, как настройки введены, кликните на "Apply", чтобы сохранить их и на "Run", чтобы запустить скрипт.

Примечание: все упомянутое в статье программное обеспечение можно скачать по ссылке [17].

[Ссылки]

1. GNU-Based Software Development on AT91SAM Microcontrollers site:atmel.com.
2. Atmel SAM-BA In-system Programmer site:atmel.com.
3Замена IAR EWB на Eclipse IDE.
4Установка IAR Embedded Workbench 550.1 for ARM.
5. Клоны Segger J-Link.
6. Atmel SAM-ICE - a JTAG emulator for Atmel ARM-based MCUs site:atmel.com.
7. GNU MCU Eclipse site:gnu-mcu-eclipse.github.io.
8. J-Link GDB Server site:segger.com.
9.  J-Link Software and Documentation Pack site:segger.com.
10. Eclipse site:eclipse.org.
11. YAGARTO - Yet another GNU ARM toolchain site:yagarto.org.
12. GnuWin32 site:sourceforge.net.
13. GNU make site:gnu.org.
14. GnuWin Packages site:gnuwin32.sourceforge.net.
15. AT91SAM software package site:atmel.com.
16. jre download: site:oracle.com.
17170730gnu-based-software-development-on-at91sam.zip - программное обеспечение, документация, примеры кода.