Телефонуйте » (+38) 096 227 41 41

Метою лабораторної роботи є знайомство зі структурою налагоджувальної плати TMDSEVM6678L EVM, її підключення, створення та запуск програм.

TMDXEVM6678L - високоефективна, автономна платформа розробки, яка дозволяє користувачам оцінювати і розробляти програми для цифрових сигнальних процесорів (ЦСП) TMS320C6678 Texas Instruments. Плата (EVM) є еталонною платформою для розробки апаратних засобів на базі ЦСП TMS320C6678.

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

Основні характеристики плати:

·    8-ми ядерний ЦСП TMS320C6678
·    512 MB пам'яті DDR3-1333
·    64 MB NAND Flash
·    16MB SPI NOR FLASH
·    Два порти Ethernet Gigabit з підтримкою швидкості передачі даних 10/100/1000 Мбіт – один AMC на роз'єм AMC і один RJ-45 роз'єм
·    170 контактний B+ AMC інтерфейс, який містить SRIO, PCIe, Gigabit Ethernet і TDM
·    Високоефективний роз'єм для HyperLink
·    128KБ I2C EEPROM для завантаження
·    2 службові світлодіоди, 5 банків DIP-перемикачів і 4 світлодіоди з програмним керуванням
·    RS232 Послідовний інтерфейс на 3-контактному роз'ємі або UART через mini-USB роз'єм
·    EMIF, таймер, SPI, UART на розширеному 80-контактному роз’ємі
·    емулятор XDS100 через високошвидкісний інтерфейс USB 2.0
·    60-контактний роз'єм JTAG для підтримки всіх зовнішніх типів емуляторів TI
·    Контролер управління модулем (MMC) для Інтерфейсу інтелектуального управління платформою (IPMI)

Функціональна блок-схема TMDXEVM6678L показана на рис:

Модуль EVM поставляється з Multicore Software Development Kit (MCSDK) для SYS/BIOS OS. BIOS MCSDK забезпечує основні фундаментальні будівельні блоки, які полегшують розробку прикладного програмного забезпечення для багатоядерних ЦСП. MCSDK також включає в себе демонстраційні приклади. Детальний опис знаходиться в "MCSDK  Getting  Started Guide".

Виконання лабораторної роботи

Для того, щоб почати роботу з платою, ознайомтесь з Початок роботи з платою TMS320C6678L Texas Instruments.

Налаштування обладнання

Попередження: Плата EVM чутлива до електростатичних розрядів (ESD). Використовуйте заземлюючий браслет або інший пристрій для запобігання пошкодженню плати. Обов'язково підключіть кабелі зв'язку (USB, Ethernet) перед подачею живлення до обладнання.

1. Підключіть кабель Ethernet. Підключіть один кінець кабелю до порту Ethernet на EVM, а інший кінець кабелю - до роз'єму локальної мережі. Комп'ютер також підключіть до мережі.
2. Підключіть інтерфейс JTAG. За допомогою кабелю USB - USB mini-B підключіть EVM до комп'ютера. Це дає можливість за допомогою емулятора XDS-100 загружати програми до процесора. Якщо ви використовуєте інший емулятор, то підключіть його до JTAG роз’єму.
3. Перевірте режим Endian в налаштуваннях перемикачів SW3. Повинен бути встановлений режим Little Endian. Перемикач SW3 також містить налаштування режиму завантажування плати.

Мікроперемикач Endian ON: Little
Мікроперемикач Endian OFF: Big

4. Перевірте режим завантаження на перемикачах SW3 - SW6. Нижче приведений режим завантаження NOR шляхом завантаження з EEPROM за адресою 0x51.

Вибір режиму завантаження за допомогою мікроперемикачів

EVM підтримує завантаження образу з різних пристроїв (EEPROM, NAND або NOR) через IBL (при I2C адресі 0x51), I2C EEPROM (при I2C адресі 0x50), а також режими ROM завантаження (наприклад, Ethernet, SRIO, PCIe, SPI тощо), в яких адреса завантаження отримується безпосередньо з коду ROM. Нижче наводиться таблиця, яка показує параметри перемикання режиму завантаження за допомогою модулів перемикачів, які підтримує EVM:

Примітки:

