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