ЛР1(б) > Використання Code Composer Studio: Відладка програми

Тема: Налагодження програми в середовищі Code Composer Studio – створення та знищення точок переривання, налагодження вікон перегляду, спостереження за ресурсами

 

Відладка програми в середовищі CCS

 

    Середовище CCS розширило традиційні програмні засоби генерації кодів для цифрових сигнальних процесорів, інтегрувавши ряд редагуючих, емулюючих, відлагоджуючих, аналізуючих засобів в один модуль. В даній частині завдання будуть розглянуті деякі стадії відпрацювання програмного забезпечення ЦСП та можливості налагодження програм, включаючи:

(а) стандартні програмні засоби середовища CCS;

(б) розширені можливості редагування програмного забезпечення;

(в) робота з проектом у середовищі CCS;

(г) настройки режимів відпрацювання в CCS.

Як і в більшості редакторів, стандартна панель інструментів (рис.1.1.) дозволяє користувачам створювати та відкривати файли; вирізати, копіювати та вставляти текст всередину файлу та переносити його між файлами. Також є можливість повертатися на крок назад та вперед, виконувати пошук та заміну тексту як в середині одного файлу так і в декількох файлах. Вбудоване контекстне меню середовища ССS також розташовується на стандартній панелі інструментів. Розширені функції редагування файлу знаходяться в панелі інструментів (див. рис.1.1). Вона містить наступні команди для програми на мови С – перехід до мітки, перехід до наступної мітки, пошук співпадінь, пошук наступних круглих дужок. Функції зміщення можуть бути використані для переміщення виділеного блоку чи тексту в горизонтальному напрямку. Наступні чотири команди дозволяють користувачу створювати, знищувати, редагувати та шукати посилання.

    Для обробки проекту у середовищі CCS використовуються наступні програмні засоби – компілятор мови С, асемблер, лінкер. Панель інструментів роботи над проектом дає користувачеві різноманітні варіанти обробки проектів. Це – проста компіляція, зростаюча (інкрементна) компіляція та повна повторна компіляція всього проекту, які дозволяють користувачеві обробити більш ефективно програму. Точки переривання дають можливість встановити в програмі точку зупинки та зупинити ЦСП кожного разу, коли виконання програми дістається до встановленої точки переривання. Пробні точки дозволяють програмі переміщувати дані з та в зовнішні файли. Аналізатор ефективності коду (Profiler) використовується для вимірювання часу виконання програми. Він забезпечує програму інформацією про час виконання, яка може бути використана для аналізу та визначення критичних динамічних блоків програми.

    Панель меню відпрацювання (представлена на рис.1.1) містить декілька покрокових операцій: одинарний крок, вхід в функцію, пропуск (перехід за межи) функції, вихід з функції та повернення до функції, яка її викликає. Є команда, що дозволяє виконувати операції до положення курсору (до відповідної строки коду). Наступні три “гарячі” кнопки в панелі відпрацювання – це “run”, “halt”, “animate”. Вони дозволяють користувачеві запустити, зупинити та виконати програму в особливому режимі в будь-який час.

Вікно спостереження використовується для відображення вмісту змінних. Вікно перегляду регістрів процесора, пам’яті даних та вікна перегляду стеку надають додаткову інформацію для відладки програмного забезпечення. Додаткові команди доступні з випадаючих меню, такі як виклик графічних вікон відображення даних за місцем їх розташування у пам’яті.

    Коли розробляється та тестується програмне забезпечення, часто виникає необхідність перевірки значення змінних протягом виконання програми. В даному завданні будуть використані наступні настройки для відпрацювання – встановлення точок переривання, виконання команд в покроковому режимі та використання вікна спостереження. Завдання поділене на наступні чотири частини:

 

1. Створення та знищення точок переривання:

  • Почніть налагодження проекту, вибравши команду ProjectOpen на панелі інструментів. Вкажіть проект exp.pjt з відповідної директорії (який був розроблений в попередньому завданні). Завантажте до процесору виконуваний вихідний файл exp.out. Щоб відкрити файл, що містить текст програми, написаний мовою С, що знаходиться у робочій папці проекту, треба подвійно натиснути ліву кнопку миші на файлі exp.c у вікні перегляду проекту.
  • Створення та знищення точок переривань у певному рядку коду програми є досить простим. Для того, щоб поставити точку переривання потрібно розташувати курсор на лінії, де має бути ця точка. Команда активації точки переривання – натискання “гарячої” клавіши встановлення точки переривання на панелі інструментів середовища CCS, або натискання правої кнопки миші та вибір пункту «встановити точку переривання» з контекстного меню. Для швидкої активації точки переривання можна використовувати функціональну клавішу <F9>. Коли точка переривання активована, вона позначається червоною крапкою зліва в місці її встановлення. Програма буде виконуватися до позначеної строки коду, не переходячи за неї. Повторний вибір команди активації точки переривання знімає вибрану точку. Вибір команди “Delete All” з панелі інструментів знищує всі встановлені точки переривання одночасно. Тепер підведіть курсор до наступного рядку програми:

     

    in_buffer[i] = sineTable[i];    /* < – set breakpoint */

    та натисніть на клавішу <Toggle Breakpoint> панелі інструментів (чи клавішу <F9>).

     