1. Pin 1 of SW3 is the endian pin, by default, it is set to off (Little Endian) 
2. Pin 2-4 of SW3 are the boot mode pins, by default it is set to I2C boot mode (off, on, off)
3. Pin 1-4 of SW4 and pin 1-2 of SW5 are the boot parameter index pins for I2C boot (parameter index 0/1 for NOR boot image 0/1, parameter index 2/3 for NAND boot image 0/1, parameter index 4 for TFTP boot). By default, image 0 is programmed to offset byte address 0x0 on NOR, and 0x4000 (block 1 start address) on NAND, image 1 is programmed to offset byte address 0xA00000 on NOR, and 0x2000000 on NAND.
4. Pin 4 of SW5 is the I2C address pin (off: 0x51, on: 0x50)  for I2C boot mode
5. This will set the board to boot from SRIO boot mode, with reference clock at 312.5 MHz, data rate at 3.125 GBs, and lane setup 4-1x ports and DSP System PLL at 100 MHz.
6. This will set the board to boot from Ethernet boot mode, with SerDes clock multiplier x 4, core PLL clock at 100 MHz.
7. This will set the board to boot form PCIE boot mode, with PCIE in end point mode and DSP System PLL at 100 MHz.
8. This will set the board to boot from SPI NOR via the ROM code, with boot-table contents expected in the NOR. 24bit addressing has been set.
Please refer to Technical_Reference_Manual for the boot mode switch settings on the board.

5. Встановіть перемикач користувача для запуску демонстраційної програми. Програмі необхідна IP-адреса. Вона може використовувати як статичну IP-адресу (попередньо налаштовану) або може запросити її за допомогою DHCP. Це контролюється шляхом установки мікроперемикача 2 на групі перемикачів SW9. Ми використовуємо DHCP для отимання динамічної ІР-адреси.

Мікроперемикач 2 ON: DHCP
Мікроперемикач 2 OFF: Статична IP-адреса

6. Підключіть кабель послідовного порту. На платі EVM можна використовувати як послідовний порт USB, так і стандартний роз'єм DB-9 (використовуйте кабель USB, який входить в комплект). За замовчуванням, шунти, які керують цим режимом, встановлені для використання USB. (Однак, рекомендують використовувати DB-9, бо при тестуванні з ним не спостерігалися проблем).

7. Підключіть кабель живлення. Підключіть кабель живлення до відповідного роз'єму на платі EVM. Для того, щоб захиститися від статичного заряду, підключіть інший кінець кабелю живлення тільки після того, як підключите кабель живлення до плати. Потім увімкніть плату.
8. Зайдіть в веббраузер для перегляду роботи наявної демонстраційної програми (з коробки - "out of box") High Performance DSP Utility Application (HUA). Тепер небхідно ввести IP-адресу своєї плати. Щоб знайти її серед інших пристроїв, підключених до локальної мережі, виконайте сканування локальної мережі за допомогою програми Advanced IP Scanner. Ідентифікувати свою плату можна за її номером і відповідною МАС-адресою:

У вікні браузера з’явиться наступне:

Для довідки. Демо HUA працює зі статичною IP-адресою, або отриманою від DHCP, залежно від положення мікроперемикача 2 (п.5). Якщо вибраний режим DHCP, то програма буде передавати дані через UART. Тому, ви можете використовувати програми послідовного порту (Terminal), щоб відстежувати інформацію. При використанні в мережі DHCP - це буде єдиним способом отримати IP-адресу, яка буде призначена платі.

Налаштування UART:

Деталі про демонстраційну програму за посиланням: http://processors.wiki.ti.com/index.php/MCSDK_HUA_Demonstration_Guide
У налагоджувальні модулі C66x завантажені наступні демонстраційні програми у Flash/EEPROM:

Підключення та перевірка плати завершена!

Побудова та запуск простої програми на одному ядрі

Метою даного розділу є створення проекту в CCS, написання виконуваного файлу з наступним запуском його на платі EVM. Програма повина виводити текстову інформацію через порт UART і блимати світлодіодами на платі EVM. Програма запускається зі спільно використовуваної пам'яті (shared memory) на EVM і не використовує зовнішню пам'ять DDR.

Примітка: Зверніть увагу, що код програми з використанням простої бібліотеки платформи (The Platform Library) запускається зі спільно використовуваної пам'яті (MSMCRAM), тому не потрібно використовувати GEL файл. Хоча, часто потрібно запускати відповідний GEL-файл CCS для процесора перед завантаженням і запуском будь-якої програми.

Бібліотека платформи є програмним шаром, написаний поверх CSL. Він забезпечує інтерфейс API для всіх платформ. Вона допомагає користувачеві швидко писати програмне забезпечення для платформ, приховуючи деталі плати від користувача.

Кроки, які потрібно виконати:

