Code Composer Studio

Содержание

Слайд 4

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

Файл конфигураций проекта содержит:
Имена файлов, содержащих исходные тексты программы и файлы

Создание проекта Файл конфигураций проекта содержит: Имена файлов, содержащих исходные тексты программы
объектных библиотек
Настройки инструментов генерации исполняемого кода
Зависимости вхождения файлов

Слайд 9

Добавление файлов в проект

Добавление файлов в проект

Слайд 13

Типы поддерживаемых файлов

*.с, *.ссс – файлы, использующие правила языка С
*срр, *.сс, *.схх

Типы поддерживаемых файлов *.с, *.ссс – файлы, использующие правила языка С *срр,
– файлы, использующие правила языка С++
*.asm - файлы, использующие правила языка Assembler
*.lib – файлы объектных библиотек
*.cmd – файл управления линкером

Слайд 17

Конфигурация проекта

Конфигурация проекта

Слайд 22

Текстовый редактор

Текстовый редактор

Слайд 36

Инструментальные средства для генерации кода
Установка опций для проекта и файла

Инструментальные средства для генерации кода Установка опций для проекта и файла

Слайд 38

Вызов утилиты компиляции

cl2000 -v28 [options] [filenames] [--run_linker [link_options] object files]]

cl2000 -v28 –

Вызов утилиты компиляции cl2000 -v28 [options] [filenames] [--run_linker [link_options] object files]] cl2000
команда запуска компилятора и ассемблера.
options – настройки, влияющие на процесс компиляции входных файлов.
filenames – один или несколько файлов созданных на языке C/C++, ассемблере или объектных файлов.
--run_linker настройки с которыми запускается линковщик
link_options – настройки управления процессом линкования
object files – имя дополнительного объектного файла для процесса линкования.

Слайд 43

Построение проекта
в CCS

Построение проекта в CCS

Слайд 44

инструменты компиляции проекта

инструменты компиляции проекта

Слайд 51

1 Обзор архитектуры
2 Описание CPU
3 Прерывание и перезапуск
4 Конвейер
5 Режимы адресации
6 Команды

1 Обзор архитектуры 2 Описание CPU 3 Прерывание и перезапуск 4 Конвейер
ассемблера
7 Особенности эмуляции
8 Приложения
9 Словарь

Слайд 52

Режимы адресации

Режим прямой адресации
Режим стековой адресации
Режим косвенной адресации
Режим регистровой адресации

Режимы адресации Режим прямой адресации Режим стековой адресации Режим косвенной адресации Режим регистровой адресации

Слайд 53

Режим прямой адресации

Пример
MOVW DP,#VarA ; загружаем регистр DP значением страницы из переменной

Режим прямой адресации Пример MOVW DP,#VarA ; загружаем регистр DP значением страницы
VarA
ADD AL,@VarA ; складываем значение из области памяти со смещением VarA, ;содержащимся в относительно DP с значением в регистре AL
MOV @VarB,AL ; Сохраняем результат в область памяти со смещением VarB

Слайд 54

Режим стековой адресации

Пример
MOV *SP++,AL ; сохраняем содержимое 16-ти битного регистра AL в

Режим стековой адресации Пример MOV *SP++,AL ; сохраняем содержимое 16-ти битного регистра
; верхней части стека Push
MOVL *SP++,P ; сохраняем содержимое 32-ти битного регистра P в ; верхней части стека

Слайд 55

Режим косвенной адресации

Пример
MOVL XAR2,#Array1 ; Load XAR2 with start address of Array1
MOVL XAR3,#Array2 ;

Режим косвенной адресации Пример MOVL XAR2,#Array1 ; Load XAR2 with start address
Load XAR3 with start address of Array2
MOV @AR0,#N−1 ; Load AR0 with loop count N
Loop:
MOVL ACC,*XAR2++ ; Load ACC with location pointed to by XAR2,
; post−increment XAR2
MOVL *XAR3++,ACC ; Store ACC into location pointed to by XAR3,
; post−increment XAR3
BANZ Loop,AR0−− ; Loop until AR0 == 0, post−decrement AR0

Слайд 56

Режим регистровой адресации

