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

 
 
> Расположение векторов прерываний, обработка прерываний, Само - программирование МК и прерывания
Alex ma
сообщение Jul 19 2007, 18:23
Сообщение #1


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

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Вектора прерываний можно разместить как в области загрузчика, так и в начале памяти программ.
Есть программа загрузчик, есть основная программа, та и другая использует прерывания.
Но подпрограммы обслуживания прерывания разные для загрузчика своя для основной программы своя.

Так как таблица прерываний одна, а подпрограмм обработки прерываний две – одна относится к загрузчику, вторая к основной программе. Как это реализовать. И вообще если программа загрузчика и основная программа – разные программы и компилируются по разному, как быть с прерываниями непонятно, ведь таблицы прерываний будут определены два раза, а в памяти можно хранить только одну таблицу прерываний.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bodja74
сообщение Jul 20 2007, 10:05
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Прерывания полезно для ускорения процесса программирования,тоесть пока мы принимаем следующую страницу в это время загружаем и программируем предыдущую,
хотя можно и по другому ,принять данные прочитать с флеши туже страницу и сравнить ,если одинаковые едем дальше .Можно оба способа совместить - по ходу принимаем и сразу сравниваем.
Короче тут уже зависит уже от желания и задач.
Если охота с прерваниями ,нужно шаманить с переносом таблицы и запрещать прервания в нужных местах.

Выход ,если не дождались байта - это не проблема ,можно на стороне бута в цикле ожидания или по прерванию ,можно на стороне проги ПК, ждать пару сек ,если не пришло подтверждение приема или записи страницы (блока) данных ,ресетим МК соответственно опять входим в бутлоадер.Хотя вообще при нормально отлаженном бутлоадере и программе таких вещей не происходит.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jul 23 2007, 13:43
Сообщение #3


Местный
***

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



Цитата(bodja74 @ Jul 20 2007, 13:05) *
Прерывания полезно для ускорения процесса программирования,тоесть пока мы принимаем следующую страницу в это время загружаем и программируем предыдущую,...


Круто! Насколько я помню в режиме программирования FLASH-страницы должен быть запрещен WDT.
Это вероятно говорит о том, что процессор временно подвисает. Думаю, что во время программирования страницы ничего работать не будет вообще.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 23 2007, 15:49
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(IEC @ Jul 23 2007, 16:43) *
Круто! Насколько я помню в режиме программирования FLASH-страницы должен быть запрещен WDT.

Собственно WDT в бутлоадере особо делать нечего,хотя о вкусах не спорят.
Запрещать действительно прерывания нужно с момента записи в SPMCR и пока не будет выполнена SPM ,это касается всех прерываний.
Цитата
Это вероятно говорит о том, что процессор временно подвисает. Думаю, что во время программирования страницы ничего работать не будет вообще.

В таком случае ,зачем тогда флаг SPMEN нужен ?И прерывание готовности SPM ,если в это время все равно ничего не выполняется? smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 23 2007, 21:26
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(bodja74 @ Jul 23 2007, 18:49) *
Собственно WDT в бутлоадере особо делать нечего,хотя о вкусах не спорят.

Все верно, но если мы попали в бутлоадер с включенным WDT из основной программы по ошибке/или не по ошибке. Или напр, с установленным фузом WDTON..
WDT надо учитывать в бутлоадере.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 24 2007, 11:19
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(defunct @ Jul 24 2007, 00:26) *
Все верно, но если мы попали в бутлоадер с включенным WDT из основной программы по ошибке/или не по ошибке. Или напр, с установленным фузом WDTON..
WDT надо учитывать в бутлоадере.


Из основной программы можно влететь и с включенными другими прерваниями ,переключить таблицу,и потом долго думать - шо за фигня творитьсяsmile.gif
А если не перенесем и начнем писать - вообще уйдем в аут.
Можно наставить не только WDTON но и BLB12,11,02,01 (они доступны и программно smile.gif ) и долго догадываться почему у нас не читается\пишется и прерывания не выполняются.
Много чего можно наделать ,лиш бы желание было. smile.gif


Цитата
Безоговорочно согласен!
Когда я писАл самый первый бутлоадер, то только с включеным WDT смог выловить неприятный, редко возможный, косяк.


Я даже не сомневаюсь в том ,что для Вас использование WDT - это самый лучший способ отладки контроллеров.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 24 2007, 20:25
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(bodja74 @ Jul 24 2007, 14:19) *
Из основной программы можно влететь и с включенными другими прерваниями ,переключить таблицу,и потом долго думать - шо за фигня творитьсяsmile.gifА если не перенесем и начнем писать - вообще уйдем в аут.