1. Переконатися, що плата EVM відповідно налаштована
2. Встановити Code Composer Studio v5
3. Встановити останню версію пакету емуляції (має бути вже встановлена з диску; посилання: http://software-dl.ti.com/sdoemb/sdoemb_public_sw/ti_emupack_keystone1/latest/index_FDS.html)
4. Встановити BIOS-MCSDK 2.0 (в ній знаходиться The Platform Library)
5. Створити проект
5. Використати JTAG для завантаження програми

Налаштування плати EVM для завантаження програми

Виключіть живлення.
Встановіть режим завантаження перемикачами на платі EVM «No Boot». Перегляньте відповідну таблицю режимів завантаження.

Встановлення комплекту бібліотек BIOS Multicore Software Development Kit

MCSDK складається з основних елементів програмного забезпечення, призначених для підтримки розробки прикладного програмного забезпечення на високопродуктивних і багатоядерних ЦСП TI.
Основні компоненти включають в себе:

• операційна система реального часу SYS/BIOS для пристроїв TI;
• бібліотеки підтримки мікросхеми, драйвери і основні утиліти для платформи;
• бібліотеки часу виконання (Run-time libraries);
• бібліотеки для міжпроцесорної взаємодії для зв’язку ядер і пристроїв;
• базовий мережевий стек і протоколи;
• оптимізовані бібліотеки алгоритмів для специфічних і неспецифічних програм;
• інструменти для налагодження (Debug);
• завантажувачі і завантажувальні утиліти;
• демонстраційні програми і приклади.

Примітка. BIOS-MCSDK вже не підтримується, тому треба ставити з диску. Зараз створений і підтримується новий SDK з назвою processor sdk rtos, але для нього рекомендується CCSv6.1. Скачується SDK за посиланням: http://software-dl.ti.com/processor-sdk-rtos/esd/C667x/latest/index_FDS.html

Будь ласка, переконайтеся, що CCS закритий перед установкою BIOS MCSDK. Програма установки MCSDK дозволяє вибрати каталог установки. MCSDK установка може включати в себе кілька компонентів; всі компоненти будуть встановлені в тому ж каталозі.
Встановіть програму bios_mcsdk_02_01_02_05_setupwin32.exe  в тому ж каталозі, де встановлена CCSv5. Наприклад, С:\\ti.
Кожен програмний компонент поставляється як eclipse plug-in (плагін). Після установки BIOS-MCSDK CCSv5 має виявити кожен з плагінів під час запуску. У вікні CCSv5 Help->Help Contents будуть перераховані всі доступні документи, які користувач може переглядати з вікна довідки.

Якщо ви встановили SDK і CCS в різних каталогах перегляньте файл BIOS_MCSDK_2.0_Getting_Started_Guide або посилання Custom Installation Path, яке містить інструкції для налаштування.

Створення проекту та завантаження програми

Інструкції для створення проекту:

1.    Запустіть CCS (бажано з новим workspace).
2.    Створіть проект File->New->CCS Project і в поле імені проекту введіть led_play.
3.    Введіть наступні налаштування:

4.    У вікні проекту Project templates виберіть пустий проект (Empty Project). Нитисніть Finish.
5.    Створіть  вихідний файл File->New->Source File, введіть ім'я файлу led_play.c.

В редакторі Eclipse повинен відкритися порожній файл led_play.c. Вставте наступний вихідний код в редактор.

//***********************************************************************
#include <cerrno>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "ti\platform\platform.h"
#include "ti\platform\resource_mgr.h"

/* OSAL functions for Platform Library */
uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment)
{
    return malloc(num_bytes);
}

void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes)
{
    /* Free up the memory */
    if (dataPtr)
    {
        free(dataPtr);
    }
}

void Osal_platformSpiCsEnter(void)
{
    /* Get the hardware semaphore.
     *
     * Acquire Multi core CPPI synchronization lock
     */
    while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0);

    return;
}

void Osal_platformSpiCsExit (void)
{
    /* Release the hardware semaphore
     *
     * Release multi-core lock.
     */
    CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM);

    return;
}

void main(void) {
    platform_init_flags init_flags;
    platform_init_config init_config;
    platform_info p_info;
    uint32_t led_no = 0;
    char message[] = "\r\nHello World.....\r\n";
    uint32_t length = strlen((char *)message);
    uint32_t i;

    /* Initialize platform with default values */
    memset(&init_flags, 0x01, sizeof(platform_init_flags));
    memset(&init_config, 0, sizeof(platform_init_config));
    if (platform_init(&init_flags, &init_config) != Platform_EOK) {
        return;
    }

    platform_uart_init();
    platform_uart_set_baudrate(115200);

    platform_get_info(&p_info);

    /* Write to the UART */
    for (i = 0; i < length; i++) {
        if (platform_uart_write(message[i]) != Platform_EOK) {
            return;
        }
    }

    /* Play forever */
    while(1) {
        platform_led(led_no, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);
        platform_delay(300000);//  usecs Delay value in micro-seconds
        platform_led(led_no, PLATFORM_LED_OFF, PLATFORM_USER_LED_CLASS);
        led_no = (++led_no) % p_info.led[PLATFORM_USER_LED_CLASS].count;
    }
}

//********************************************************************