Пример
MOVL XAR6,@ACC ; Load XAR6 with contents of ACC
MOVL @ACC,XT

Режим регистровой адресации Пример MOVL XAR6,@ACC ; Load XAR6 with contents of
; Load ACC with contents of XT register
ADDL ACC,@ACC ; ACC = ACC + ACC

Слайд 57

Типы ассемблерных команд

Арифметические операции:
сложение и вычитание – ADDB, ADD, SUBB, SBRK, ADDF32,

Типы ассемблерных команд Арифметические операции: сложение и вычитание – ADDB, ADD, SUBB,
SUBF32
умножение – MPYB, MPYU, SQRA, IMPYL, MPYF32
логические операции – AND, OR, XOR, NOT
инкремент и декремент – DEC, INC
операции сдвига – LSL, LSR, ASR, SFR
Операции работы с памятью
операции сохранения – MOV, MOVB, MOVW, MOVZ
операции работы со стеком – PUSH, POP
чтение и запись – PREAD, PWRITE
Операции вызова – LC, FFC
Операции цикла – LOOPZ, RPT
Операции условного и безусловного перехода – LB, B, BF
Операции с регистрами – EINT, DINT,
Операции преобразования типов данных – UI32TOF32, I16TOF32, F32TOUI32

Слайд 62

1 Введение в объектные модули
2 Описание Ассемблера
3 Директивы Ассемблера
4 Макросы
5 Линкование
6 Листеры
7

1 Введение в объектные модули 2 Описание Ассемблера 3 Директивы Ассемблера 4
Преобразование в Hex код
8 Ассемблер в Заголовочных файлах
9 Словарь

Слайд 63

Инструменты ассемблирования

- Ассемблер – транслирует файлы, написанные на языке ассемблера, в

Инструменты ассемблирования - Ассемблер – транслирует файлы, написанные на языке ассемблера, в
объектные файлы на машинном языке;
- Архиватор – собирает из группы файлов единый архивный файл, называемый библиотекой;
- Линкер – объединяет объектные файлы в один исполняемый объектный модуль (COFF-файл);
- Формирователь листингов с абсолютными адресами;
- Формирователь таблицы перекрестных ссылок;
- Преобразователь COFF формата в ASCII-hex и другие форматы.

Слайд 64

Формат объектного файла

Секция – это блок кода или данных который занимает пространство

Формат объектного файла Секция – это блок кода или данных который занимает
в памяти контроллера и является наименьшей единицей объектного файла.
Основные секции:
.text section– содержит исполняемый код
.data section– содержит инициализированные данные
.bss section – зарезервированное пространство под неинициализируемые переменные

Основные типы секций:
Инициализируемые - .text, .data и т д.
Неинициализируемые - .bss, .ebss и.т.д

Слайд 65

Директивы определения секции

Основные директивы создания секций
Неинициализируемые секции
.bss
.usect
Инициализируемые секции
.text

Директивы определения секции Основные директивы создания секций Неинициализируемые секции .bss .usect Инициализируемые
.data
.sect

Пример создания секции
.bss symbol, size in words [, blocking flag] [, alignment flag]
symbol .usect ”section name ”, size in words [, blocking flag] [, alignment flag]

Слайд 66

Командный файл линковщика

Директива MEMORY

Пример

Командный файл линковщика Директива MEMORY Пример

Слайд 67

Командный файл линковщика

Директива SECTION

Свойства:
Область размещения секции:
load =(>) ОБЛАСТЬ ПАМЯТИ
> ОБЛАСТЬ ПАМЯТИ
Область запуска

Командный файл линковщика Директива SECTION Свойства: Область размещения секции: load =(>) ОБЛАСТЬ
секции:
run =(>) ОБЛАСТЬ ПАМЯТИ
Входные секции
{Входные секции}

Пример

Слайд 68

Структура COFF - файла

Пример

Структура COFF - файла Пример

Слайд 69

Структура заголовка COFF - файла

– идентификатор версии файла

– количество секций в файле

Структура заголовка COFF - файла – идентификатор версии файла – количество секций
дата и время создания файла

– количество таблиц символов

– указатель на начальный адрес таблицы символов

– размер в байтах заголовка с настройками

– служебные флаги

– идентификатор устройства

