реклама на сайте
подробности

 
 
> Таблица прерываний у SAM7
Twen
сообщение Feb 21 2012, 08:02
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Добрый день. Вот появилось несколько вопросов, буду благодарен если кто-то ответит.
Как я понимаю у SAM7 есть 32 источника прерываний и 8 уровней. Прерывание происходит таким образом, мы настраиваем регистры AIC_SVR1 to AIC_SVR31 - вписываем адреса обработчиков туда, потом, когда наступит прерывание ядро читает регистр AIC_IVR в котором находится адрес текущего прерывания, проц загружает адрес у регистр команд и выполняет прогру...с этом понятно. Не понятно о системных прервываниях, они вроде всегда подк. с источнику 1 из 32, а конкретнее по поводу reset. Его не нужно инициализировать, вроде? Я думал что адрес для reset обработчика забит постоянно у первом адресе пространства программы, например я компилю программу с картой памяти у которой указан начальный адрес 0x0020 2000 , то reset должен быть по адресу 0x0020 2000, по умолчанию, я думал, так как reset это точка входа в программу? Но я откомпилил и посмотрел карту памяти но нет, reset по другому адресу...Что будет находится в первых адресах, а именно в 0x0020 2000, если говорить о ОЗУ?

Вот кусок из карты памяти:
Обработчик по адресу 0x002025f4, а сам resetVector по 0x00202000, что-то я запутался в что такое resetVector - это выходит регистр, в котором записан адрес 0x002025f4 ?

resetHandler 0x002025f4 Code Gb board_cstartup_iar.o [1]
resetVector 0x00202000 Code Gb board_cstartup_iar.o [1]

Сообщение отредактировал Twen - Feb 21 2012, 08:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Twen
сообщение Feb 21 2012, 08:53
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 7-02-09
Пользователь №: 44 543



Смотрите , вот начало моего сsturtup-а:


/*
Exception vectors
*/
SECTION .vectors:CODE:NOROOT(2)

PUBLIC resetVector
PUBLIC irqHandler

EXTERN Undefined_Handler
EXTERN SWI_Handler
EXTERN Prefetch_Handler
EXTERN Abort_Handler
EXTERN FIQ_Handler



ARM


//------------------------------------------------------------------------
// Здесь я так понял мы указываем, что размещение будет по
//первому адресу карты памяти
//------------------------------------------------------------------------
__iar_init$$done: ; The interrupt vector is not needed
; until after copy initialization is done

//--------------------------------------------------------------------------------
// Вот здесь не понятно, здесь нету ветвления типо свича,
//начнется первая команда, например мы попадем у
//обработчик по ресету, а потом в случае
//прерыванию системному по неизвестной команде, как мы попадем
// у LDR pc, Undefined_Addr , нету же ветвления, всмыле
// нету такого, типа:
// switch (event) {
//case (reset): LDR pc, =resetHandler ;
//case (undef_adrr): LDR pc, Undefined_Addr ; Undefined instructions
//case (swi): LDR pc, SWI_Addr ; Software interrupt (SWI/SYS)
//}
//----------------------------------------------------------------------------------
resetVector:
; All default exception handlers (except reset) are
; defined as weak symbol definitions.
; If a handler is defined by the application it will take precedence.
LDR pc, =resetHandler ; Reset
LDR pc, Undefined_Addr ; Undefined instructions
LDR pc, SWI_Addr ; Software interrupt (SWI/SYS)
LDR pc, Prefetch_Addr ; Prefetch abort
LDR pc, Abort_Addr ; Data abort
B . ; RESERVED
LDR pc, =irqHandler ; IRQ
LDR pc, FIQ_Addr ; FIQ


//--------------------------------------------------------------------------------------
// Вот здесь я так понял идет объявление адресов векторов самого проц.
//по этой метке хранится адрес обработчика
//Команда DCD загружает в память адрес обработчика
//---------------------------------------------------------------------------------------
Undefined_Addr: DCD Undefined_Handler
SWI_Addr: DCD SWI_Handler
Prefetch_Addr: DCD Prefetch_Handler
Abort_Addr: DCD Abort_Handler
FIQ_Addr: DCD FIQ_Handler
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.04304 секунд с 7
ELECTRONIX ©2004-2016