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

 
 
> Ремап, вектора прерываний...
алексей500
сообщение May 30 2010, 15:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 22-05-10
Пользователь №: 57 445



Здравствуйте.

Работаю с контроллером AT91SAM7A3. Объясните, пожалуйста, некоторые вещи. По ходу выполнения стартапа вектора прерывания должны копироваться в RAM, потом происходит ремап. Вот в общем код этот:


CODE
; Copy Exception Vectors to Internal RAM

IF :DEF:RAM_INTVEC
ADR R8, Vectors ; Source
LDR R9, =RAM_BASE ; Destination
LDMIA R8!, {R0-R7} ; Load Vectors
STMIA R9!, {R0-R7} ; Store Vectors
LDMIA R8!, {R0-R7} ; Load Handler Addresses
STMIA R9!, {R0-R7} ; Store Handler Addresses
ENDIF


; Remap on-chip RAM to address 0

MC_BASE EQU 0xFFFFFF00 ; MC Base Address
MC_RCR EQU 0x00 ; MC_RCR Offset

IF :DEF:REMAP
LDR R0, =MC_BASE
MOV R1, #1
STR R1, [R0, #MC_RCR] ; Remap
ENDIF




Так вот. Почему-то этот код пропускается у меня. И в окне дизассемблера вообще нет соответствующих команд. Ну то есть когда тыкаю на команду, то в дизассемблере он никуда не переходит. Смотрю что лежит в RAM, там что-то изменилось, но в основном нули, а должны же быть значения такие же как и во FLASH(ну собственно вектора прерываний)? А вообще, зачем вектора копировать в RAM? До копирования же обработчик RESET лежит во FLASH насколько я понимаю. Вот и пусть лежит там и выполняется оттуда.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
алексей500
сообщение May 30 2010, 17:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 22-05-10
Пользователь №: 57 445



Спасибо, что отреагировали.
В коде этого нет

#define RAM_INTVEC


Но нашёл тут, что в Options for Target на вкладке ASM нужно описать RAM_INTVEC и REMAP. Там просто их в 1 устанавливают насколько я понял. Запустил, вроде всё нормально, вектора копируются в RAM и ремап делается, а потом, при выполнении main() затирается это всё(в основном нулямиsmile.gif). Что-то тут неладноеsmile.gif. Эти стартапы все в стандартных примерах к keil. И там они не определяют в вот RAM_INTVEC и REMAP во вкладке ASM.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 30 2010, 21:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(алексей500 @ May 30 2010, 21:37) *
Что-то тут неладноеsmile.gif

Линкер просто ничего о ремапе не знает, нужно модифицировать скрипт. А можно просто забыть о ремапе как таковом - для SAM7 он большого смысла в общем-то и не имеет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- алексей500   Ремап, вектора прерываний...   May 30 2010, 15:48
- - toweroff   А где-то есть что-то типа ? Код#define RAM_INTVEC ...   May 30 2010, 16:48
- - алексей500   Не, чего-то голова уже кипит. Не пойму почему посл...   May 30 2010, 20:54
- - алексей500   Если в скаттере чуток сдвинуть начало IRAM, то всё...   May 30 2010, 22:42
|- - aaarrr   Цитата(алексей500 @ May 31 2010, 02:42) Э...   May 30 2010, 22:52
- - Nikitoc   Чтобы не плодить похожих тем решил спросить здесь....   Jul 7 2010, 11:48
|- - Сергей Борщ   Цитата(Nikitoc @ Jul 7 2010, 14:48) (то ч...   Jul 7 2010, 11:52
|- - Nikitoc   Цитата(Сергей Борщ @ Jul 7 2010, 14:52) Ч...   Jul 7 2010, 11:56
|- - aaarrr   Цитата(Nikitoc @ Jul 7 2010, 15:56) И как...   Jul 7 2010, 12:33
|- - Nikitoc   Цитата(aaarrr @ Jul 7 2010, 15:33) Без не...   Jul 7 2010, 12:51
|- - Сергей Борщ   Цитата(Nikitoc @ Jul 7 2010, 15:51) А ког...   Jul 7 2010, 13:13
- - Nikitoc   Спасибо. Буду переваривать. Правда, не уверен, что...   Jul 7 2010, 13:33


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

 


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


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