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

 
 
 
Reply to this topicStart new topic
> Вектора прерываний в области загрузчика
IEC
сообщение Jul 23 2005, 07:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Прошу прощения за вопрос, но чего-то я не понимаю!
Пытаюсь на Mega128 переместить векторы прерываний в область загрузчика,
но никак не получается.
Есть программа, которая работает с прерываниями таймера, которые расположены в нормальном месте tongue.gif
Установка в регистре MCUCR битов IVCE IVSEL в требуемом порядке ни к чему не приводит cranky.gif
Т.Е. преывания как обрабатывались, так и обрабатываются!
По логике.камень должен был улететь. Или я не прав?
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jul 23 2005, 08:18
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



а прога в прерывании работает или нет, я к тому что улетать он не улетает потомучто там может стоять команда RETI так многие компиеры далают.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jul 23 2005, 09:18
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



По HEX-файлу нет там ничего. Да и прерывание обрабатывается правильно!
Значит попадает на старый вектор.
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Jul 25 2005, 08:17
Сообщение #4


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(IEC @ Jul 23 2005, 10:34)
Прошу прощения за вопрос, но чего-то я не понимаю!
Пытаюсь на Mega128  переместить векторы прерываний в область загрузчика,
но никак не получается.
Есть программа, которая работает с прерываниями таймера, которые расположены в нормальном месте  tongue.gif 
Установка в регистре MCUCR битов IVCE IVSEL в требуемом порядке ни к чему не приводит cranky.gif
Т.Е. преывания как обрабатывались, так и обрабатываются!
По логике.камень должен был улететь. Или я не прав?
*


Вопрос - а разве вектора прерываний должны работать в области загрузчика? Может, меня клинит, но по-моему, их там нет, только BootReset вектор.
Go to the top of the page
 
+Quote Post
AlexOr
сообщение Jul 25 2005, 09:45
Сообщение #5


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

Группа: Свой
Сообщений: 89
Регистрация: 30-12-04
Из: Санкт-Петербург
Пользователь №: 1 754



Olegovich
Меня клинит аналогично.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jul 25 2005, 12:49
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



УПС sad.gif
Тогда вопрос, а зачем нужны славные флаги IVCE IVSEL в регистре MCUCR?
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 1 2005, 10:06
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Да ГОСПОДА!
Результат весьма и весьма интересен!!!
1. Народ не любит работать с прерываниями
2. Народ не хочет иметь дело с загрузчиками.
3. 1 и 2 совместно.

Как факт загрузчик я написал, но получилось криво.
Считаю, что обработка УАПП без прерываний - это плохо!!!

Если ответов нет, значит загрузчики пишут без обработки прерываний - это хреновато!!!
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Aug 1 2005, 11:45
Сообщение #8


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(IEC @ Aug 1 2005, 13:06)
Да ГОСПОДА!
Результат весьма и весьма интересен!!!
1. Народ не любит работать с прерываниями
2. Народ не хочет иметь дело с загрузчиками.
3. 1 и 2 совместно.

Как факт загрузчик я написал, но получилось криво.
Считаю, что обработка УАПП без прерываний - это плохо!!!

Если ответов нет, значит загрузчики пишут без обработки прерываний - это хреновато!!!
*


Лично я обожаю работать с прерываниями, когда писал на асме, иногда вообще основного тела программы не было... :-)
Но в загрузчике вполне можно обойтись без прерываний... И в нашей фирме загрузчики очень активно используются. Без прерываний.

2IEC:
Кстати, а что всё-таки с этим самым прерыванием, у него есть вектор в области загрузчика и только у этого прерывания есть вектор? Вы выяснили?
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 1 2005, 13:22
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



С прерываниями я не разобрался. Оставил проблему на потом!
А без прерываний написать можно, что и было сделано.
Просто я подумал, может кто-нибудь уже с этим сталкивался и все заработало.
Приятно осозновать, что у кого-то уже работает!
Go to the top of the page
 
+Quote Post
DiaS
сообщение Aug 2 2005, 05:47
Сообщение #10





Группа: Новичок
Сообщений: 4
Регистрация: 1-08-05
Пользователь №: 7 263



А конфигурационные биты кристала BootRST шевелили?
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 3 2005, 07:56
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Устанавливал!!
Есть мысль:
пишу программу на IAR, весь программный код заношу начиная с адреса 0f000h (кончигурация области загрузчика на 4кБ), записываю в м128 и считываю - программный код начинается с этого же адреса, но памяти в нем 1ffffh!!! Как я понимаю, что должен находиться в верхней области флеша. Тогда я установил адрес начала загрузчика на 1f000h. Все работает, кроме векторов прерываний. Сейчас уже возникла мысль: наверное неверно установл адрес начала загрузчика. По сбросу вектор прерывания передается верно, а потом пошагово доходит до моей программы и она начинает выполнение.
По этому поводу вопрос: Какой адрес начала загрузчика надо было поставить?
Если из всего объема флеша вычесть 4кБ, тогда получается адрес должен быть 1efffh! Почему-то не совпадает с описанием на камень.
Go to the top of the page
 
+Quote Post
IEC
сообщение Aug 4 2005, 08:36
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



"Докладаю: чуть заря, Федя отбыл за моря..." (классика)

Уф! Я его сделал (во всех смыслах)!
Результаты следующие(может кому будут интересны):
1. Все адреса в описании даются в кило-словах, а не кило-байтах. Соответственно надо загрузчик располагать с адреса *2. В моем случае 0F000h*2=1E000h!!!
2. Для тех кого клинит (см. выше) сообщаю, что перенос векторов обработки прерываний в область загрузчика есть (они не могут ни есть)! Для этого мне пришлось не идти по пути, предложенному разработчиками, а написать немного иначе:
MCUCR=0x01;
MCUCR=0x02;
3. Для того, чтобы запись флеша производилась в нижнюю область памяти пришлось принудительно установить флаг работы с ней (почему-то по умолчанию не захотел):
RAMPZ=0x00

Если результаты моих изысканий кому-нибудь помогут - очень рад!
Кто все это значет - жаль, что не помогли раньше! Время борого!!!
Go to the top of the page
 
+Quote Post
skopus
сообщение Jan 31 2006, 10:45
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



Цитата(IEC @ Aug 4 2005, 11:36) *
1. Все адреса в описании даются в кило-словах, а не кило-байтах. Соответственно надо загрузчик располагать с адреса *2. В моем случае 0F000h*2=1E000h!!!


очень ценное наблюдение! Всю голову сломал - пытался понять почему векторы прерываний из даташита меги128 не совпадают с векторами, которые генерит IAR MakeApp
Go to the top of the page
 
+Quote Post

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

 


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


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