Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Мартин Т. -> "Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс" -> 14

Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс - Мартин Т.

Мартин Т. Микроконтроллеры ARM7. Cемейство LPC2000 компании Philips Вводный курс — М.: Додэка 21, 2006. — 240 c.
ISBN 5-94120-104-4
Скачать (прямая ссылка): nicrokontrolleriarm7semeystvo2006.djvu
Предыдущая << 1 .. 8 9 10 11 12 13 < 14 > 15 16 17 18 19 20 .. 86 >> Следующая

; Supervisor Mode 0x0000 0004
Abort Mode 0x0000 0004
i~ Fast Interrupt Mode 0x0000 0004
Interrupt Mode 0x0000 0080
; User/System Mode 0x0000 0400
І2 PLL Setup F
S MAM Setup F
g External Memory Controller (EMC) F
Рис. 2.1. Окно редактора
Как и в случае таблицы векторов прерываний, задание размера стеков ложится на ваши плечи. В принципе, это можно сделать, непосредственно изменяя код стартового модуля, однако в составе ИСР предусмотрен специализированный редактор, позволяющий управлять параметрами стеков в графическом виде. Более того, этот графический редактор позволяет конфигурировать ряд системных периферийных модулей LPC2000. Позже мы рассмотрим этот вопрос более подробно, но не забывайте, что их можно конфигурировать путем непосредственного изменения стартового кода.
Упражнение 2. Стартовый код
Во втором упражнении рассматривается процесс выделения памяти под каждый из стеков процессора.
Взаимодействие кода ARM и THUMB
Один из наиболее важных вопросов, которые должны быть решены в нашей программе, — взаимодействие между наборами команд ARM и THUMB. Для обеспечения такого взаимодействия компанией ARM был разработан стандарт «ARM THUMB Procedure Call Standard» (ATPCS). Помимо всего прочего, этот стандарт определяет, каким образом производится вызов одних функций из других, порядок передачи параметров и использование стеков (Рис. 2.2). При использовании стандарта APCS к коду функций добавляется своеобразная «обертка» на языке ассемблера, благодаря которой обеспечивается поддержка
Взаимодействие кода ARM и THUMB
различных возможностей компилятора. Чем больше этих возможностей вы используете, тем больше получается количество дополнительного кода. Теоретически, стандарт APCS обеспечивает совместную работу кода, созданного различными пакетами программ. То есть вы можете взять библиотеку, скомпилированную каким-либо компилятором, и использовать ее совместно с пакетом компании Keil.
Передаваемые параметры
Локальные переменные
Рабочий регистр Регистр стека Регистр связи Счетчик команд


ш ^ Vw 7 'v
¦ШИ
Up
7Ш "-у;
/:

РЯ $тт-
Стандарт APCS определяет порядок использования компилятором пользовательских регистров ЦПУ. Соблюдение этого стандарта обеспечивает взаимодействие между инструментальными средствами различных производителей \__________________________________
Рис. 2.2. Порядок использования пользовательских регистров
Согласно стандарту APCS регистровый файл делится на несколько областей. Регистры R0...R3 используются для передачи параметров в подпрограммы. Если необходимо передать больше 16 байт, то остальные параметры передаются через стек. Локальные переменные размещаются в регистрах R4...R11, а регистр R12 резервируется для хранения адреса промежуточного интерфейсного кода. В компиляторе Keil весь код создается с учетом дальнейшего взаимодействия, а набором команд по умолчанию является набор команд THUMB. Таким образом, вся программа будет скомпилирована с использованием команд THUMB (за исключением обработчиков прерываний, для которых по умолчанию используется набор команд ARM). Такое поведение компилятора можно изменить. Вызовите через меню Options for Target диалог установки параметров проекта (Рис. 2.3) и на вкладке С снимите флажок Use THUMB code. В результате набором команд, используемым по умолчанию, станет набор команд ARM.
Кроме того, программист может явно указать, с использованием какого набора команд должна быть скомпилирована та или иная функция. Для этого предназначены две директивы #pragma ARM и #pragma THUMB, использование которых показано ниже. В этом примере основная функция компилируется с использова-
Глава 2. Разработка программного обеспечения
Options for Target 'МАМ'
Device) Target] Output] Listing С j Asm ) LAMiscj LA Locate] Debug j Utilities j r Preprocessor Symbols - .........................
Define: j Undefine: і
Code Optimization
Level: |6. Common tail merging Emphasis:
Favor code size
P Use Thumb Mode
I*/ Alias checking on pointer accesses
Warnings: JWarninglevel 2 ! W treat plain char as 'unsigned char'
Г ' : :
Include
Path
Misc
Controls
Compiler
control
string
THUMB OPTIMIZE (SIZE) BROWSE DEBUG TABS (4)
OK
Отмена
Defaults
Справка
Рис. 2.3. Установка параметров проекта
ниєм набора команд ARM и вызывает функцию THUMB_function (как легко догадаться, последняя скомпилирована с использованием 16-битного набора команд THUMB).
#pragma ARM int main(void)
{
while(1)
{
THUMB_function();
}
#pragma THUMB
void THUMB_function(void)
// Переключаемся на набор команд ARM
// Вызываем THUMB-функцию
// Переключаемся на набор команд THUMB
unsigned long і,delay;
for (і = 0x00010000;i < 0x01000000 ;i = i«l) // Мигалка
{
for (delay = 0;delay<0x000100000;delay++) // Простой цикл задержки
}
IOSETl = і;
// Указываем на следующий СИД
40
Библиотека STDIO
Помимо этого, любую функцию можно описать как ARM- или THUMB-функцию, используя следующие объявления прототипа функции:
int ARM_FUNCTION ( int my_var) _ARM
{
}
int THUMB_FUNCTION ( int my_var) _______THUMB
Предыдущая << 1 .. 8 9 10 11 12 13 < 14 > 15 16 17 18 19 20 .. 86 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.