От этого есть лекарство - сразу при входе в бутлоадер запретить прерывания и переместить таблицу векторов в область бутлоадера, а в ней разместить заглушки "Reti" на все неиспользуемые прерывания...
Но это лекарство не всегда получается применить. Бывает банально нехватает пары десятков байт, и тогда в неиспользуемых векторах размещается код. В таких случаях на помощь приходит WDT. При входе в бутлоадер первым делом запрещаем все прерывания, провереям причину сброса (MCUSR) - если причина сброса не "WDR" то и ждем ~2cек (макс таймаут WDT) чтобы получить гарантированный сброс по WDT. После этого сброса мы опять в секции бутлоадера, но уже с отключенными всеми прерываниями и с причиной сброса в MCUSR - "WDR". И работаем в штатном режиме.

Цитата
Можно наставить не только WDTON но и BLB12,11,02,01 (они доступны и программно smile.gif ) и долго догадываться почему у нас не читается\пишется и прерывания не выполняются.

Ну уж wink.gif
Биты защиты IMHO не надо приплетать сюда.
Если они зашиты, то стало быть так надо - кристал перешивать нельзя.

Цитата
Много чего можно наделать ,лиш бы желание было. smile.gif
Бутлоадер нужно делать с особой тщательностью чтобы не было проколов в алгориме. Т.к. эти проколы (не учтенные прерывания, WDT и т.п.) могут привести к плачевным ситуациям - как например перетирание флеша бутлоадером "в поле" без видимых на то причин, в результате отказ, авария убытки.....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex ma   Расположение векторов прерываний, обработка прерываний   Jul 19 2007, 18:23
- - bodja74   Делается очень просто , вспоминаете молодость ,ког...   Jul 19 2007, 20:11
|- - KRS   Цитата(bodja74 @ Jul 20 2007, 00:11) дела...   Jul 19 2007, 20:47
|- - defunct   Цитата(KRS @ Jul 19 2007, 23:47) +1. IMHO...   Jul 19 2007, 20:49
- - defunct   Цитата(Alex ma @ Jul 19 2007, 21:23) Так ...   Jul 19 2007, 20:46
- - _Алекс   При заливке программы нужно как то реализовать тай...   Jul 20 2007, 03:43
|- - Сергей Борщ   Цитата(IEC @ Jul 23 2007, 16:43) Круто...   Jul 23 2007, 14:48
|- - IEC   Цитата(defunct @ Jul 24 2007, 00:26) Или ...   Jul 24 2007, 07:54
- - Igor26   Цитатанужно шаманить с переносом таблицы "Ша...   Jul 20 2007, 10:40
- - Igor26   ЦитатаWDT надо учитывать в бутлоадере Безоговорочн...   Jul 24 2007, 04:53
- - Igor26   Цитатаего действие можно запретить програмно? Наоб...   Jul 24 2007, 08:24
- - Igor26   Цитатаэто самый лучший способ отладки контроллеров...   Jul 24 2007, 11:40
- - bodja74   Дело не в этом Если Вы хотите что бы Ваше мнение...   Jul 24 2007, 18:27
- - bodja74   Ну допустим я сторонник входа в бутлоадер по ресет...   Jul 25 2007, 17:02
|- - defunct   Цитата(bodja74 @ Jul 25 2007, 20:02) Ну д...   Jul 26 2007, 11:09
- - Igor26   Цитатачесно сказать мне мало понятно зачем ей вооб...   Jul 26 2007, 07:34
|- - bodja74   Цитата(Igor26 @ Jul 26 2007, 10:34) Убеди...   Jul 26 2007, 19:19
|- - defunct   Цитата(bodja74 @ Jul 26 2007, 22:19) Глюк...   Jul 26 2007, 20:26
|- - bodja74   Цитата(defunct @ Jul 26 2007, 23:26) Очен...   Jul 29 2007, 09:47
- - Igor26   РАЗ. Попадаем в Лоадер, ДВА-глядим, а какая ...   Jul 26 2007, 13:25
- - _artem_   А через вотчдог можно есше скопировать стек и реги...   Jul 26 2007, 13:45
|- - Igor26   Цитата(_artem_ @ Jul 26 2007, 17:45) А че...   Jul 26 2007, 13:49
- - Igor26   ЦитатаЯ уже не говорю ,что можно просто накосячить...   Jul 27 2007, 10:23


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

 


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


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