Использование языка Си для программирования ЦСП TMS320C67x Ассемблер и Си Язык АССЕМБЛЕРа – базовый язык программирования ЦСП.

Download Report

Transcript Использование языка Си для программирования ЦСП 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. Выполнить и оценить время выполнения.