Использование языка Си для программирования ЦСП TMS320C67x
Язык АССЕМБЛЕРа – базовый язык программирования ЦСП. Он строго ориентирован на конкретную архитектуру ЦСП и позволяет в полной мере задействовать все его ресурсы, обеспечивая оптимальный с точки зрения скорости выполнения и размера программы код. Недостатком использования АССЕМБЛЕРа является сложность процесса разработки программ и необходимость хорошего знания архитектуры ЦСП. В современном мире скорость выпуска новых технических решений на рынок становится очень критичной для поддержания конкурентоспособности. Возникает задача ускорения процесса разработки и отладки программного обеспечения, упрощения модификации и переноса программных продуктов с одних аппаратных платформ на другие. Незаменимыми становятся языки высокого уровня, основным из которых является язык Си. Ассемблер и Си
В настоящий момент все компании-производители ЦСП стараются обеспечить программиста возможностью использования языка Си/Си++. Для этого создаются компиляторы, автоматически переводящие программный код с Си на АССЕМБЛЕР конкретного сигнального процессора. Рассмотрим пример из лабораторной работы 1. Для реализации вычисления выражения: х = 1.1* * – 0.5 мы разработали программу из 10 строк. При этом нам потребовалось изучить систему команд, особенности командного конвейера для выбора числа NOP, состав вычислительных блоков и т. д. На языке Си такая программа состояла бы из одной единственной строки, не требуя никаких знаний о ЦСП: х = 1.1* * – 0.5; /* Строка программы на языке Си */ Ассемблер и Си
MPYSP.M1A1,A2,A1 ||MPYSP.M2B1,B2,B1 NOP3 ADDSP.L1XA1,B1,A2 NOP3 ADDSP.L1A2,A3,A2 NOP3 SUBSP.L1XA2,B3,A0 NOP3 NOP х = 1.1* * – 0.5 Ассемблер Си
Задача компилятора – обеспечить эффективный перевод Си-программы на язык АССЕМБЛЕРа, то есть использовать ресурсы ЦСП наиболее рационально. Однако компиляторы далеки от совершенства и генерируемый ими код часто оказывается не оптимален. В примере лабораторной работы 1 программа, написанная на ассемблере, выполняется за 16 тактов, а программа на языке Си – за 25 тактов. Ассемблер и Си
Итак, перед программистом возникает вопрос выбора языка программирования: эффективный, но сложный ассемблер, или простой и удобный, но не вполне эффективный Си? Компания Texas Instruments рекомендует при разработке программного кода для ЦСП TMS320C67x использовать следующий алгоритм. 1. Разрабатывается пакет программ на языке Си. 2. Проект компилируется и оценивается эффективность сгенерированного ассемблерного кода (скорость выполнения/размер программы). 3. Если эффективность недостаточная, выделяются наиболее проблемные фрагменты кода и проводится их оптимизация на языке Си. 4. Если оптимизация на Си не приводит к нужным результатам, выделенные фрагменты кода переписываются на языке линейного ассемблера. Линейный ассемблер аналогичен обычному ассемблеру, но допускает ряд упрощений синтаксиса, облегчающих процесс программирования. Код линейного ассемблера поступает на ассемблирование с оптимизацией, в процессе которого программа дополняется недостающей информацией. Алгоритм разработки программы для ЦСП
Для более эффективного использования языка Си при программировании ЦСП C67x стандартный язык Си расширен набором специальных директив и других элементов синтаксиса. Ключевые слова - позволяют точно определить компилятору тип используемых переменных или функций (interrupt, cregister, …). Директивы компилятору – позволяют сообщить компилятору, как ему следует понимать определенный фрагмент кода (_ DATA_ALIGN, _ MUST_ITERATE). Встроенные средства – набор специальных Си-функций, переводимых компилятором напрямую в соответствующие им команды ассемблера. Позволяют задействовать на языке высокого уровня такие команды процессора, которые не могут быть представлены средствами стандартного языка Си. Ассемблерные вставки – ассемблерные команды, размещаемые прямо в тексте Си-программы: asm(assembler text);. Библиотека функций ЦОС – набор типовых функций ЦОС, разработанных специально для конкретного процессора и эффективно использующих его ресурсы. Библиотека DSPLIB содержит функции адаптивной фильтрации, корреляции, БПФ, фильтрации и свертки, и других вычислений. Особенности языка Си для ЦСП TMS320C67x
Процесс создания проекта с использованием языка Си рассмотрим на примере: 0. Создание рабочей папки. 1. Формирование сигнала в системе МАТЛАБ ( ). Формирование фильтра в системе МАТЛАБ. 2. Создание файла с программой 3. Создание проекта, подключение файлов, в том числе библиотеки rts и cmd. 4. Компиляция. Анализ кода ассемблера. 5. Меню – свойства проекта, визуализация и др. Создание проекта на языке Си
Процесс создания проекта с использованием языка Си рассмотрим на примере: 1. Создать проект. 2. Создать файл с текстом программы. 3. Подключить к проекту этот файл и rts, cmd. 4. Компиляция. 5. Изучение кода. 6. Вывод характеристик фильтра. 7. Загрузка сигнала и вывод его на график. 8. Выполнение программы и проверка результата. 9. Оценка времени выполнения программы. 10. Разрешить компиляцию с оптимизацией. 11. Выполнить и оценить время выполнения. Создание проекта на языке Си