Transcript
Page 1: Использование языка Си для программирования ЦСП TMS320C67x

Использование языка Си для программирования ЦСП

TMS320C67x

Page 2: Использование языка Си для программирования ЦСП TMS320C67x

Язык АССЕМБЛЕРа – базовый язык программирования ЦСП. Он строго ориентирован на конкретную архитектуру ЦСП и позволяет в полной мере задействовать все его ресурсы, обеспечивая оптимальный с точки зрения скорости выполнения и размера программы код. Недостатком использования АССЕМБЛЕРа является сложность процесса разработки программ и необходимость хорошего знания архитектуры ЦСП.

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

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

Незаменимыми становятся языки высокого уровня, основным из которых является язык Си.

Ассемблер и Си

Page 3: Использование языка Си для программирования ЦСП TMS320C67x

В настоящий момент все компании-производители ЦСП стараются обеспечить программиста возможностью использования языка Си/Си++.

Для этого создаются компиляторы, автоматически переводящие программный код с Си на АССЕМБЛЕР конкретного сигнального процессора.

Рассмотрим пример из лабораторной работы №1.

Для реализации вычисления выражения:

х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5

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

На языке Си такая программа состояла бы из одной единственной строки, не требуя никаких знаний о ЦСП:

х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5; /* Строка программы на языке Си */

Ассемблер и Си

Page 4: Использование языка Си для программирования ЦСП TMS320C67x

Ассемблер и Си

MPYSP .M1 A1,A2,A1 ||MPYSP .M2 B1,B2,B1

NOP 3

ADDSP .L1X A1,B1,A2 NOP 3

ADDSP .L1 A2,A3,A2 NOP 3

SUBSP .L1X A2,B3,A0 NOP 3

NOP

х = 1.1*2.2 + 3.3*4.4 + 5.5 – 0.5

Ассемблер

Си

Page 5: Использование языка Си для программирования ЦСП TMS320C67x

Задача компилятора – обеспечить эффективный перевод Си-программы на язык АССЕМБЛЕРа, то есть использовать ресурсы ЦСП наиболее рационально.

Однако компиляторы далеки от совершенства и генерируемый ими код часто оказывается неоптимален.

В примере лабораторной работы №1 программа, написанная на ассемблере, выполняется за 16 тактов, а программа на языке Си – за 25 тактов.

Ассемблер и Си

Page 6: Использование языка Си для программирования ЦСП TMS320C67x

Итак, перед программистом возникает вопрос выбора языка программирования: эффективный, но сложный ассемблер, или простой и удобный, но не вполне эффективный Си?

Компания Texas Instruments рекомендует при разработке программного кода для ЦСП TMS320C67x использовать следующий алгоритм.

1. Разрабатывается пакет программ на языке Си.

2. Проект компилируется и оценивается эффективность сгенерированного ассемблерного кода (скорость выполнения/размер программы).

3. Если эффективность недостаточная, выделяются наиболее проблемные фрагменты кода и проводится их оптимизация на языке Си.

4. Если оптимизация на Си не приводит к нужным результатам, выделенные фрагменты кода переписываются на языке линейного ассемблера.

Линейный ассемблер аналогичен обычному ассемблеру, но допускает ряд упрощений синтаксиса, облегчающих процесс программирования.Код линейного ассемблера поступает на ассемблирование с оптимизацией, в процессе которого программа дополняется недостающей информацией.

Алгоритм разработки программы для ЦСП

Page 7: Использование языка Си для программирования ЦСП TMS320C67x

Для более эффективного использования языка Си при программировании ЦСП C67x стандартный язык Си расширен набором специальных директив и других элементов синтаксиса.

Ключевые слова - позволяют точно определить компилятору тип используемых переменных или функций (interrupt, cregister, …).

Директивы компилятору – позволяют сообщить компилятору, как ему следует понимать определенный фрагмент кода (_ DATA_ALIGN, _ MUST_ITERATE).

Встроенные средства – набор специальных Си-функций, переводимых компилятором напрямую в соответствующие им команды ассемблера. Позволяют задействовать на языке высокого уровня такие команды процессора, которые не могут быть представлены средствами стандартного языка Си.

Ассемблерные вставки – ассемблерные команды, размещаемые прямо в тексте Си-программы: asm(”assembler text”); .

Библиотека функций ЦОС – набор типовых функций ЦОС, разработанных специально для конкретного процессора и эффективно использующих его ресурсы. Библиотека DSPLIB содержит функции адаптивной фильтрации, корреляции, БПФ, фильтрации и свертки, и других вычислений.

Особенности языка Си для ЦСП TMS320C67x

Page 8: Использование языка Си для программирования ЦСП TMS320C67x

Процесс создания проекта с использованием языка Си рассмотрим на примере:

0. Создание рабочей папки.1. Формирование сигнала в системе МАТЛАБ (1651 4 0 0 2000). Формирование фильтра в системе МАТЛАБ.2. Создание файла с программой3. Создание проекта, подключение файлов, в том числе библиотеки rts и cmd.4. Компиляция. Анализ кода ассемблера.5. Меню – свойства проекта, визуализация и др.

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

Page 9: Использование языка Си для программирования ЦСП TMS320C67x

Процесс создания проекта с использованием языка Си рассмотрим на примере:

1. Создать проект.2. Создать файл с текстом программы.3. Подключить к проекту этот файл и rts, cmd.4. Компиляция.5. Изучение кода.6. Вывод характеристик фильтра.7. Загрузка сигнала и вывод его на график.8. Выполнение программы и проверка результата.9. Оценка времени выполнения программы.10. Разрешить компиляцию с оптимизацией.11. Выполнить и оценить время выполнения.

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


Recommended