
- •Содержание
- •Лекционный курс модуль Вводный
- •1. Цели и задачи курса
- •2. Микропроцессор и микропроцессорная система
- •3. Основные понятия и определения
- •4. Характеристики микропроцессоров
- •5. Классификация микропроцессоров
- •6. Эволюция микропроцессоров
- •Модуль I. Организация микропроцессорной системы
- •1. Основные типы архитектур микропроцессорных систем. Фон-неймановская (принстонская) и гарвардская архитектуры. Организация пространств памяти и ввода-вывода.
- •5. Прямой доступ к памяти. Организация прямого доступа к памяти. Контроллер пдп.
- •6. Память микропроцессорной системы. Функции памяти. Архитектура и иерархия памяти. Организация кэш-памяти. Виртуальная память.
- •Увеличение разрядности основной памяти
- •Память с расслоением
- •Использование специфических свойств динамических зупв
- •Страничная организация памяти
- •Сегментация памяти
- •Модуль II. Универсальные микропроцессоры
- •1. Определение понятия «архитектура». Архитектура системы команд. Классификация процессоров cisc и risc. Определение понятия "архитектура"
- •Архитектура системы команд. Классификация процессоров (cisc и risc)
- •2. Методы адресации и типы данных. Типы команд. Команды управления потоком команд. Методы адресации
- •Типы команд
- •Команды управления потоком команд
- •3. Конвейеризация и параллелизм. Конвейерная организация обработки данных. Простейшая организация конвейера и оценка его производительности.
- •Простейшая организация конвейера и оценка его производительности
- •Конфликты по данным, остановы конвейера и реализация механизма обходов
- •Классификация конфликтов по данным
- •Конфликты по данным, приводящие к приостановке конвейера
- •Методика планирования компилятора для устранения конфликтов по данным
- •Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •Снижение потерь на выполнение команд условного перехода
- •5. Проблемы реализации точного прерывания в конвейере. Обработка многотактных операций и механизмы обходов в длинных конвейерах Проблемы реализации точного прерывания в конвейере
- •Обработка многотактных операций и механизмы обходов в длинных конвейерах
- •Конфликты и ускоренные пересылки в длинных конвейерах
- •Поддержка точных прерываний в длинных конвейерах
- •Параллелизм уровня команд: зависимости и конфликты по данным
- •Параллелизм уровня цикла: концепции и методы
- •Основы планирования загрузки конвейера и разворачивание циклов
- •7. Зависимости. Классификация зависимостей и их применение. Устранение зависимостей по данным и механизмы динамического планирования. Зависимости. Их классификация и применение.
- •Устранение зависимостей по данным и механизмы динамического планирования Основная идея динамической оптимизации
- •Динамическая оптимизация с централизованной схемой обнаружения конфликтов
- •Другой подход к динамическому планированию - алгоритм Томасуло
- •Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •9. Одновременная выдача нескольких команд для выполнения и динамическое планирование.
- •10. Архитектура машин с длинным командным словом (vliw). Средства поддержки большой степени распараллеливания.
- •Средства поддержки большой степени распараллеливания
- •Обнаружение и устранение зависимостей
- •Программная конвейеризация: символическое разворачивание циклов
- •Трассировочное планирование
- •Аппаратные средства поддержки большой степени распараллеливания
- •Условные команды
- •Выполнение по предположению (speculation)
- •11. Архитектура epic.
- •Модуль III. Микроконтроллеры и специализированные микропроцессоры
- •2. Специализированные микропроцессоры. Цифровые процессоры обработки сигналов.
- •Модуль Заключительный Перспективы развития микропроцессорной техники.
- •Лабораторный курс
- •7 Семестр. Лабораторная работа 1.
- •Лабораторная работа 2.
- •Лабораторная работа 3.
- •Лабораторная работа 4.
- •8 Семестр. Лабораторная работа 1.
- •1. Общие сведения
- •2. Настройка и запуск Code Composer Studio (simulation)
- •3. Особенности проектирования в иср Code Composer Studio
- •4. Реализация проекта в иср Code Composer Studio
- •5. Тестирование проекта в иср Code Composer Studio
- •6. Аппаратная реализация проекта в иср Code Composer Studio
- •Лабораторная работа 2.
- •1. Подключение файлов ввода/вывода с помощью точек зондирования
- •2. Работа с файлами по средствам функций языка с
- •3. Работа с dsp/bios для генерации звукового сигнала платой dsk5510
- •Лабораторная работа 3.
- •1 Цифровая фильтрация
- •2. Реализация ких фильтра на симуляторе dsk5510
- •3. Реализация ких фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Лабораторная работа 4.
- •1. Фильтры с бесконечной импульсной характеристикой – бих
- •2. Реализация бих фильтра на симуляторе dsk5510
- •3. Реализация бих фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Оценка работы студентов. Рейтинговая система.
- •1. Общие положения
- •2. Организация рейтингового контроля успеваемости студентов дневной формы обучения
- •3. Выставление оценок по рейтинговой системе
- •4. Организация рейтингового контроля успеваемости студентов заочной формы обучения
- •Учебно-методические материалы Основная литература
- •Дополнительная литература
2. Настройка и запуск Code Composer Studio (simulation)
После инсталляции CCS при первом запуске программы вначале необходимо произвести настройку ИСР для работы в режиме симуляции ЦСП для отладки кода в виртуальном режиме:
Проверить установлены ли драйвера для платы DSK5510, которые располагаются в папке: С:\CCStudio_v3.1\specdig\ xds510usb\
Запустить утилиту «Setup CCStudio v3.1»(ярлык расположен на рабочем столе), (рисунок 2.1). Эта утилита предлагает выбрать плату отладочного модуля, которая будет установлена в системе, и с которой будет работать ИСР CCS
Рисунок 2.1 – утилита «Setup CCStudio v3.1».
Из списка выбрать плат: «С5510 Device Simulator» и нажать кнопку: «<<Add» (рисунок 2.2). Этот отладочный модуль является виртуальным симулятором отладочной платы DSK5510, и именно он будет установлен в систему для работы с ИСР CCS.
Рисунок 2.2 – Добавление DSK5510 в систему.
После добавление нажать кнопку «Save & Quit» для сохранения настроек системы и выхода из утилиты. В появившемся диалоге нажать кнопку «Да» (рисунок 2.3).
Рисунок 2.3 – Запрос на запуск ИСР CCS.
Автоматически запуститься среда разработки (рис. 2.4):
Рисунок 2.4 – Внешний вид ИСР CCS.
3. Особенности проектирования в иср Code Composer Studio
Разработка Программного Обеспечения и Концепция COFF.
Для стандартизации процесса разработки программного обеспечения Texas Instruments использует «Общий Формат Объектных Файлов» (Common Object File Format (COFF)). COFF наиболее эффективен в задачах, когда разработка программного обеспечения разделена между несколькими программистами.
Каждый файл, содержащий программный код, может быть написан независимо и называется модулем, включая спецификацию всех ресурсов, необходимых для правильного выполнения модуля. Модули могут быть написаны в Code Composer Studio или текстовом редакторе, который может сохранять файлы в ASCII-формате. Предполагаемые расширения исходных файлов на языке ассемблера – .asm, и .c для языка Си.
Рисунок 3.1 – Этапы сборки проекта.
Множество модулей объединяются в завершенную программу с помощью компоновщика. Компоновщик эффективно распределяет ресурсы доступные в устройстве для каждого модуля проекта. Компоновщик пользуется командным файлом .cmd, для определения ресурсов памяти и правил расположения в них различных секций, входящих в состав модуля. Выходом процесса компоновки становится скомпонованный объектный файл .out, который может быть выполнен на DSP, и может быть получен .map файл, который показывает, куда были размещены все секции проекта. Схематически этот процесс отражен на рисунке 3.1.
Концепция COFF обеспечивает модульную разработку программного обеспечения, независимую от аппаратной базы. Отдельно взятый ассемблерный файл может быть написан для выполнения определенной задачи и может быть скомпонован с несколькими другими задачами для получения более сложных систем.
Код разрабатывается аппаратно-независимым, что позволяет программисту модуля не думать о распределении памяти, так как эта работа будет сделана на этапе компоновки проекта. При изменении любого из модулей производится новая сборка проекта, и вопросы распределения памяти решаются заново, исключая вероятность появления конфликтов.
Проекты.
Code Composer работает с проектами, которые создаются для решения задач ЦОС на базе ЦСП. Проект содержит в себе всю необходимую информацию для того, чтобы создать запускаемый файл. Например, он описывает такие вещи как: исходные файлы, заголовочные файлы, карту памяти конечного устройства и опции сборки программы. Информация проекта хранится в файле с расширением *.PJT, который создается и обслуживается средой Code Composer (Рисунок 3.2).
Рисунок 3.2 – Дерево проекта в ИСР CCS
Опции сборки.
Опции проекта указывают компилятору, ассемблеру и компоновщику, как собрать код в соответствии с требованиями системы. Когда создается новый проект, Code Composer формирует два набора опций, называемых конфигурациями: одна называется Debug – Отладочная, а вторая Release – Конечная (Оптимизированная).
Чтобы облегчить процесс настройки опций, ИСР CCS предлагает графический пользовательский интерфейс для различных настроек компилятора, открыть которые можно выбрав раздел Project → Build Options… после чего откроется окно как показано на рисунке 3.3.
Рисунок 3.3 – Опции сборки проекта.
Содержимое строки компилятора полностью соответствует тому, что выбрано через пользовательский интерфейс.
Существует ряд опций компоновщика, но следующие четыре являются основными:
«–o <filename>» – определяет имя выходного (пускового) файла.
«–m <filename>» – указывает компоновщику создавать файл с картой проекта (map-файл).
«–c» – указывает компилятору, что он должен автоматически инициализировать глобальные и статические переменные.
«–x» – указывает компоновщику перечитывать библиотеки. Без этой опции библиотеки прочитываются один раз, поэтому ссылки из одной библиотеки на другую могут не быть разрешены.
Среди ряда параметров сборки, особое внимание следует уделить выбору уровню оптимизации (Program Level Opt. рисунок 3.4). Есть четыре уровня оптимизации (-o0, -o1, -o2, -o3), которые управляют типом и степенью оптимизации:
Уровень 0 оптимизации выполняет упрощение контрольного потокового графа, распределяет переменные для регистров, исключает неиспользованный код, и упрощает выражения и утверждения.
Уровень 1 оптимизации выполняет все оптимизации Уровня 0, исключает неиспользованные определения, и исключает местные общие выражения.
Рисунок 3.4 – Опции сборки и оптимизации.
Уровень 2 оптимизации выполняет все оптимизации Уровня 1, плюс конвейерная обработка программного обеспечения, оптимизация циклов, и разворачивание циклов. Также исключает глобальные общие подвыражения и неиспользованные назначения.
Уровень 3 выполняет все оптимизации Уровня 2, исключает все функции, к которым никогда не обращаются, и упрощает функции возвращающие значения, которые никогда не используются.
Создание Командного Файла Компоновщика
Секции
Программа, написанная на языке Си, содержит одновременно и код, и разные типы данных (глобальные, локальные и т.д.). Texas Instruments и в принятом формате COFF эти различные части программы называются секциями – Sections. Разделение кода и данных на различные секции обеспечивает гибкость, так как позволяют размещать кодовые секции в ПЗУ, а переменные в ОЗУ. В таблице 3.1 показаны секции, создаваемые компилятором.
Таблица 3.1 - Имена секций компилятора
Инициализированные секции | ||
Имя |
Описание |
Адрес размещения |
.text |
Код программы |
Программа |
.cinit |
Инициализированные глобальные и статические переменные |
Программа |
.econst (.const) |
Содержит данные (например, const int k = 3;) |
Данные |
.switch |
Таблицы для оператора switch |
Данные (программа для ‑mt) |
.pinit |
Таблицы глобальных конструкторов языка Си |
Программа |
Неинициализированные секции | ||
Имя |
Описание |
Адрес размещения |
.ebss (.bbs) |
Глобальные и статические переменные |
Данные |
.stack |
Пространство стека |
Младшие 64К данных |
.esysmem (.sysmem) |
Память для функций определения памяти far malloc |
Данные |
Примечание: в скобках указаны секции для модели памяти .small (см. рис 3.5).
Секции программы на языке Си должны размещаться в разных областях памяти процессорной системы. Раздельные секции для кода, констант и переменных позволяет достичь большей производительности. В этом случае секции могут быть размещены точно в нужной область памяти процессорной системы. Секции размещают исходя из назначения (рисунок 3.6), руководствуясь следующими правилами:
Программный Код (.text)
Программный код состоит из последовательности инструкций для обработки данных, инициализации системных настроек и так далее. Программный код должен быть определен во время сброса (Reset) или включения питания. Поэтому необходимо помещать программный код в энергонезависимую память такую как Flash или EPROM.
Рисунок 3.5 – Опции компилятора.
Рисунок 3.6 – Разделение кода программы по секциям памяти.
Константы (.cinit – инициализированные данные)
Инициализированными называются те области памяти данных, которые должны быть определены во время сброса (Reset) или включения питания. Константы содержат начальные значения переменных или значения по умолчанию. Константы подобно программному коду определяют в энергонезависимой памяти.
Переменные (.ebss – неинициализированные данные)
Неинициализированные области памяти содержат данные, которые могут изменяться в процессе выполнения программного кода. Эти данные, в отличие от программного кода и констант, должны находиться в ОЗУ. Эти области памяти могут модифицироваться и обновляться, как это происходит в языках высокого уровня при вычислении математических формул. Каждая переменная объявляется директивой, чтобы зарезервировать память, содержащую ее значение. В соответствии с их определением, им не присваивается какое-либо значение, а изменить их может только работающая программа.
Процесс компоновки кода состоит из трех шагов:
Определение различных областей памяти (встроенная SARAM, Flash, внешняя память)
Описание распределения секций по областям памяти
Запуск компоновщика в процессе сборки (build) или пересборки (rebuild)
Командный Файл Компоновщика (.cmd)
Компоновщик объединяет секции из всех входных файлов, определяя память каждой секции исходя из ее длины и положения определяемого командами MEMORY и SECTIONS в командном файле компоновщика.
Область команды MEMORY описывает конфигурацию памяти процессорной системы для компоновщика.
Формат описания следующий:
Name: origin = 0x????, length = 0x????
Например, если разместить 128К Flash-памяти начиная с адреса 0x3D8000, то содержимое файла будет следующим:
MEMORY
{
FLASH: origin = 0x3D8000, length = 0x20000
}
Таким же образом определяются другие сегменты памяти. Если определить M0SARAM и M1SARAM, то это будет записано как:
MEMORY
{
M0SARAM: origin = 0x000000, length = 0x0400
M1SARAM: origin = 0x000400, length = 0x0400
}
Микроконтроллер имеет два типа памяти: память программ и память данных (Гарвардская архитектура). Поэтому описание каждого типа памяти должно быть раздельно. Компоновщик использует следующий синтаксис для их описания:
Страница компоновщика |
Определение Texas Instruments |
Page 0 |
Program (память программ) |
Page 1 |
Data(память данных) |
Командный файл будет следующим:
MEMORY
{
PAGE 0: /* Память программ */
FLASH: origin = 0x3D8000, length = 0x20000
PAGE 1: /* Память данных */
M0SARAM: origin = 0x000000, length = 0x0400
M1SARAM: origin = 0x000400, length = 0x0400
}
Директива SECTIONS определяет, как будут распределены секции в описанной памяти. Следующий код используется для связи секций с памятью определенной в предыдущем примере:
SECTIONS
{
.text:> FLASH PAGE 0
.ebss:> M0SARAM PAGE 1
.cinit:> FLASH PAGE 0
.stack:> M1SARAM PAGE 1
}
Компоновщик будет собирать все кодовые секции из всех файлов проекта вместе. Также он поступает с остальными секциями.
Начиная с первой секции, компоновщик поместит их в указанный сегмент памяти.
MEMORY
{
PAGE 0: /* Память программ */
FLASH: origin = 0x3D8000, length = 0x20000
PAGE 1: /* Память данных */
M0SARAM: origin = 0x000000, length = 0x0400
M1SARAM: origin = 0x000400, length = 0x0400
}
SECTIONS
{
.text:> FLASH PAGE 0
.ebss:> M0SARAM PAGE 1
.cinit:> FLASH PAGE 0
.stack:> M1SARAM PAGE 1
}
Карта памяти для TMS320VC5510
Все 16M байты памяти адресуемы как пространство программ или данных (рисунок 3.7). Когда ЦП использует пространство программ для чтения программного кода из памяти, он применяет адреса в 24 бита для обращения к байтам. Когда программа получает доступ к пространству данных, она использует адреса в 23 бита для обращения к 16 - разрядным словам. В обоих случаях шины адреса переносят значения в 24 бита, но в течение доступа к пространству данных, младший бит на шине адреса приравнивается к 0.
Пространство данных делится на 128 основных страниц данных (с 0 по 127). Каждая основная страница данных имеет 64К адресов. Инструкция, ссылающаяся на основную страницу данных, объединяет 7- разрядную страницу данных с 16 - разрядным офсетом.
На странице данных 0 первые 96 адресов (00 0000h-00 005Fh) зарезервированы под регистры, отображенные в карте памяти (MMR). Существует соответствующий блок из 192-х адресов (00 0000h-00 00BFh) в пространстве программ. Не рекомендуется хранить (запоминать) программный код в пространстве памяти.
Для того, чтобы посмотреть, как адреса распределяются между внутренней памятью и внешней памятью, и, чтобы получить информацию о внутренней памяти, обратитесь к технической документации вашего C55x DSP в частности SPRU371D (перевод).
Рисунок 3.7 – Карта памяти TMS320VC5510.
Обращение к памяти процессора может осуществляться по адресам. Аппаратно доступ к блокам, описанным в таблице 3.2, может осуществляться параллельно. Т.е. два доступа за один цикл (два чтения, две записи или чтение и запись). DARAM - Dual-Access RAM (Память с двойным доступом).
Таблица 3.2 – Пространство памяти DARAM
Внутри кристалла также имеются области памяти с одиночным доступом (SARAM). В таблице 3.3 обозначено деление этих областей по адресам.
Таблица 3.3 – Пространство памяти SARAM
В TMS320VC5510 есть вектор прерываний, который обслуживает все внутренние и внешние прерывания. Пространство памяти отведенное вектору прерывания представлено в таблице 3.4.
Таблица 3.4 – Пространство памяти SARAM