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

Глава 6. Дополнительные типы указателей Си

Выше определена внешняя память размера 1024 байта, работающая без выборки кристалла. Компилятор поддерживает только одну PMP память, если не используется выбор кристалла:

extern int PMP_bank1 __attribute__((space(pmp(size(1024),cs(1)))));

extern int PMP_bank2 __attribute__((space(pmp(size(2048),cs(2)))));

Вышеприведенный PMP_bank1 будет выбран с помощью 1-го вывода выбора кристалла (14-й вывод адреса будет активизироваться при доступе к переменным в этом банке). PMP_bank2 будет выбран с помощью 2-го вывода выборки кристалла (будет активизироваться 15-й вывод адреса).

 

 

 

.

 

Заметьте, что при использовании сигналов выбора кристалла максимальный объем

 

 

A

 

 

памяти — 16Kb на банк. Рекомендуется наличие этой декларации в общем файле

 

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

 

6.3.3. Определение переменных в пространстве PMP

 

Атрибут пространства pmp также используется, чтобы назначать индивидуальные

 

переменные в пространстве. Это требует присутствия декларации пространства

 

памяти. При заданных как в предыдущем подразделе декларациях, могут быть

 

сделаны следующие объявления:

 

 

__pmp__ int external_array[256]

 

 

__attribute__((space(pmp(external_PMP_memory))));

 

external_array будет

расположен в ранее объявленной памяти

 

external_PMP_memory. Если есть только одна PMP память, и выборка кристалла

 

не используется, можно пропуститьWilsonявную ссылку на память. Это вполне допустимо,

 

однако, повсеместное явное описание памяти позволяет создавать код, который

 

легче поддерживать.

 

 

 

Заметьте, что, подобно управляющим указателям PSV, мы описали переменную с

 

новым типом квалификатораby

__pmp__. Применительно к переменной или указателю

 

осуществляетсяTranslatedдоступ к этой памяти. Предлагается механизм, посредством

 

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

 

доступа через PMP периферию.

 

 

Теперь, когда переменная объявлена, она может быть доступна средствами

 

обычного синтаксиса Cи. Компилятор сгенерирует код для правильной связи с PMP

 

периферией.

 

 

6.4.

Внешние указатели

 

 

 

Не все 16-битовые устройства Microchip имеют PMP периферию, или не всякая

 

память пригодна для подключения к параллельному порту (например,

 

последовательная память, поставленная Microchip). Инструментарий предлагает

 

более общий интерфейс для любой внешней памяти, хотя, как будет видно, память

 

не должна быть внешней.

 

 

Подобно пространству памяти PMP, инструментарий требует информации о подключенной внешней памяти. Однако, в отличие от PMP, компилятор не знает как

которого приложение может определить, как обращаться к такой памяти.

Внешние указатели (и их адреса) занимают 32 бита. Максимальная подключаемая память — 64K (16 битов); другие 16 битов используются для однозначной идентификации памяти. Всего 64K (16 битов) таких запоминающих устройств может быть подключено (теоретически).

Чтобы использовать эту возможность, необходимы:

Объявление нового пространства памяти

Определение переменных во внешнем пространстве

Определение способа доступа к пространству памяти

И как пример:

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. 6-5

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