Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ivannikova.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.06 Mб
Скачать

Тема 2.2.Адресное пространство мк msp430

IAR C Compiler

Для микроконтроллеров фирмы Microchip компилятор доступен для серии PIC18. Эта фирма производит среду разработки IAR Embedded Workbench, позволяющую производить написание программ на С, С++ и ассемблере. В состав среды разработки входит также линкер, менеджер управления библиотекой подпрограмм, менеджер управления проектами и C-SPY отладчик. Компилятор имеет средства для оптимизации выходного кода по скорости выполнения и по размеру сгенерированного кода. Среда разработки предназначена для работы в Windows 98SE/ME/NT4/2000/XP. Если есть необходимость применения компилятора совместно с MPLAB IDE. Компилятор поддерживает стандарт ISO/ANSI C/C++. Для С++ компилятора поддерживается стандартная библиотека шаблонов STL. В среде разработки можно создавать несколько проектов под единое рабочее место, как в Visual C++. Список поддерживаемых типов данных можно посмотреть в таблице 1.

Тип данных

Размер бит

bool

8

char

8

short

16

int

16

long

32

float

32

double

32

long double

32

Hi-Tech PICC Compiler

 Следующий рассматриваемый компилятор - это Hi-Tech PICC. Также как и IAR, он может компилировать код под микроконтроллеры разных фирм производителей. Компилятор выпускается под несколько операционных систем, кроме Windows есть компиляторы под Linux и Mac OS X. Также как и компилятор от IAR, это коммерческий компилятор, но есть и облегченная версия доступная для скачивания с сайта - HI-TECH PICC Lite. Компилятор имеет свою среду разработки HPDPIC работающую под MS-DOS. Среда разработки позволяет писать, компилировать и отлаживать программы. Имеется несколько дополнительных утилит: калькулятор - конвертер чисел, таблица  символов ASCII. Сам компилятор поддерживает несколько видов оптимизаций: глобальная, ассемблерная и локальная. При использовании глобальной оптимизации можно выставить ее уровень от 1 до 9 в порядке ее увеличения. Сгенерированный код можно сохранить в виде нескольких форматов: Motorola S, Intel HEX, бинарном виде, UBROF, Tektronix HEX, Intel OMF-51, американский тип HEX, Bytecraft COD, расширенный OMF-51, либо в виде библиотеки. Для интегрирования в среду разработки MPLAB IDE требуется специальный плагин, который можно найти на сайте фирмы Microchip. Вместе с самим компилятором поставляется несколько примеров для работы со встроенным АЦП, есть пример bootloader`a для PIC16F87x, работа с I2C, прерываниями, LCD, несколько простых примеров типа метронома, демонстрационная программа для PICDEM 2 PLUS DEMO BOARD, работа с USART и т.д. Компилятор поддерживает классические функции С. Список поддерживаемых типов данных можно посмотреть в таблице 2.

Тип данных

Размер бит

bit

1

char

8

short

16

int

16

long

32

float

24

double

24 - 32

CCS C Compiler

Следующий рассматриваемый компилятор для микроконтроллеров Microchip это CCS C Compiler. Это также коммерческий компилятор, имеющий свою среду разработки CCS IDE. Он поддерживает большое количество микроконтроллеров серии PICmicro, а также микроконтроллеры фирмы Scenix. Компилятор состоит из нескольких модулей, поддерживающих свои семейства микроконтроллеров: для 12 - разрядных микроконтроллеров используется PCB, для 14 - разрядных - PCM, для 16 и 18 - разрядных - PCH. Выбор соответствующего компилятора происходит при компиляции, указанием соответствующих параметров для файла CCSC.exe. Интеграция в среду разработки MPLAB IDE происходит при использовании специального плагина, доступного на официальном сайте фирмы. Кроме коммерческого компилятора доступна для скачивания демо-версия, имеющая ограничения на работу в течение 30 дней. Она поддерживает работу с несколькими микроконтроллерами: PIC16F877, PIC16C544 и PIC18F458. Размер получаемого кода ограничен в 2 Кб. Кроме этого не работают некоторые функции: нельзя воспользоваться просмотром Datasheets из программы, нет возможности редактировать базу данных микроконтроллеров, hex - преобразователь работает при использовании отладчика, монитор RS-232 не работает.

Кроме стандартных для С функций есть много специфичных для данного компилятора: это поддержка RS-232, I2C, работа с АЦП, управление состоянием портов ввода/вывода, работа с CCP, несколько видов задержек, управления состоянием микроконтроллера и т.д. Список поддерживаемых типов данных можно посмотреть в таблице 3. 

Тип данных

Размер бит

int1

1

int8

8

int16

16

int32

32

char

8

float

32

short

1

Int

8

long

16

double

Не поддерживается

CC5X С compiler

Следующий рассматриваемый компилятор создан в Германии - это CC5x . Как и все предыдущие компиляторы он является платным. Собственной среды разработки он не имеет, интегрируется очень просто в MPLAB IDE, для работы с ним необходимо указать путь расположения файла компилятора. Доступ к настройкам параметров компиляции осуществляется с помощью командной строки, поддерживает следующие версии Windows: 98SE/ME/NT4/2000/XP. Для работы в Linux придется использовать эмулятор dosemu, запускать MS-DOS и после этого использовать компилятор как обычно. Поддерживает 12, 14, 16 битные версии микроконтроллеров PIC, есть возможно компилировать программы для 24-битных микроконтроллеров dsPIC. Кроме микроконтроллеров Microchip, поддерживает микроконтроллеры Scenix SX и Holtek HT.  Кроме коммерческой версии есть бесплатная версия с некоторыми ограничениями: поддерживаются только 1024 инструкции в любом модуле С, некоторые модули нельзя будет использовать при компиляции программы, размер переменных типа signed, unsigned ограничен 16 битами, переменными типа float 24 битами, при генерации генерируется компактный код, но полная оптимизация не поддерживается. Кроме этого соответственно никакая техническая поддержка не осуществляется. С самим компилятором поставляются несколько файлов для работы с интерфейсами I2C, USART, пример для работы с прерываниями, пример деления 16 битной переменной на 8 битную выполняющуюся за 97 мкс, при частоте работы микроконтроллера в 4 МГц. Единственным плюсом этого компилятора является хорошая поддержка операций с плавающей запятой. Список поддерживаемых типов данных коммерческого компилятора можно посмотреть в таблице 4. 

Тип данных

Размер бит

bit

1

char

8

int

8

Int16

16

Int24

24

Int32

32

Float16

16

float, float24

24

double, float32

32

CC8E C Compiler

Этот компилятор той же фирмы, что и CC5x, но предназначен для использования совместно с микроконтроллерами PIC18. Также как и предыдущий компилятор имеет две версии: коммерческую и бесплатную. Бесплатная версия имеет следующие ограничения: поддерживаются только 1024 инструкции в любом модуле С, размер используемых переменных может быть 1, 8, 16 и 24 бита, поддерживается полная оптимизация кода. Техническая поддержка не осуществляется.  Установка в MPLAB IDE осуществляется также как и CC5x. С самим компилятором поставляется несколько демонстрационных файлов. Из возможностей компилятора стоит отметить полную поддержку всех инструкций микроконтроллеров старшего семейства, поддержку таблиц и структур более 256 байт, поддержку до 16 банков RAM, генерирует компактный код, поддерживает оптимизацию. Список поддерживаемых типов данных можно посмотреть в таблице 5. 

Тип данных

Размер бит

bit

1

char

8

int

8

Int16

16

Int24

24

Int32

32

Float16

16

float, float24

24

double, float32

32

MPC C Compiler

Следующий коммерческий компилятор - это MPC C Compiler фирмы Byte Craft Limited. Этот компилятор поддерживает несколько типов микроконтроллеров: MC68HC08, MC68HC05, Scenix, National COP8, Cypress M8, Freescale eTPU, Microchip PIC12/14/16/17. Компилятор имеет свою среду разработки Byte Craft IDE. Среда разработки имеет классический интерфейс, возможность подсветки синтаксиса и компиляции, но не имеет своего симулятора, но есть возможность использовать сторонние эмуляторы: Microchip PICMASTER, ICE 2000, Advanced Transdata, Tech-Tools Mathias Clearview. Для интеграции в MPLAB IDE используется специальный плагин, при компиляции из-под MPLAB появляется возможность использовать штатный отладчик MPLAB SIM.  Кроме коммерческой версии компилятора существует демонстрационная версия, имеющая некоторые ограничения в работе: размер генерируемого кода ограничен в 2 Кб, библиотечные С файлы не включаются в проект, генерируется только ассемблерный листинг. Компилятор поддерживает классический стандарт языка ISO/ANSI C. Также он поддерживает оптимизацию кода, при умножении двух 16 - ти битных числа включается поддержка 32 битного результата. Из дополнительных возможностей стоит отметить поддержку сжатия 7-ми битных символов ASCII, позволяющее уменьшить размер потребляемой памяти. Сам компилятор при помощи директив LOCAL и SPECIAL поддерживает расширенное управление памятью для микроконтроллеров старшего семейства. Директива LOCAL позволяет максимально использовать память данных RAM для распределения локальных переменных, дающее возможность повторно использовать имеющуюся память RAM. Директива SPECIAL дает возможность распределять переменные в любом виде памяти, внешней или внутренней. Список поддерживаемых типов данных можно посмотреть в таблице 6. 

Тип данных

Размер бит

_Bol

1

bits

8

char

8

int

8

int8

8

int16

16

int24

24

int32

32

short

8

long

16

float

32

float24

24

float32

32

Microchip C17, C18, C30

Следующие рассматриваемые компиляторы разработаны самим разработчиком микроконтроллеров фирмой Microchip . Компиляторы MPLAB C17, С18, С30 разработаны с поддержкой стандарта ISO/ANSI C. Компилятор С17 предназначен для создания программ для микроконтроллеров семейства PIC17CXXX. Компилятор С18 - для PIC18CXXX, С30 - для dsPIC. Каждый из этих компиляторов легко интегрируются в среду разработки Microchip MPLAB IDE, поддерживают отладку при помощи MPLAB SIM и MPLAB ICE. Библиотека, включенная в состав компилятора С17 и С18, содержит код для работы со всеми имеющимися на борту микроконтроллера модулями: АЦП, SPI, I2C, USART, CCP, LCD, таймерами, прерываниями, управление памятью и строками и т.д. Компиляторы С17, С18 запускаются с командной строки, поддерживаемые операционные системы: MS-DOS, Windows 95, Windows NT. О возможности работы компиляторов под другими операционными системами информации нет, скорее всего, эти компиляторы могут работать там, где может работать сама среда разработки MPLAB IDE. Компилятор С30 позволяет эффективно использовать основные регистры, поддерживает сложные способы адресации, есть поддержка много разрядных сдвиговых операций и эффективное использование сравнения для signed/unsigned переменных. Демонстрационные версии компиляторов доступны на официальном сайте фирмы, время работы ограничено 60-ю днями. Список поддерживаемых типов данных компилятора С17 и С18 можно посмотреть в таблицах.

Microchip C17 C Compiler

 

Тип данных

Размер бит

char

8

short

16

int

16

long

32

Float

40

Microchip C18 C Compiler

 

Тип данных

Размер бит

char

8

short

16

int

16

long

32

short long

24

float

32

double

32

SourceBoost

Следующий рассматриваемый компилятор или лучше сказать, группа компиляторов, разработана одним из наших соотечественников Павлом Барановым. Эта программа представляет собой коммерческую среду разработки для нескольких языков программирования: С, С++, Pascal, Basic и Ассемблер. Данная среда позволяет разрабатывать код для микроконтроллеров фирмы Microchip PIC и Ubicom Scenix. Все это разнообразие языков программирования объединяется при помощи единой среды разработки, позволяющей выбирать язык программирования, писать программу и отлаживать ее. Для программирования микроконтроллера можно подключить внешний программатор, расположение которого задается в настройках. Интерфейс программы оформлен в современном виде, есть подсветка синтаксиса, позволяющая настроить выделение элементов под себя, есть неплохая программа, позволяющая связываться по интерфейсу RS-232. Среда разработки поддерживает плагины, что я считаю немаловажным. Думаю, все знают среду разработки MPLAB IDE, и думаю, у многих программистов возникало желание исправить или добавить что-то свое в среду разработки. В данном случае это можно сделать своими руками, т.к. примеры плагинов представлены в папке SourceBoost\plugin_examples\. Имеется возможность использовать компилятор BoostC C со средой разработки MPLAB IDE. Для этого в папке SourceBoost\mplab\ находится описание и необходимые файлы для интеграции со средой. Список поддерживаемых типов данных можно посмотреть в таблице 9. 

Тип данных

Размер бит

Bit

1

Bool

1

char

8

short

16

int

16

long

32

SDCC Следующий компилятор в рассматриваемом обзоре распространяется с открытым исходным текстом, т.е. это бесплатный компилятор. Найти его можно по адресу. Данный компилятор разработан для 8-ми битных микроконтроллеров. Список поддерживаемых микроконтроллеров достаточно велик для бесплатного проекта: микроконтроллеры на основе ядра MSC51, DS80C390, HC08, Z80, Microchip PIC, Atmel AVR. Огорчает только то, что микроконтроллеры PIC не поддерживаются в полном объеме: при компиляции генерируется ассемблерный листинг, который можно дальше компилировать при помощи стандартного ассемблера MPLAB MPASM.exe. Будем надеяться, что в дальнейшем разработчики доведут до ума свой компилятор и добавят полноценную генерацию исходного текста на С в выходной код PIC микроконтроллера. На официальном сайте можно найти документацию по компилятору и скачать либо готовый файл установки, либо исходный текст компилятора, который в дальнейшем можно откомпилировать под нужную операционную систему. Таким образом, этот компилятор является кросс платформенным средством разработки для 8-ми битных микроконтроллеров, он также поддерживает работу с 14 и 16 разрядными PIC-микроконтроллерами среднего и старшего семейства. Своей среды разработки он не имеет, поэтому компиляция происходит из-под командной строки. Компилятор также имеет возможность оптимизировать код.

Пример использования динамических переменных

#include <iostream>

using namespace std;

int main()

{

int *a = new int; // Объявление указателя для переменной типа int

int *b = new int(5); // Инициализация указателя

*a = 10;

*b = *a + *b;

cout << "b is " << *b << endl;

delete b;

delete a;

return 0;

}

Пример освобождения памяти

#include <iostream>

using namespace std;

int main()

{

// Выделение памяти

int *a = new int;

int *b = new int;

float *c = new float;

// ... Любые действия программы

// Освобождение выделенной памяти

delete c;

delete b;

delete a;

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]