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

 
 
> Не срабатывает Reset
Vas&Lis
сообщение Sep 13 2011, 19:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 13-10-08
Пользователь №: 40 925



Вопрос в следующем...написал некий загрузчик и выделил для него память в первых 10кБ (с 0х3100 по 0х5900), в этой области разместил вектора прерываний: резет и т.д....но при ресете контроллера почему то он обращается по старому адресу вектора прерывания т.е. 0xfffe, вопрос почему и каким образом сделать что бы он переходил по заданному мною адресу....файл xlс прилагаю...
Код
-Z(CODE)CSTART,ISR_CODE=3100-58BD

// ---------------------------------------------------------
// Constant data

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT=3100-58BD


// ---------------------------------------------------------
// All memory 0 - 0xFFFFF
// ---------------------------------------------------------

// ---------------------------------------------------------
// Code

-P(CODE)CODE=3100-58BD

// ---------------------------------------------------------
// Constant data

-Z(CONST)DATA20_C,DATA20_ID=3100-58BD


// ---------------------------------------------------------
// Interrupt vectors
// ---------------------------------------------------------

-Z(CODE)INTVEC=58C0-58FF
-Z(CODE)RESET=58FE-58FF
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jorikdima
сообщение Sep 14 2011, 05:31
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Ну как бы в 5 серии можно перенести вектора прерываний в ОЗУ, там где-то спец бит для этого есть (я даже пользовался для своего самописного бутлодыря), но это только до ресета. После ресета бит сбрасывается и вектор опять жестко на 0xfffe Линкерным файлом вы не уговорите его быть в другом месте.
Я когда тренировался в реализации загрузчика опирался на две темы в этом форуме. Поищите их, (сейчас время нет, на работу пора) там как раз про перенос векторов в ОЗУ и пр. рассказывается.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 14 2011, 12:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(jorikdima @ Sep 14 2011, 10:31) *
Ну как бы в 5 серии можно перенести вектора прерываний в ОЗУ, там где-то спец бит для этого есть (я даже пользовался для своего самописного бутлодыря), но это только до ресета. После ресета бит сбрасывается и вектор опять жестко на 0xfffe Линкерным файлом вы не уговорите его быть в другом месте.
Да, в серии 5xx есть возможность ремапить область памяти векторов прерываний в ОЗУ. Но опять же в фиксированное место ОЗУ, а не в произвольное.
Цитата
1.3.6.1 Alternate Interrupt Vectors
It is possible to use the RAM as an alternate location for the interrupt vector locations. Setting the
SYSRIVECT bit in SYSCTL causes the interrupt vectors to be remapped to the top of RAM. Once set, any
interrupt vectors to the alternate locations now residing in RAM. Because SYSRIVECT is automatically
cleared on a BOR, it is critical that the reset vector at location 0FFFEh still be available and handled
properly in firmware.

Цитата(jorikdima @ Sep 14 2011, 10:31) *
Я когда тренировался в реализации загрузчика опирался на две темы в этом форуме. Поищите их, (сейчас время нет, на работу пора) там как раз про перенос векторов в ОЗУ и пр. рассказывается.
Не вводите в заблуждение. Вектор прерывания это адрес, содержимое памяти которого которого загружается в PC при обработке прерывания. Так вот адрес этот фиксирован. Менять можно только его содержимое. Содержимое вектора прерывания может указывать на область ОЗУ, это да. Но сам вектор при этом не переносится (исключая возможность ремапа в серии 5xx).
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 14 2011, 14:08
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(rezident @ Sep 14 2011, 16:40) *
Не вводите в заблуждение. Вектор прерывания это адрес, содержимое памяти которого которого загружается в PC при обработке прерывания. Так вот адрес этот фиксирован. Менять можно только его содержимое. Содержимое вектора прерывания может указывать на область ОЗУ, это да. Но сам вектор при этом не переносится (исключая возможность ремапа в серии 5xx).

Я именно про 5 серию и веду речь.
Вот на эти темы опирался. На первую в основном.
http://electronix.ru/forum/index.php?showt...p;hl=bootloader
http://electronix.ru/forum/index.php?showt...p;hl=bootloader
Go to the top of the page
 
+Quote Post



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

 


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


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