Слайд 70

Структура дополнительного заголовка COFF - файла

– слово начала заголовка (0х0108)

– версия штампа

Структура дополнительного заголовка COFF - файла – слово начала заголовка (0х0108) –
размер в байтах исполняемого кода

– размер в байтах неинициализированных данных

– размер в байтах инициализированных данных

– точка входа

– стартовый адрес исполняемого кода

– стартовый адрес инициализированных данных

Слайд 71

Структура секционного заголовка COFF - файла

– идентификатор секции

– физический адрес секции

– размер

Структура секционного заголовка COFF - файла – идентификатор секции – физический адрес
в байтах исполняемого кода

– файловый указатель к начальным данным

– размер секции в байтах

– файловый указатель на точку входа

– число точек входа

– номер страницы памяти

– резерв

– резерв

– служебные флаги

– резерв

Слайд 72

Утилита преобразования объектного файла

hex2000.exe -i -romwidth 16 -o .\Release\MK_COI_release_ver1.hex
.\Release\MK_COI_release_ver1.out

Пример

Типы опций:
основные

Утилита преобразования объектного файла hex2000.exe -i -romwidth 16 -o .\Release\MK_COI_release_ver1.hex .\Release\MK_COI_release_ver1.out Пример
опции: -map – генерируется файл карты памяти
-о – определяется выходной файл
опции отображения:- fill – определяется значение для заполнения пустот
-image – устанавливается режим отображения
опции памяти: -memwidth – определяется разрядность памяти системы
-romwidth – устанавливается разрядность ПЗУ устройства
опции выходного формата: -a – формат ASCII-Hex
-i – формат Intel
-m – формат Motorola-S

Слайд 74

1 Использование компилятора
2 Оптимизация кода
3 Линкование С/С++ кода
4 Оптимизация после линкования
5 Реализация

1 Использование компилятора 2 Оптимизация кода 3 Линкование С/С++ кода 4 Оптимизация
С/С++ в 28х
6 Среда реального времени
7 Функции и библиотека для поддержки реального времени
8 Словарь

Слайд 75

Уровни оптимизации

Уровень оптимизации 0
производится упрощение графа управляющей логики программы
переменные размещаются в регистрах
исключается

Уровни оптимизации Уровень оптимизации 0 производится упрощение графа управляющей логики программы переменные
неиспользуемый код
упрощаются выражения и операторы
раскрывается вызов функций, объявленных inline
производится чередование циклов

Уровень оптимизации 1
производится локальное копирование/константное размножение
удаляются неиспользуемые присваивания
исключается локальные обобщенные выражения

Уровень оптимизации 2
производится оптимизация циклов
исключаются глобальные общие подвыражения
исключается глобальные неиспользуемые присваивания
производится разворачивание циклов

Уровень оптимизации 3
удаляются невызываемые функции
inline вызов маленьких функций
переупорядочивание деклараций в функциях; атрибуты вызываемой функции известны, когда вызов оптимизирован
распространяет аргументы в тела функций когда все вызовы передают ту же самую величину в той же позиции аргумента
упрощаются функции с возвращаемым значением, которое нигде не используется
определяются характеристики переменных на уровне файла
производится разворачивание циклов

Слайд 76

Компилятор поддерживает стандарты языка Международной организации стандартизации:
С -1989 года;
С++ - 1998 года

Компилятор поддерживает стандарты языка Международной организации стандартизации: С -1989 года; С++ - 1998 года

Слайд 77

Поддерживаемые типы данных

Поддерживаемые типы данных

Слайд 78

Размещение данных в памяти

Размещение данных

Пример

#pragma DATA_SECTION ( SysOpt, "my_data" ); struct NAVIGATION_DATA

Размещение данных в памяти Размещение данных Пример #pragma DATA_SECTION ( SysOpt, "my_data"
SysOpt;
#pragma DATA_SECTION ( dT, "my_data" ); float dT;
#pragma DATA_SECTION ( canbRxBuffer, "can_data" );
Uint16 canbRxBuffer [ CANB_RECEIVE_BUFFER_SIZE ];
Имя файла: Code-Composer-Studio-.pptx
Количество просмотров: 244
Количество скачиваний: 2