2. Налагодження вікон перегляду:

  • В панелі інструментів виберіть команду ViewCPU RegistersCPU Registers для відкриття вікна перегляду регістрів процесора. Можна редагувати вміст будь-якого регістру, зробивши подвійне натискання лівої кнопки миші на ньому. Натисніть праву кнопку миші у вікні CPU Registers та виберіть команду Allow Docking з контекстного меню. Тепер вікно перегляду можна переміщувати та змінювати його розмір. Спробуйте змінити вміст робочого регістру T0 та акумулятора AC0 наступним чином: T0=0×1234 та AC0=0×5678ABC.
  • В меню середовища CCS виберіть команду ToolsCommand Window для відкриття вікна вводу команд. Його можна переміщувати та змінювати його розмір. Вікно команд буде з’являтися кожного разу, коли буде виконуватися компілювання проекту.
  • Можна змінити зовнішній вигляд середовища CCS, використовуючи налаштований вигляд робочого простору. Для збереження вигляду робочого простору виберіть команду FileWorkspaceSave Workspace As та вкажіть його ім’я. Після запуску середовища CCS можна завантажити збережений робочий простір, вибравши команду FileWorkspaceLoad Workspace та вказавши потрібне ім’я.
  • Виберіть команду ViewDisassembly, щоб відкрити вікно дізасемблера. Дане вікно буде автоматично з’являтися кожного разу після завантаження виконуваного файлу до процесора. 

3. Використання однокрокових функцій:

  • При використанні програм на мові С, процесор С55х звертається до функції ініціалізації системи (назва boot) з бібліотеки динамічної підтримки rts55.lib. Після завантаження файлу exp.out до процесору, програмний лічильник (PC) повинен вказувати на адресу розташування функції boot, а у вікні дізасемблера повинен відображатися код програми boot.asm (для цього завантажте програму exp.out до процесора). Якщо головна програма проекту написана мовою С, у тексті програми повинна бути присутня функція main(), з якої починають виконуватися функції мови С. За допомогою команди Go Main з меню Debug, процесор може перейти до адреси, з якої починається виконання програми, написаної мовою С.
  • Виконайте команду Debug Go Main. Після її виконання, ЦСП перейде за адресою розташування команди main() та зупиниться. Натискаючи клавішу <F8>, або клавішу виконання одного кроку в панелі інструментів, прослідкуйте за покроковим виконанням програми exp.c та змінною значення регістрів ЦСП. Перемістіть курсор в інше місце програми, та випробуйте функцію виконання програми до курсору (одночасне утримання клавіш <Ctrl> та <F10>).

     

4. Спостереження за ресурсами:

  • Виберіть команду ViewWatch Window, відкриється вікно перегляду змінних. Під час виконання програми це вікно показує значення змінних, за якими ведеться спостереження. Перейдіть до закладини Watch1. В вільному рядку, в колонці Name, наберіть ім’я вихідного буфера out_buffer та натисніть Enter. Розкрийте змінну out_buffer для перегляду кожного окремого елементу буфера.
  • Виберіть команду ViewMemory, відкриється вікно вибору ділянки пам’яті. Введіть ім’я змінної in_buffer як значення початкового адресу на сторінці пам’яті даних для її перегляду. Тому що ця змінна визначена глобально, її ім’я можна використовувати як адресу для перегляду змісту комірок пам’яті. Натисніть ОК.
  • Виберіть команду ViewGraphTime/Frequency, відкриється діалогове вікно Graph Property Dialog (властивості графічного вікна). Встановіть параметри виведення інформації на екран у відповідності до рис.1.3. Середовище CCS дозволяє користувачеві графічно відобразити сегмент даних з області пам’яті, вказавши його положення та розмір.
  • Встановіть точку переривання в наступному рядку програми:

    in_buffer[i] = sineTable[i];    /* < – set breakpoint */


    Рис.1.3. Вибір параметрів виведення даних в графічному вікні.

     

  • Запустіть програму в режимі “animate”. Спостерігайте за зміною значень у вікні перегляду регістрів процесору, in_buffer та out_buffer у вікні перегляду змінних, вікні змісту пам’яті та графічному вікні. На рис.1.4 зображено один з моментів анімації. Жовта стрілочка показує поточне положення лічильника програми. Червоним кольором у вікнах позначаються дані та зміст регістрів, які були змінені на поточному кроці.
  • Зупиніть виконання програми за допомогою команди Halt.


Рис.1.4. Момент анімації у середовищі ССS