6.    Проекту тепер потрібний командний сценарій компонувальника (linker command script). Він визначає карту пам'яті для платформи (де починається внутрішня, спільна і зовнішня пам'яті тощо) і вказує де ми хочемо розмістити наші частини коду і дані. Ми збираємося помістити їх в спільній області пам'яті на процесорі.
7.    Виберіть File->New->File, введіть ім'я файлу led_play.cmd і натисніть Finish.
8.    Відкриється led_play.cmd файл в редакторі, вставте наступні команди лінкеру.

*************************************************************************
-c
-heap  0x41000
-stack 0xa000

/* Memory Map */
MEMORY
{
    L1PSRAM (RWX)  : org = 0x0E00000, len = 0x7FFF
    L1DSRAM (RWX)  : org = 0x0F00000, len = 0x7FFF
    L2SRAM (RWX)   : org = 0x0800000, len = 0x080000
    MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000
    DDR3 (RWX)     : org = 0x80000000,len = 0x10000000
}

SECTIONS
{
    .csl_vect    >       MSMCSRAM
    .text        >       MSMCSRAM
    GROUP (NEAR_DP)
    {
        .neardata
        .rodata
        .bss
    } load       >      MSMCSRAM
    .stack       >      MSMCSRAM
    .cinit       >      MSMCSRAM
    .cio         >      MSMCSRAM
    .const       >      MSMCSRAM
    .data        >      MSMCSRAM
    .switch      >      MSMCSRAM
    .sysmem      >      MSMCSRAM
    .far         >      MSMCSRAM
    .testMem     >      MSMCSRAM
    .fardata     >      MSMCSRAM
    platform_lib >     MSMCSRAM
}

**************************************************************************

9.    Перед тим, як побудувати проект, нам потрібно буде прописати шляхи до файлів бібліотеки платформи (Platform Library).
10.    Виберіть Project->Properties, має відкритися вікно властивостей проекту led_play. Виберіть Include Options і додайте наступний шлях в «Add dir to #include search path...»
"C:\ti\pdk_C####_1_0_0_xx\packages"

11.    Виберіть File Search Path з секції C6000 Linker. Додайте в секцію Include library файл ti.platform.evm6678l.ae66.
12.    Добавте шлях в секцію Add <dir> to library
"C:\ti\pdk_C####_1_0_0_xx\packages\ti\platform\evmc####l\platform_lib\lib\debug"

13.    В секції CCS properties -> Build -> C6000 compiler -> Advanced options -> Predefined Symbols -> Pre-define NAME
додайте ім’я SOC_C6678 (можливо підійдуть EVM_C6678 , USE_BIOS , DEVICE_C6678)/

14.    Побудуйте проект та загрузіть програму в процесор. Для запуску виберіть ядро core 0 (C66XX_0).
15.    Спостерігайте мерехтіння світлодіодів Debug LEDs.

Примітка. На платі TMDXEVM6678L встановлено 7 системних світлодіодів. Їх призначення та розташування показано на рис.

Завдання

1.    Проаналізуйте код програми.
2.    Напишіть програму, яка буде запалювати світлодіоди зліва-направо, справа-наліво.
3.    Напишіть програму, яка буде запалювати світлодіоди циклічно справа-наліво (або зліва-направо).
4.    Напишіть програму, яка реалізує двійковий рахунок від 0 до 15.
5.    Напишіть програму, яка буде запалювати світлодіоди 0101 -> 1010.
6.    Напишіть програму, яка буде запалювати світлодіоди 1100 -> 0011.

Домашнє завдання

Заданий сигнал, відліки якого записані в цілочисельний масив signal. Написати програму, яка буде виводити на світлодіодні індикатори рівень сигналу через кожні 20 мс. Оскільки світлодіодів 4, то рівнів 5 (малий рівень сигналу – світлодіоди не горять). Після завершення оброблення останнього відліку почати оброблювати перший відлік. Після заповнення вивести зображення сигналу інструментами Code Composer Studio.

#define N 101

short signal[N] = {0, 14937, 23820, 23523, 15270, 3851, -4912, -7109, -2533, 5552, 12463, 14783, 12188, 7429, 4525, 6231, 12234, 19129, 22255, 18368, 7702, -5800, -16287, -18932, -12473, 0, 12473, 18932, 16287, 5800, -7702, -18368, -22255, -19129, -12234, -6231, -4525, -7429, -12188, -14783, -12463, -5552, 2533, 7109, 4912, -3851, -15270, -23523, -23820, -14937, 0, 14937, 23820, 23523, 15270, 3851, -4912, -7109, -2533, 5552, 12463, 14783, 12188, 7429, 4525, 6231, 12234, 19129, 22255, 18368, 7702, -5800, -16287, -18932, -12473, 0, 12473, 18932, 16287, 5800, -7702, -18368, -22255, -19129, -12234, -6231, -4525, -7429, -12188, -14783, -12463, -5552, 2533, 7109, 4912, -3851, -15270, -23523, -23820, -14937, 0, };

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

Записатися на курс