ЛР1 > Знакомство со средой Code Composer Studio. Первый проект
Тема: Знакомство с интегрированной средой разработки программного обеспечения для ЦСП фирмы Texas Instruments – Code Composer Studio
Для проведения лабораторных работ мы будем использовать отладочный модуль eZdsp TMS320F2812 фирмы Spectrum Digital (рис. 1) и версию программного обеспечения Code Composer Studio c2x ezDSP Kit Tools, которая поставляется совместно с данным отладочным модулем.
Рисунок 1. Внешний вид отладочного модуля eZdsp TMS320F2812 [ 1 ]
Интегрированная среда разработки программного обеспечения Code Composer Studio позволяет выполнить полный цикл разработки программы для ЦСП. Это значит, что данный пакет включает в себя:
- встроенный редактор, позволяющий создавать и редактировать исходные файлы (язык С или ассемблер);
- компилятор, необходимый для создания объектного исполняемого файла;
- компоновщик или линкер, позволяющий объединить в один объектный файл несколько исходных и библиотечных файлов;
- разнообразные средства отладки программного обеспечения (набор специальных средств просмотра состояния внутренних регистров, памяти, средства визуализации данных и др.).
Перед началом работы необходимо установить на рабочем компьютере программное обеспечение Code Composer Studio c2x ezDSP Kit Tools и подключить отладочный модуль eZdsp TMS320F2812. К сожалению, данная версия программного обеспечения не работает в режиме симуляции, такой режим доступен только в полной версии пакета Code Composer Studio.
Запуск программы осуществляется из меню Пуск -> Программы -> Texas Instruments … операционной системы Windows или с помощью иконки на рабочем столе компьютера. После запуска программы, открывается ее основное окно, внешний вид которого представлен на рисунке 2. Оно разделяется на две основных области – рабочую область и
Рисунок 2. Внешний вид основного окна Code Composer Studio
область навигатора проекта. В области навигатора проекта отображается вся информация о текущем проекте – исходные файлы, командный файл компоновщика, подключаемые библиотеки и пр.
Основной программной единицей в среде Code Composer Studio является проект (файл с расширением *.pjt). Проект включает в себя исходные файлы (тексты программ на языке С (*.с) или ассемблер (*.asm), библиотеки (*.lib), командный файл компоновщика (*.cmd)) и файл настроек (установки компилятора и линкера).
Цель нашего занятия – научиться создавать проекты в среде Code Composer Studio. Давайте начнем! После запуска Code Composer Studio перед Вами откроется основное окно, как было показано на рисунке 2. Теперь нам необходимо создать проект.
Шаг 1. Создание проекта
Для создания проекта в меню Project выбираем команду New… . Откроется диалоговое окно задания параметров проекта Project Creation (рисунок 3). В поле Project Name необходимо указать имя проекта (в нашем
Рисунок 3. Окно задания параметров проекта
случае это Test1). В поле Location задается рабочая директория проекта. В поле Project Type выбирается тип проекта – исполняемая программа (Executable (.out)). Это значение устанавливается в поле по умолчанию. В поле Target необходимо указать семейство ЦСП для которого создается проект (в нашем случае – TMS320C28XX). Затем нажмите кнопку Готово.
В результате будет создан новый проект Test1 (обратите внимание на изменения в окне навигатора проекта). Созданный в рабочей директории файл проекта Test1.pjt является обыкновенным текстовым файлом, в котором сохраняются все настройки и установки проекта.
Шаг 2. Создание исходного файла
Теперь нам необходимо создать исходный файл, т.е. написать первую программу для ЦСП. Для вызова встроенного текстового редактора в меню File выбираем команду New -> Source File. Первая программа будет очень простой – она содержит бесконечный цикл, переменную i, изменяющуюся от 1 до 99, и промежуточную переменную k, в которой сохраняется результат возведения в квадрат переменной i. Но она позволит познакомиться нам с основными командами среды Code Composer Studio. В окне текстового редактора наберите следующую программу:
unsigned int k;
void main(void)
{
unsigned int i;
while(1)
{ for (i=0;i<100;i++)
k=i*i;
}
}
Сохраните этот файл в рабочей директории проекта под именем «Test1.c» с помощью команды File -> Save As … (рисунок 4). Файл сохранился на жестком диске, но он не добавился к проекту автоматически. Чтобы добавить файл к проекту, выполните команду Project -> Add Files to Project…, и в открывшемся окне, выберите файл «Test1.c». В окне навигатора проекта, в папке Source появится исходный файл.
Проверим корректность исходного файла. Для этого, с помощью команды Project -> Compile File, выполните компиляцию исходного файла. Данная команда позволяет скомпилировать отдельный файл, который в данный момент является активным. Если в исходной программе не было ошибок, то в окне сообщений появится информация об успешном окончании компиляции (рисунок 5). В этом же окне отображается информация о текущих настройках компилятора. Если в исходной программе были обнаружены ошибки, то информация о количестве ошибок и их местонахождении тоже будет выводиться в окне сообщений. После устранения ошибок, необходимо выполнить повторную компиляцию исходного файла.
Для корректной работы компилятора языка С, к проекту необходимо подключить библиотеку функций языка С, поставляемую в составе среды Code Composer Studio, и оптимизированную для конкретного семейства ЦСП.
Рисунок 4. Окно текстового редактора
Рисунок 5. Результат компиляции исходного файла
Для этого необходимо вызвать окно настроек компилятора и компоновщика (с помощью команды Project -> Build Options…). В открывшемся окне выберите закладку Linker. В строке Library Search Path (-i) – укажите директорию размещения библиотеки, в строке Include Libraries (-l) – укажите имя подключаемой библиотеки. В строке Stack Size (-stack) – укажите 0х400 (величина стека). Внешний вид страницы настроек компоновщика показан на рисунке 6. Нажмите кнопку ОК.
Рисунок 6. Страница настроек компоновщика
Сейчас нам необходимо добавить в проект командный файл компоновщика (Linker Command File, *.cmd). Этот файл определяет соответствие между физической памятью ЦСП и логическими секциями, создаваемыми внутри программы. Ниже приведен пример командного файла компоновщика:
MEMORY
{
PAGE 0: /*Program Space*/
FLASH: org = 0x3F8000, len = 0×20000
PAGE 1: /*Data Space*/
M0SARAM: org = 0×000000, len = 0×400
M1SARAM: org = 0×000400, len = 0×400
}
SECTIONS
{
.text: > FLASH PAGE 0
.ebss: > M0SARAM PAGE 1
.cinit: > FLASH PAGE 0
.stack: > M1SARAM PAGE 1
}
В данном файле, в разделе MEMORY, описывается физическая память ЦСП. В области памяти программ (PAGE 0) пользователю доступен банк FLASH – с начальным адресом 0x3f8000 и длиной 0×20000. В области памяти данных (PAGE 1) пользователю доступны два банка: M0SARAM – который расположен по адресу 0×000000 размером 0х400, и M1SARAM – который расположен по адресу 0×000400 размером 0х400. Следующий раздел – SECTIONS, указывает компоновщику, где в физической памяти ЦСП должны располагаться различные логические программные секции. Например, программная секция .text будет размещена в области памяти программ, в банке памяти, который начинается с 0x3f8000 адреса.
Для нашего урока мы воспользуемся командным файлом, который поставляется вместе со средой Code Composer Studio. С помощью команды Project -> Add Files to Project… добавьте к проекту файл EzDSP_RAM_lnk.cmd, который располагается в папке Solutions (вначале, скопируйте файл в рабочую директорию проекта). Командный файл появится в самом конце списка в окне навигатора проекта.
Теперь все необходимые файлы собраны, и проект можно компилировать. Запустите проект на компиляцию с помощью команды Project -> Build. Если проект скомпилировался без ошибок, можно перейти к следующему этапу – отладке проекта.
Шаг 3. Отладка проекта
Для того, чтобы приступить к отладке программы, вначале ее необходимо загрузить в ЦСП (только это не означает, что мы будем программировать внутреннюю память процессора!). Для этого необходимо вначале подключить процессор к отладочной среде с помощью команды Debug -> Connect. В меню File выберите команду Load Program… .В открывшемся диалоговом окне выберите файл Test1.out, который находится в рабочей директории проекта, в папке Debug.
После загрузки программы в ЦСП, автоматически открывается окно дизассемблера (рисунок 7). Указатель в этом окне (зеленая стрелка) – отмечает ассемблерную команду, расположенную по первому исполняемому адресу.
Рисунок 7. Окно дизассемблера
Для перехода к программной метке «main» выполните команду Debug Þ Go Main. Откроется окно исходного файла Test1.с, указатель в этом файле (желтая стрелка) отмечает команду, адрес которой сейчас находится в счетчике команд (Program Counter, PC) (рисунок 8). Эта команда будет выполняться на следующем шаге.
Чтобы запустить программу, выполните команду Debug -> Run (или нажмите функциональную клавишу F5). Никаких заметных изменений в среде Code Composer Studio не произошло! Об активности процессора говорит пропадание указателя в окне исходного файла и надпись RUNNING в левом нижнем углу (рисунок 9). Для остановки процессора выполните команду Debug -> Halt (или нажмите комбинацию клавиш Shift+F5). Для возврата процессора в исходное состояние выполните команды Debug Þ Reset CPU и Debug -> Restart. Снова вернитесь к программной метке «main».
Для просмотра значений переменных, используемых в программе, воспользуемся встроенным окном визуализации Watch Window (вызывается командой View -> Watch Window). Это окно имеет закладки Watch Locals и Watch1. Локальная переменная i автоматически отображается в окне Watch Locals. Для просмотра глобальной переменной k ее необходимо добавить вручную.
Рисунок 8. Переход к метке “main”
Рисунок 9. Выполнение программы процессором
Для этого, в окне с исходным файлом выделите переменную k. Нажмите правую кнопку мыши. В открывшемся контекстном меню, выберите команду Add to Watch Window. Переменная k добавляется в окно Watch1 (рисунок 10). Таким же способом добавьте в окно просмотра переменную i. В столбце Value отражается текущее значение переменной, которое можно изменить непосредственно в этом же окне.
Рисунок 10. Добавление переменной в окно просмотра
Следующий распространенный способ отладки программы – работа в пошаговом режиме. Для этого выполните команду Debug -> Step Into (или воспользуйтесь функциональной клавишей F11). Выполните несколько шагов. Обратите внимание на изменения положения указателя (желтой стрелки) в окне исходного файла и на изменения значений переменных k и i в окне Watch Window. Слева от окна навигатора проекта располагается дополнительная панель управления (рисунок 11) с командами, используемыми в пошаговом режиме отладки. Попробуйте самостоятельно разобраться с этими командами.
Еще один способ, используемый при отладке программного обеспечения, применение точек останова (Breakpoints). В этом случае, выполнение программы прекращается при достижении команды, отмеченной точкой останова. Для установки точки останова разместите курсор в строке исходного файла с командой k=i*i. Нажатием правой кнопки мышки вызовите контекстное меню и выберите команду Toggle Software Breakpoints. Рядом с указателем (желтая стрелка) появится индикатор точки останова (красная точка). Повторный выбор команды Toggle Software Breakpoints удаляет точку останова в выбранной строке (рисунок 12).
Рисунок 11. Дополнительная панель управления
Рисунок 12. Точка останова
После размещения точки останова выполните повторный запуск программы (команды Debug -> Reset CPU , Debug -> Restart, а затем Debug -> Run (или F5)). Процессор остановится в точке останова. Обратите внимание на изменение переменных. Повторите команду Debug -> Run несколько раз.
Помимо точек останова, в среде Code Composer Studio существует возможность работы с тестовыми точками (Probe Points). Если в точке останова процессор прекращает выполнение программы, то в тестовой точке выполнение программы приостанавливается, процессор обменивается информацией с отладочной средой, а затем выполнение программы продолжается. Сейчас мы изменим условия работы нашей программы. Окно просмотра переменных будет обновляться в момент достижения программой тестовой точки. Для этого вначале удалите точку останова. Затем разместите курсор в строке исходного файла с оператором k=i*i. Нажатием правой кнопки мышки вызовите контекстное меню и выберите команду Toggle Software Probe Point. Рядом с указателем (желтая стрелка) появится индикатор тестовой точки (голубой ромб). Теперь необходимо указать действия, выполняемые при достижении тестовой точки. Для этого откройте окно настроек тестовых точей (команда Debug -> Probe Points…). В окне установленных тестовых точек выделите точку Test1.c line 9 –> No Connection с помощью мышки. Автоматически эта точка пропишется в строке Location: данного окна. В выпадающем меню строки Connect to: выберите Watch Window. Нажмите кнопку Replace, а затем ОК (рисунок 13). Тестовая точка подключена! Запустите программу и обратите внимание на
Рисунок 13. Подключение тестовой точки
обновление информации в окне просмотра переменных. Остановите выполнение программы. Удалите все тестовые точки с помощью команды Remove all Probe Points ( ).
Чтобы проверить эффективность работы компилятора языка С, можно в окне с исходным файлом одновременно просматривать программу на языке С и ее реализацию на языке ассемблер. Для этого выберите команду View -> Mixed Source/ASM. Созданные компилятором ассемблерные команды будут отображаться в окне с исходным файлом серым цветом (рисунок 14). Дополнительно, в окне появился еще один указатель (зеленая стрелка). Этот указатель отражает состояние счетчика команд для программы на языке ассемблер. Проверьте изменение положения этих указателей при работе ЦСП в пошаговом режиме.
Для сохранения настроек среды Code Composer Studio – установленные режимы отображения, открытые вспомогательные окна и пр., выполните
Рисунок 14. Смешанный режим отображения исходного кода
команду File -> Workspace -> Save Workspace As… и сохраните их под именем Test1.wks. В следующий раз, при запуске Code Composer Studio можно будет вызвать настройки рабочей области c помощью команды File -> Workspace -> Load Workspace.
На этом наше первое занятие закончено. Для закрепления материала постарайтесь самостоятельно создать проект и проверить его работу. В качестве задания можно использовать любую программу – например, сумма двух чисел или вычисление квадрата числа и т.д.
Литература:
-
Frank Bormann. TI DSP TMS320F2812( teaching materials).
-
Code Composer Studio. Getting Started Guide (SPRU509C).
-
TMS320C1x/C2x/C2xx/C5x. Assembly Language Tools (SPRU018D).
-
TMS320C2x/C2xx/C5x. Optimizing C Compiler User’s Guide (SPRU024E).