Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника Сторожок / MPLAB_C30_Руководство пользователя.pdf
Скачиваний:
161
Добавлен:
20.02.2016
Размер:
1.26 Mб
Скачать

Глава 4. Среда периода исполнения

ymemory - только для dsPIC30F/33F DSCs

Пространство данных Y. Переменные в пространстве данных Y доступны с помощью обычных операторов Си. Адресное пространство Y данных имеет специальное значение для DSP-ориентированных библиотек и команд ассемблера.

prog

 

 

Общее программное пространство, которое обычно резервируется для

 

 

исполняемого кода. Переменные в программном пространстве не могут быть

 

 

доступные с использованием обычных операторов Си. Доступ к ним должен быть

 

 

явно организован программистом, обычно с использованием inline команд

 

 

ассемблера для доступа к таблицам, или с использованием окна видимости

 

 

программного пространства.

 

 

 

A

.

 

 

 

auto_psv

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Управляемая

компилятором

область

 

 

 

 

в программном пространстве,

 

 

предназначенная для доступа через окно видимости программного пространства.

 

 

Переменные в этом пространстве могут быть прочитаны (но не записаны) с

 

 

использованием обычных операторов Си и должны быть пригодными к размещению

 

 

в пространстве максимальным размером 32К.

 

 

 

 

 

psv

 

 

 

 

 

 

 

 

 

 

Программное пространство, предназначенное для доступа через окно видимости

 

 

программного пространства. Переменные в пространстве PSV не управляются

 

 

компилятором и не могут быть доступны с использованием обычных операторов Си.

 

 

Доступ к ним

должен быть Wilsonявно организован программистом, обычно с

 

 

использованием inline команд ассемблера или с использованием окна видимости

 

 

программного пространства. Переменные в пространстве PSV могут быть доступны

 

 

с использованием однократной установки регистра PSVPAG.

 

 

eedata - только для dsPIC30F/dsPIC33Fby

 

 

 

 

 

 

Пространство данных EEPROM, область 16-битовой энергонезависимой памяти,

 

 

расположенный в старших адресах программной памяти. Переменные в

 

 

пространстве eedata не могут быть доступны с использованием обычных операторов

 

 

Си. Доступ к ним должен быть явно организован программистом, обычно с

 

 

использованием inline команд ассемблера для доступа к таблицам, или с

 

 

использованием окна видимости программного пространства.

 

 

dma - только для PIC24H и ds PIC33F

 

 

 

 

 

 

Память DMA. Переменные в DMA памяти могут быть доступные с использованием

 

 

обычных операторов Си и периферии DMA.

 

 

 

4.6.

Модели памяти

 

 

 

 

 

 

 

 

 

 

Компилятор поддерживает ряд моделей памяти. Имеются опции командной строки

 

 

для выбора оптимальной модели памяти для вашего приложения на основе

 

 

специфики используемой микросхемы устройства dsPIC и типа памяти.

 

 

Translated

 

 

 

 

 

 

 

 

ТАБЛИЦА 4-1. ОПЦИИ ВЫБОРА МОДЕЛИ ПАМЯТИ

 

 

 

 

 

 

 

 

 

 

 

 

Опция

 

Определение памяти

 

 

 

 

Описание

 

 

 

 

 

 

 

 

 

 

-msmall-data

 

До 8 Кб памяти

 

 

Разрешает использования аналогичных PIC18

 

 

 

 

данных. Умолчание

команд для доступа к памяти данных.

 

 

 

 

 

 

 

 

 

 

-msmall-scalar

 

До 8 Кб памяти

 

 

Разрешает использования аналогичных PIC18

 

 

 

 

 

 

команд для доступа к скалярным данным в

 

 

 

 

данных. Умолчание

 

 

 

 

 

 

памяти.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-mlarge-data

 

Более 8 Кб памяти

 

Использует косвенные ссылки на данные.

 

 

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. 4-3

16-битовый компилятор Си. Руководство

ТАБЛИЦА 4-1. (ПРОД-Е) ОПЦИИ ВЫБОРА МОДЕЛИ ПАМЯТИ

Опция

Определение памяти

Описание

 

 

 

-msmall-code

До 32 К слов памяти

Указатели функций не используют таблицу

 

переходов. Для вызова функций используется

 

программ. Умолчание

 

команда RCALL.

 

 

 

-mlarge-code

Более, чем 32 К слов

Указатели функций могут использовать

 

таблицу переходов. Для вызова функций

 

памяти программ.

 

используется команда CALL.

 

 

 

 

 

-mconst-in-data

Константы располо-

Значения копируются в память данных из

 

.

 

жены в памяти данных

программной памяти при средствами

 

 

стартового кода.

 

 

 

-mconst-in-code

Константы располо-

Значения доступны через окно видимости

 

жены в памяти

памяти программ (PSV).

 

программ. Умолчание.

A

 

Wilson

 

Опции командной строки применимы глобально ко всем компилируемым модулям. Для улучшения генерируемого кода переменные и функции могут быть выборочно объявлены near или far. Подробнее об индивидуальных установках для переменных и функций см. п. 2.3.1. «Определение атрибутов переменных» и п. 2.3.2. «Определение атрибутов функций».

4.6.1. Ближние и дальние данные

Если переменные располагаются в ближней секции данных, компилятор чаще имеет возможность генерации лучшего (более компактного) кода, чем если бы переменные там не располагались. Если все переменные приложения можно уместить в пределах 8Кбby ближних данных, то компилятор можно запросить размещение их там задав опцию командной строки по умолчанию -msmall-data при компиляции каждого модуля. Если объем данных всех скалярных типов

приложения.

(массивов и структур) меньше 8Кб, может быть использована опция по умолчанию -msmallTranslated-scalar. Ее запрашивают, чтобы компилятор организовал память так, чтобы именно скаляры располагались в секции ближних данных распределяемого

Если ни одна из этих глобальных опций не подходит, тогда возможны следующие альтернативы.

1. Возможно компилировать отдельные модули приложения с опциями командной строки -mlarge-data и -mlarge-scalar. В этом случае только переменные, используемые в таких модулях, будут располагаться в дальней области памяти. При использовании данной альтернативы следует обратить особое внимание на внешние переменные. Если переменная, используемая модулем, откомпилированным с такими опциями, определена как внешняя, то модуль, в котором она определена, также должен быть откомпилирован с такими опциями либо объявление или определение переменной должно быть снабжено атрибутом far.

2. Если использованы опции командной строки -mlarge-data и -mlarge-scalar, то отдельные переменные можно исключить из пространства данных far с помощью атрибута near.

3. Вместо использования опций командной строки, воздействующих на модуль целиком, можно поместить отдельные переменные в дальнюю область данных с помощью атрибута far.

Компоновщик выдаст сообщение об ошибке, если все ближние переменные не помещаются в ближайшие 8К пространства данных.

4.6.2. Ближний и дальний код

Ближние функции (находящиеся в пределах 32К слов вверх или вниз друг от друга) могут вызывать друг друга более эффективно, чем тех, расстояние до которых

DS51284H(ru) стр. 4-4

© 2008 Microchip Technology Inc.

Соседние файлы в папке Микропроцессорная техника Сторожок